USP_MERGETASK_CONSTITUENTALTERNATELOOKUPIDS

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_CONSTITUENTALTERNATELOOKUPIDS
                (
                    @SOURCEID uniqueidentifier,
                    @TARGETID uniqueidentifier,
                    @CHANGEAGENTID uniqueidentifier,
                    @PRESERVECRITERIA int = 0
                )
                as
                    set nocount on;

                    declare @CURRENTDATE datetime;
                    set @CURRENTDATE = getdate();

                    if @PRESERVECRITERIA = 0
                        /* Move the source's alternate lookup IDs to the target unless the target already has a lookup ID of that type. */
                        update 
                            dbo.ALTERNATELOOKUPID
                        set 
                            ALTERNATELOOKUPID.CONSTITUENTID = @TARGETID
                            ALTERNATELOOKUPID.CHANGEDBYID = @CHANGEAGENTID,
                            ALTERNATELOOKUPID.DATECHANGED = @CURRENTDATE
                        where 
                            ALTERNATELOOKUPID.CONSTITUENTID = @SOURCEID and 
                            ALTERNATELOOKUPID.ALTERNATELOOKUPIDTYPECODEID not in
                            (
                                select 
                                    TARGETLOOKUPIDS.ALTERNATELOOKUPIDTYPECODEID
                                from 
                                    dbo.ALTERNATELOOKUPID as TARGETLOOKUPIDS
                                where 
                                    TARGETLOOKUPIDS.CONSTITUENTID = @TARGETID
                            );
                    else if @PRESERVECRITERIA = 1
                    begin
                        /* Delete the target's alternate lookup IDs where the target and source have alternate lookup IDs of the same type */
                        delete 
                            from dbo.ALTERNATELOOKUPID
                        where 
                            ALTERNATELOOKUPID.CONSTITUENTID = @TARGETID and
                            ALTERNATELOOKUPID.ALTERNATELOOKUPIDTYPECODEID in
                            (
                                select 
                                    SOURCELOOKUPIDS.ALTERNATELOOKUPIDTYPECODEID
                                from 
                                    dbo.ALTERNATELOOKUPID as SOURCELOOKUPIDS
                                where 
                                    SOURCELOOKUPIDS.CONSTITUENTID = @SOURCEID
                            );

                        /* Then move all of the source's alternate lookup IDs to the target */
                        update 
                            dbo.ALTERNATELOOKUPID
                        set 
                            ALTERNATELOOKUPID.CONSTITUENTID = @TARGETID
                            ALTERNATELOOKUPID.CHANGEDBYID = @CHANGEAGENTID,
                            ALTERNATELOOKUPID.DATECHANGED = @CURRENTDATE
                        where 
                            ALTERNATELOOKUPID.CONSTITUENTID = @SOURCEID;
                    end
                    else
                        update 
                            dbo.ALTERNATELOOKUPID
                        set 
                            ALTERNATELOOKUPID.CONSTITUENTID = @TARGETID
                            ALTERNATELOOKUPID.CHANGEDBYID = @CHANGEAGENTID,
                            ALTERNATELOOKUPID.DATECHANGED = @CURRENTDATE
                        where 
                            ALTERNATELOOKUPID.CONSTITUENTID = @SOURCEID;

                    return 0;