USP_MERGETASK_CONSTITUENTINTERACTION
Parameters
Parameter | Parameter Type | Mode | Description |
---|---|---|---|
@SOURCEID | uniqueidentifier | IN | |
@TARGETID | uniqueidentifier | IN | |
@CHANGEAGENTID | uniqueidentifier | IN | |
@DELETEDUPES | bit | IN |
Definition
Copy
CREATE procedure dbo.USP_MERGETASK_CONSTITUENTINTERACTION
(
@SOURCEID uniqueidentifier,
@TARGETID uniqueidentifier,
@CHANGEAGENTID uniqueidentifier,
@DELETEDUPES bit = 0
)
as
set nocount on;
declare @CHANGEDATE datetime = getdate();
if @DELETEDUPES = 0
update dbo.INTERACTION
set CONSTITUENTID = @TARGETID, CHANGEDBYID = @CHANGEAGENTID, DATECHANGED = @CHANGEDATE
where CONSTITUENTID = @SOURCEID and PROSPECTPLANID is null -- Do not update the interactions that are associated with prospect plan that will be handle in USP_MERGETASK_CONSTITUENTMAJORGIVING.
else
--Omit duplicate interaction records if the @DELETEDUPES
--flag is set
update dbo.INTERACTION
set CONSTITUENTID = @TARGETID, CHANGEDBYID = @CHANGEAGENTID, DATECHANGED = @CHANGEDATE
where CONSTITUENTID = @SOURCEID
and ID not in
(
select a.ID
from dbo.INTERACTION a
inner join dbo.INTERACTION b
on (a.INTERACTIONTYPECODEID = b.INTERACTIONTYPECODEID or (a.INTERACTIONTYPECODEID is null and b.INTERACTIONTYPECODEID is null))
and a.EXPECTEDDATE = b.EXPECTEDDATE
and (a.ACTUALDATE = b.ACTUALDATE or (a.ACTUALDATE is null and b.ACTUALDATE is null))
and (a.EVENTID = b.EVENTID or (a.EVENTID is null and b.EVENTID is null))
where a.CONSTITUENTID = @SOURCEID
and b.CONSTITUENTID = @TARGETID
)
update dbo.INTERACTION
set FUNDRAISERID = @TARGETID, CHANGEDBYID = @CHANGEAGENTID, DATECHANGED = @CHANGEDATE
where FUNDRAISERID = @SOURCEID
-- Change the AuthorID of any interaction
-- notes and media that were authored by the
-- source
update dbo.INTERACTIONNOTE
set AUTHORID = @TARGETID, CHANGEDBYID = @CHANGEAGENTID, DATECHANGED = @CHANGEDATE
where AUTHORID = @SOURCEID;
update dbo.INTERACTIONMEDIALINK
set AUTHORID = @TARGETID, CHANGEDBYID = @CHANGEAGENTID, DATECHANGED = @CHANGEDATE
where AUTHORID = @SOURCEID;
update dbo.INTERACTIONATTACHMENT
set AUTHORID = @TARGETID, CHANGEDBYID = @CHANGEAGENTID, DATECHANGED = @CHANGEDATE
where AUTHORID = @SOURCEID;
-- Change CONSTITUENTID on any additional participants
update dbo.INTERACTIONPARTICIPANT
set CONSTITUENTID = @TARGETID, CHANGEDBYID = @CHANGEAGENTID, DATECHANGED = @CHANGEDATE
where CONSTITUENTID = @SOURCEID
and ID not in
(
select a.ID
from dbo.INTERACTIONPARTICIPANT a
inner join dbo.INTERACTIONPARTICIPANT b
on a.INTERACTIONID = b.INTERACTIONID
where a.CONSTITUENTID = @SOURCEID
and b.CONSTITUENTID = @TARGETID
)
-- If the owner of the interaction is already target, don't add them as a participant
and not exists ( select 1
from dbo.INTERACTION I
where
I.ID = INTERACTIONPARTICIPANT.INTERACTIONID and
I.CONSTITUENTID = @TARGETID
);
declare @CONTEXTCACHE varbinary(128);
/* Cache current context information@ */
set @CONTEXTCACHE = CONTEXT_INFO();
/* Set CONTEXT_INFO to @CHANGEAGENTID */
set CONTEXT_INFO @CHANGEAGENTID;
-- If the source wasn't replace by the target, remove the source as a participant
delete from dbo.INTERACTIONPARTICIPANT
where CONSTITUENTID = @SOURCEID
/* Reset CONTEXT_INFO to previous value */
if not @contextCache is null
set CONTEXT_INFO @CONTEXTCACHE;
return 0;