USP_MERGETASK_CONSTITUENTNAMEFORMATS

Parameters

Parameter Parameter Type Mode Description
@SOURCEID uniqueidentifier IN
@TARGETID uniqueidentifier IN
@CHANGEAGENTID uniqueidentifier IN
@PRESERVECRITERIA int IN

Definition

Copy


                CREATE procedure dbo.USP_MERGETASK_CONSTITUENTNAMEFORMATS
                (
                    @SOURCEID uniqueidentifier,
                    @TARGETID uniqueidentifier,
                    @CHANGEAGENTID uniqueidentifier,
                    @PRESERVECRITERIA int = 0
                )
                as
                    set nocount on;

                    declare @CHANGEDATE datetime = getdate();

                    --Cache out primary addressee and salutation
                    declare @TARGETPRIMARYADDRESSEE uniqueidentifier;
                    declare @TARGETPRIMARYSALUTATION uniqueidentifier;
                    declare @NEWCONSTITID uniqueidentifier;

                    select @TARGETPRIMARYADDRESSEE = ID 
                    from dbo.NAMEFORMAT
                    where CONSTITUENTID = @SOURCEID and PRIMARYADDRESSEE = 1;

                    select @TARGETPRIMARYSALUTATION = ID 
                    from dbo.NAMEFORMAT
                    where CONSTITUENTID = @SOURCEID and PRIMARYSALUTATION = 1;

                    update dbo.NAMEFORMAT
                    set PRIMARYADDRESSEE = 0
                        PRIMARYSALUTATION = 0
                        CHANGEDBYID = @CHANGEAGENTID,
                        DATECHANGED = @CHANGEDATE
                    where CONSTITUENTID = @SOURCEID
                        and (PRIMARYADDRESSEE = 1
                            or PRIMARYSALUTATION = 1);

                    --Perform merge

                    if @PRESERVECRITERIA = 0
                        -- Move the source's name formats to the 
                        -- target unless the target already has
                        -- a name format of that type.
                        update dbo.NAMEFORMAT
                        set CONSTITUENTID = @TARGETID, CHANGEDBYID = @CHANGEAGENTID, DATECHANGED = @CHANGEDATE
                        where CONSTITUENTID = @SOURCEID
                        and ID not in
                        (
                            select b.ID
                            from dbo.NAMEFORMAT a
                            inner join dbo.NAMEFORMAT b
                            on a.NAMEFORMATTYPECODEID = b.NAMEFORMATTYPECODEID
                            where a.CONSTITUENTID = @TARGETID
                            and b.CONSTITUENTID = @SOURCEID
                        );
                    else
                    begin
                        -- Delete the target's name formats where the target
                        -- and source have name formats of the same type
                        delete from dbo.NAMEFORMAT
                        where ID in
                        (
                            select a.ID
                            from dbo.NAMEFORMAT a
                            inner join dbo.NAMEFORMAT b
                            on a.NAMEFORMATTYPECODEID = b.NAMEFORMATTYPECODEID
                            where a.CONSTITUENTID = @TARGETID
                            and b.CONSTITUENTID = @SOURCEID
                        );

                        -- Then move all of the source's name formats
                        -- to the target
                        update dbo.NAMEFORMAT
                        set CONSTITUENTID = @TARGETID, CHANGEDBYID = @CHANGEAGENTID, DATECHANGED = @CHANGEDATE
                        where CONSTITUENTID = @SOURCEID;
                    end

                    --check if we need to reset primary addressee
                    if @TARGETPRIMARYADDRESSEE is not null
                    begin
                        --see if name format moved
                        select @NEWCONSTITID = CONSTITUENTID 
                        from dbo.NAMEFORMAT
                        where ID = @TARGETPRIMARYADDRESSEE;

                        update dbo.NAMEFORMAT
                        set PRIMARYADDRESSEE = 1
                            CHANGEDBYID = @CHANGEAGENTID,
                            DATECHANGED = @CHANGEDATE
                        where ID = @TARGETPRIMARYADDRESSEE
                            and not exists 
                                    (select top 1 ID 
                                        from dbo.NAMEFORMAT
                                        where CONSTITUENTID = @NEWCONSTITID and PRIMARYADDRESSEE = 1)

                    end


                    --check if we need to reset primary salutation
                    if @TARGETPRIMARYSALUTATION is not null
                    begin
                        --see if name format moved
                        select @NEWCONSTITID = CONSTITUENTID 
                        from dbo.NAMEFORMAT
                        where ID = @TARGETPRIMARYSALUTATION;

                        update dbo.NAMEFORMAT
                        set PRIMARYSALUTATION = 1
                            CHANGEDBYID = @CHANGEAGENTID,
                            DATECHANGED = @CHANGEDATE
                        where ID = @TARGETPRIMARYSALUTATION
                            and not exists 
                                    (select top 1 ID 
                                        from dbo.NAMEFORMAT
                                        where CONSTITUENTID = @NEWCONSTITID and PRIMARYSALUTATION = 1)

                    end

                    return 0;