USP_DATAFORMTEMPLATE_ADD_BATCHPEOPLEFINDERBATCHCOMMIT

The save procedure used by the add dataform template "PeopleFinder Batch Row Commit Add Form".

Parameters

Parameter Parameter Type Mode Description
@ID uniqueidentifier INOUT The output parameter indicating the ID of the record added.
@VALIDATEONLY bit IN Validate only
@CHANGEAGENTID uniqueidentifier IN Input parameter indicating the ID of the change agent invoking the procedure.
@PEOPLEFINDERID uniqueidentifier IN PeopleFinder ID
@CONSTITUENTID uniqueidentifier IN Constituent
@OLDADDRESSID uniqueidentifier IN Old address
@NEWADDRESSBLOCK nvarchar(150) IN New address
@NEWCITY nvarchar(50) IN New city
@NEWPOSTCODE nvarchar(12) IN New zip
@OTHERLASTNAME nvarchar(100) IN Other last name
@NEWPHONENUMBER nvarchar(100) IN New phone number
@NEWADDRESSINFOSOURCE nvarchar(20) IN New address info source
@DECEASEDYEAR UDT_FUZZYDATE IN Year deceased
@CONFIDENCELEVEL smallint IN Confidence level
@SENDMAIL bit IN Send mail
@NEWSTATEID uniqueidentifier IN New state
@ISDECEASED bit IN Deceased

Definition

Copy


CREATE procedure dbo.USP_DATAFORMTEMPLATE_ADD_BATCHPEOPLEFINDERBATCHCOMMIT
(
    @ID uniqueidentifier = null output,
    @VALIDATEONLY bit = 0,
    @CHANGEAGENTID uniqueidentifier,
    @PEOPLEFINDERID uniqueidentifier,
    @CONSTITUENTID uniqueidentifier = null,
    @OLDADDRESSID uniqueidentifier = null,
    @NEWADDRESSBLOCK nvarchar(150) = null,
    @NEWCITY nvarchar(50) = null,
    @NEWPOSTCODE nvarchar(12) = null,
    @OTHERLASTNAME nvarchar(100) = null,
    @NEWPHONENUMBER nvarchar(100) = null,
    @NEWADDRESSINFOSOURCE nvarchar(20) = null,
    @DECEASEDYEAR dbo.UDT_FUZZYDATE = null,
    @CONFIDENCELEVEL smallint = null,
    @SENDMAIL bit = null,
    @NEWSTATEID uniqueidentifier = null,
    @ISDECEASED bit = null
    )
as
set nocount on;

declare @CURRENTDATE datetime;

if @CHANGEAGENTID is null
    exec dbo.USP_CHANGEAGENT_GETORCREATECHANGEAGENT @CHANGEAGENTID output;

set @CURRENTDATE = getdate();

update PEOPLEFINDER
set
    STEPCODE = 3
where
    ID = @PEOPLEFINDERID -- Set the step code to committed


begin try
    declare @INFOSOURCECODEID uniqueidentifier;
    declare @MINIMUMRANKCODE tinyint;
    declare @MARKASDECEASED bit;
    declare @UPDATELASTNAMECODE tinyint;
    declare @UPDATEPHONENUMBER bit;
    declare @PHONETYPECODEID uniqueidentifier;
    declare @ADDFORMERLASTNAMEASALIAS bit;
    declare @PEOPLEFINDERDESCRIPTION nvarchar(150);
    declare @MINIMUMRANKVALUE int;
    declare @DECEASEDSOURCECODEID uniqueidentifier;
    declare @CONSTITUENTNOTEID uniqueidentifier;
    declare @TEXTNOTE nvarchar(max);
    declare @NOTETYPECODEID uniqueidentifier;
    declare @NEWPHONEID uniqueidentifier;
    declare @OLDADDRESSISPRIMARY bit;
    declare @OLDADDRESSTYPECODE uniqueidentifier;
    declare @OLDADDRESSBLOCK nvarchar(150);
    declare @ADDRESSID uniqueidentifier;
    declare @COUNTRYID uniqueidentifier;
    declare @OLDADDRESSTYPECODEID uniqueidentifier;
    declare @NEWADDRESSINFOSOURCECODEID uniqueidentifier;
    declare @INFOSOURCECOMMENTS nvarchar(256);
    declare @ALIASTYPECODEID uniqueidentifier;
    declare @INDIVIDUALALIASID uniqueidentifier;
    declare @KEYNAME nvarchar(100);
    declare @FIRSTNAME nvarchar(50);
    declare @MIDDLENAME nvarchar(50);
    declare @TITLECODEID uniqueidentifier;
    declare @TITLE2CODEID uniqueidentifier;
    declare @SUFFIXCODEID uniqueidentifier;
    declare @SUFFIX2CODEID uniqueidentifier;
    declare @PRIMARYADDRESSCOUNT int;
    declare @MARKPHONEASPRIMARY bit;
    declare @PHONESCOUNT int = 0;
    declare @PHONEISPRIMARY bit = 0;
    declare @UPDATEADDRESS bit;
    declare @NEWADDRESSTYPECODEID uniqueidentifier;
    declare @MARKADDRESSASPRIMARY bit;

    select @INFOSOURCECODEID = PEOPLEFINDER.INFOSOURCECODEID,
        @MINIMUMRANKCODE = PEOPLEFINDER.MINIMUMRANKCODE,
        @MARKASDECEASED = PEOPLEFINDER.MARKASDECEASED,
        @UPDATELASTNAMECODE = PEOPLEFINDER.UPDATELASTNAMECODE,
        @UPDATEPHONENUMBER = PEOPLEFINDER.UPDATEPHONENUMBER,
        @PHONETYPECODEID = PEOPLEFINDER.PHONETYPECODEID,
        @ADDFORMERLASTNAMEASALIAS = PEOPLEFINDER.ADDFORMERLASTNAMEASALIAS,
        @PEOPLEFINDERDESCRIPTION = PEOPLEFINDER.DESCRIPTION,
        @MARKPHONEASPRIMARY = PEOPLEFINDER.MARKPHONEASPRIMARY,
        @UPDATEADDRESS = PEOPLEFINDER.UPDATEADDRESS,
        @OLDADDRESSTYPECODEID = PEOPLEFINDER.OLDADDRESSTYPECODEID,
        @NEWADDRESSTYPECODEID = PEOPLEFINDER.NEWADDRESSTYPECODEID,
        @NEWADDRESSINFOSOURCECODEID = PEOPLEFINDER.NEWADDRESSINFOSOURCECODEID,
        @MARKADDRESSASPRIMARY = PEOPLEFINDER.MARKADDRESSASPRIMARY
    from
        dbo.PEOPLEFINDER
    where
        PEOPLEFINDER.ID = @PEOPLEFINDERID;

    if @PEOPLEFINDERDESCRIPTION is null
    begin
        raiserror('BBERR_PEOPLEFINDERIDREQUIRED', 13, 1)
        return
    end

    --Set the minimum rank value to process

    if @MINIMUMRANKCODE = 0 set @MINIMUMRANKVALUE = 530
    else if @MINIMUMRANKCODE = 1 set @MINIMUMRANKVALUE = 454
    else if @MINIMUMRANKCODE = 2 set @MINIMUMRANKVALUE = 335
    else if @MINIMUMRANKCODE = 3 set @MINIMUMRANKVALUE = 0;

    if @OLDADDRESSID is null
    begin
        set @ID = newid()
    end
    else
    begin
        set @ID = @OLDADDRESSID
    end

    if @CONFIDENCELEVEL > @MINIMUMRANKVALUE  --Ensure confidence level meets minimum

    begin
        --Update deceased data

        if @ISDECEASED = 1 --Constituent is deceased

        begin
            if @MARKASDECEASED = 1 --User wants to update deceased data 

            begin
                select @DECEASEDSOURCECODEID = dbo.UFN_DECEASEDSOURCECODE_GETID('PeopleFinder')
                select @NOTETYPECODEID = dbo.UFN_CONSTITUENTNOTETYPECODE_GETID('PeopleFinder')

                if @DECEASEDSOURCECODEID is null --Check/add deceased source code

                begin
                    exec dbo.USP_DECEASEDSOURCECODE_CREATEENTRY
                        'PeopleFinder',
                        1,
                        null,
                        @CHANGEAGENTID,
                        @DECEASEDSOURCECODEID output;
                end

                if @NOTETYPECODEID is null --Check/add note type code

                begin
                    exec dbo.USP_CONSTITUENTNOTETYPECODE_CREATEENTRY
                        'PeopleFinder',
                        1,
                        null,
                        @CHANGEAGENTID,
                        @NOTETYPECODEID output;
                end

                set @TEXTNOTE = 'This constituent was marked deceased by PeopleFinder'

                if len(@DECEASEDYEAR) <> 8
                begin
                    set @DECEASEDYEAR = LEFT(@DECEASEDYEAR, 4) + '0000'
                end

                exec dbo.USP_DATAFORMTEMPLATE_EDIT_MARKINDIVIDUALDECEASED_2
                    @CONSTITUENTID,
                    @CHANGEAGENTID,
                    @DECEASEDYEAR,
                    0,
                    @DECEASEDSOURCECODEID

                exec dbo.USP_DATAFORMTEMPLATE_ADD_CONSTITUENTNOTE
                    @CONSTITUENTNOTEID output,
                    @CHANGEAGENTID,
                    @CURRENTDATE,
                    '',
                    null,
                    @TEXTNOTE,
                    @NOTETYPECODEID,
                    @CONSTITUENTID,
                    ''
            end
        end
        else -- Constituent is not deceased

        begin
            --Update last name

            if @UPDATELASTNAMECODE = 0 --User wants to add new last name as alias

            begin
                if LEN(@OTHERLASTNAME) > 0 --Other last name returned from DES

                begin
                    select @NOTETYPECODEID = dbo.UFN_CONSTITUENTNOTETYPECODE_GETID('PeopleFinder')

                    if @NOTETYPECODEID is null --Check/add note type code

                    begin
                        exec dbo.USP_CONSTITUENTNOTETYPECODE_CREATEENTRY
                            'PeopleFinder',
                            1,
                            null,
                            @CHANGEAGENTID,
                            @NOTETYPECODEID output;
                    end

                    set @TEXTNOTE = 'This constituent had an alias added by PeopleFinder';

                    exec dbo.USP_DATAFORMTEMPLATE_ADD_CONSTITUENTNOTE
                        @CONSTITUENTNOTEID output,
                        @CHANGEAGENTID,
                        @CURRENTDATE,
                        '',
                        null,
                        @TEXTNOTE,
                        @NOTETYPECODEID,
                        @CONSTITUENTID,
                        ''

                    select @ALIASTYPECODEID = dbo.UFN_ALIASTYPECODE_GETID('PeopleFinder')

                    if @ALIASTYPECODEID is null --Check/add alias type code

                    begin
                        exec dbo.USP_ALIASTYPECODE_CREATEENTRY
                            'PeopleFinder',
                            1,
                            null,
                            @CHANGEAGENTID,
                            @ALIASTYPECODEID output;
                    end

                    select
                        @FIRSTNAME = FIRSTNAME,
                        @MIDDLENAME = MIDDLENAME,
                        @TITLECODEID = TITLECODEID,
                        @TITLE2CODEID = TITLE2CODEID,
                        @SUFFIXCODEID = SUFFIXCODEID,
                        @SUFFIX2CODEID = SUFFIX2CODEID
                    from
                        CONSTITUENT
                    where
                        ID = @CONSTITUENTID

                    exec dbo.USP_DATAFORMTEMPLATE_ADD_INDIVIDUALALIAS
                        @INDIVIDUALALIASID output,
                        @CHANGEAGENTID,
                        @CONSTITUENTID,
                        @ALIASTYPECODEID,
                        @OTHERLASTNAME,
                        @FIRSTNAME,
                        @MIDDLENAME,
                        @TITLECODEID,
                        @TITLE2CODEID,
                        @SUFFIXCODEID,
                        @SUFFIX2CODEID
                end
            end
            else if @UPDATELASTNAMECODE = 1 --User wants to change current last name

            begin
                if LEN(@OTHERLASTNAME) > 0 --Other last name returned from DES

                begin
                    select @NOTETYPECODEID = dbo.UFN_CONSTITUENTNOTETYPECODE_GETID('PeopleFinder')

                    if @NOTETYPECODEID is null --Check/add note type code

                    begin
                        exec dbo.USP_CONSTITUENTNOTETYPECODE_CREATEENTRY
                            'PeopleFinder',
                            1,
                            null,
                            @CHANGEAGENTID,
                            @NOTETYPECODEID output;
                    end

                    set @TEXTNOTE = 'This constituent''s last name was updated by PeopleFinder';

                    exec dbo.USP_DATAFORMTEMPLATE_ADD_CONSTITUENTNOTE
                        @CONSTITUENTNOTEID output,
                        @CHANGEAGENTID,
                        @CURRENTDATE,
                        '',
                        null,
                        @TEXTNOTE,
                        @NOTETYPECODEID,
                        @CONSTITUENTID,
                        ''

                    if @ADDFORMERLASTNAMEASALIAS = 1 --User wants to add the former last name as an alias

                    begin
                        select @ALIASTYPECODEID = dbo.UFN_ALIASTYPECODE_GETID('PeopleFinder')

                        if @ALIASTYPECODEID is null --Check/add alias type code

                        begin
                            exec dbo.USP_ALIASTYPECODE_CREATEENTRY
                                'PeopleFinder',
                                1,
                                null,
                                @CHANGEAGENTID,
                                @ALIASTYPECODEID output;
                        end

                        select
                            @FIRSTNAME = FIRSTNAME,
                            @KEYNAME = KEYNAME,
                            @MIDDLENAME = MIDDLENAME,
                            @TITLECODEID = TITLECODEID,
                            @TITLE2CODEID = TITLE2CODEID,
                            @SUFFIXCODEID = SUFFIXCODEID,
                            @SUFFIX2CODEID = SUFFIX2CODEID
                        from
                            CONSTITUENT
                        where
                            ID = @CONSTITUENTID

                        exec dbo.USP_DATAFORMTEMPLATE_ADD_INDIVIDUALALIAS
                            @INDIVIDUALALIASID output,
                            @CHANGEAGENTID,
                            @CONSTITUENTID,
                            @ALIASTYPECODEID,
                            @KEYNAME,
                            @FIRSTNAME,
                            @MIDDLENAME,
                            @TITLECODEID,
                            @TITLE2CODEID,
                            @SUFFIXCODEID,
                            @SUFFIX2CODEID
                    end

                    update CONSTITUENT
                    set
                        KEYNAME = @OTHERLASTNAME
                    where
                        ID = @CONSTITUENTID
                end
            end

            --Add new phone number

            if @UPDATEPHONENUMBER = 1 --User wants to add phone number from DES

            begin
                if LEN(@NEWPHONENUMBER) > 0
                begin
                    select @NEWPHONEID = [ID]
                    from dbo.[PHONE]
                    where (
                            [NUMBERNOFORMAT] = @NEWPHONENUMBER
                            or [NUMBER] = @NEWPHONENUMBER
                            )
                        and [CONSTITUENTID] = @CONSTITUENTID;

                    select @PHONESCOUNT = count(1)
                    from dbo.[PHONE]
                    where [CONSTITUENTID] = @CONSTITUENTID;

                    if @MARKPHONEASPRIMARY = 1 or @PHONESCOUNT = 0
                        select @PHONEISPRIMARY = 1

                    if @NEWPHONEID is null -- Phone number does not already exist

                    begin
                        if @MARKPHONEASPRIMARY = 1
                        begin
                            update dbo.[PHONE]
                            set
                                [ISPRIMARY] = 0,
                                [DATECHANGED] = @CURRENTDATE,
                                [CHANGEDBYID] = @CHANGEAGENTID
                            where CONSTITUENTID = @CONSTITUENTID;
                        end

                        set @INFOSOURCECOMMENTS = 'Phone number added by PeopleFinder'

                        exec dbo.USP_DATAFORMTEMPLATE_ADD_PHONE
                            @NEWPHONEID output,
                            @CHANGEAGENTID,
                            @CONSTITUENTID,
                            @PHONETYPECODEID,
                            @NEWPHONENUMBER,
                            @PHONEISPRIMARY,
                            0,
                            0,
                            0,
                            '',
                            '',
                            @INFOSOURCECODEID,
                            @INFOSOURCECOMMENTS,
                            null,
                            null,
                            null,
                            0;
                    end
                end
            end

            --Add new address

            select
                @ADDRESSID = ID
            from
                ADDRESS
            where
                ADDRESSBLOCK = @NEWADDRESSBLOCK
                and CONSTITUENTID = @CONSTITUENTID;

            if @ADDRESSID is null and @UPDATEADDRESS = 1 --Address being added does not exist

            begin
                select @COUNTRYID = dbo.UFN_STATE_GETCOUNTRY(@NEWSTATEID, null)
                if @COUNTRYID is null
                begin
                    raiserror('BBERR_COUNTRYREQUIRED', 13, 1)
                    return
                end

                if @OLDADDRESSID is not null and @OLDADDRESSTYPECODEID is not null
                begin
                    update dbo.ADDRESS
                    set
                        ADDRESSTYPECODEID = @OLDADDRESSTYPECODEID,
                        CHANGEDBYID = @CHANGEAGENTID,
                        DATECHANGED = @CURRENTDATE
                    where
                        ID = @OLDADDRESSID;
                end

                set @PRIMARYADDRESSCOUNT = (select count(1) from dbo.ADDRESS where CONSTITUENTID = @CONSTITUENTID and ISPRIMARY = 1);
                declare @NEWADDRESSISPRIMARY bit = 0;
                if @PRIMARYADDRESSCOUNT = 0 or @MARKADDRESSASPRIMARY = 1
                begin
                    update dbo.ADDRESS
                    set
                        ISPRIMARY = 0,
                        CHANGEDBYID = @CHANGEAGENTID,
                        DATECHANGED = @CURRENTDATE
                    where
                        CONSTITUENTID = @CONSTITUENTID
                        and ISPRIMARY = 1;

                    set @NEWADDRESSISPRIMARY = 1;
                end

                set @ID = null;

                exec dbo.USP_DATAFORMTEMPLATE_ADD_ADDRESS_2
                    @ID output,
                    @CHANGEAGENTID,
                    @CONSTITUENTID,
                    @NEWADDRESSTYPECODEID,
                    @NEWADDRESSISPRIMARY,
                    0,
                    '0000',
                    '0000',
                    @COUNTRYID,
                    @NEWSTATEID,
                    @NEWADDRESSBLOCK,
                    @NEWCITY,
                    @NEWPOSTCODE,
                    null,
                    0,
                    @OLDADDRESSID,
                    '',
                    '',
                    '',
                    0,
                    null,
                    0,
                    null,
                    null,
                    null,
                    null,
                    null,
                    @NEWADDRESSINFOSOURCECODEID,
                    null,
                    null,
                    '',
                    0,
                    null,
                    '',
                    0
            end
            else if @ADDRESSID is null
            begin
                set @ID = '00000000-0000-0000-0000-000000000000';
            end
            else
            begin
                set @ID = @ADDRESSID
            end
        end
    end
end try

begin catch
    exec.dbo.USP_RAISE_ERROR;
    return 1;
end catch

return 0;