USP_MERGETASK_CONSTITUENTTRIBUTE

Parameters

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

Definition

Copy


                CREATE procedure dbo.USP_MERGETASK_CONSTITUENTTRIBUTE
                (
                    @SOURCEID uniqueidentifier,
                    @TARGETID uniqueidentifier,
                    @CHANGEAGENTID uniqueidentifier
                )
                as
                    set nocount on;

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

                    -- For any tributes in which the source is the tributee, set the tributee to be the target

                    update 
                        dbo.TRIBUTE
                    set 
                        TRIBUTEEID = @TARGETID,
                        CHANGEDBYID = @CHANGEAGENTID,
                        DATECHANGED = @CURRENTDATE
                    where
                        TRIBUTEEID = @SOURCEID;

                    -- For any tributes in which the source is an acknowledgee, set the acknowledgee to the target as long as

                    -- this would not result in having duplicate rows with the same acknowledgee and tribute letter

                    update 
                        dbo.TRIBUTEACKNOWLEDGEE
                    set
                        CONSTITUENTID = @TARGETID,
                        CHANGEDBYID = @CHANGEAGENTID,
                        DATECHANGED = @CURRENTDATE
                    where
                        CONSTITUENTID = @SOURCEID
                        and ID not in 
                        (
                            select 
                                S.ID
                            from 
                                dbo.TRIBUTEACKNOWLEDGEE S
                            inner join
                                dbo.TRIBUTEACKNOWLEDGEE T 
                            on 
                                (S.TRIBUTELETTERCODEID = T.TRIBUTELETTERCODEID or (S.TRIBUTELETTERCODEID is null and T.TRIBUTELETTERCODEID is null))
                            and
                                S.TRIBUTEID = T.TRIBUTEID
                            where
                                S.CONSTITUENTID = @SOURCEID
                            and 
                                T.CONSTITUENTID = @TARGETID
                        );

                    -- For any revenue tribute letters in which the source is an acknowledgee, set the acknowledgee to the target as long as

                    -- this would not result in having duplicate rows with the same acknowledgee and tribute letter

                    update 
                        dbo.REVENUETRIBUTELETTER
                    set
                        CONSTITUENTID = @TARGETID,
                        CHANGEDBYID = @CHANGEAGENTID,
                        DATECHANGED = @CURRENTDATE
                    where
                        CONSTITUENTID = @SOURCEID
                        and ID not in 
                        (
                            select 
                                S.ID
                            from 
                                dbo.REVENUETRIBUTELETTER S
                            inner join
                                dbo.REVENUETRIBUTELETTER T
                            on 
                                S.TRIBUTELETTERCODEID = T.TRIBUTELETTERCODEID
                            and 
                                S.REVENUETRIBUTEID = T.REVENUETRIBUTEID
                            where
                                S.CONSTITUENTID = @SOURCEID
                            and 
                                T.CONSTITUENTID = @TARGETID
                        );

            /* Friends Asking Friends */
            update dbo.TRIBUTEEXTENSION set
              FROMCONSTITUENTID = @TARGETID,
                          CHANGEDBYID = @CHANGEAGENTID,
                          DATECHANGED = @CURRENTDATE
            where
              FROMCONSTITUENTID = @SOURCEID

                    return 0;