USP_DATAFORMTEMPLATE_ADD_RESEARCHGROUPASSIGNPROSPECTMANAGER
Parameters
Parameter | Parameter Type | Mode | Description |
---|---|---|---|
@ID | uniqueidentifier | INOUT | |
@CHANGEAGENTID | uniqueidentifier | IN | |
@PROSPECTMANAGERFUNDRAISERID | uniqueidentifier | IN | |
@OVERWRITEEXISTINGPROSPECTMANAGER | bit | IN | |
@PREVIOUSMANAGERENDDATE | date | IN | |
@NEWMANAGERSTARTDATE | date | IN | |
@RESEARCHGROUPMEMBERS | xml | IN |
Definition
Copy
CREATE procedure dbo.USP_DATAFORMTEMPLATE_ADD_RESEARCHGROUPASSIGNPROSPECTMANAGER
(
@ID uniqueidentifier = null output,
@CHANGEAGENTID uniqueidentifier = null,
@PROSPECTMANAGERFUNDRAISERID uniqueidentifier = null,
@OVERWRITEEXISTINGPROSPECTMANAGER bit,
@PREVIOUSMANAGERENDDATE date = null,
@NEWMANAGERSTARTDATE date = null,
@RESEARCHGROUPMEMBERS xml = null
) as
set nocount on;
if @CHANGEAGENTID is null
exec dbo.USP_CHANGEAGENT_GETORCREATECHANGEAGENT @CHANGEAGENTID output;
declare @CURRENTDATE datetime;
set @CURRENTDATE = getdate();
--For Enterprise and Advanced Development product flags, update Prospect Manager History and Interactions
if exists(select top 1 1 from INSTALLEDPRODUCTLIST where ID in ('3117D2C8-7F46-42F2-ABEB-B654F2F63046','a84df439-5a75-4a3b-b3f5-b47035ddd3ff'))
begin
begin try
--JamesWill WI185347 2012-01-26 In order to make the constraints work out, we have to update the PROSPECT table
--before inserting into the PROSPECTMANAGERHISTORY table. In order to do this, we have to keep track of what the previous prospect
--managers looked like before we updated them with the new current values.
declare @CURRENTPROSPECTMANAGERS table
(
PROSPECTID uniqueidentifier,
CURRENTMANAGER uniqueidentifier,
MANAGERSTARTDATE datetime
);
if @OVERWRITEEXISTINGPROSPECTMANAGER = 1
begin
insert into @CURRENTPROSPECTMANAGERS
(
PROSPECTID,
CURRENTMANAGER,
MANAGERSTARTDATE
)
select
[PROSPECT].ID,
[PROSPECT].[PROSPECTMANAGERFUNDRAISERID],
[PROSPECT].[PROSPECTMANAGERSTARTDATE]
from dbo.[PROSPECT]
inner join dbo.UFN_RESEARCHGROUP_GETMEMBERS_FROMITEMLISTXML(@RESEARCHGROUPMEMBERS) as MEMBERS on MEMBERS.CONSTITUENTID = [PROSPECT].[ID]
where [PROSPECT].[PROSPECTMANAGERFUNDRAISERID] is not null;
update dbo.[PROSPECT]
set
[PROSPECTMANAGERFUNDRAISERID] = @PROSPECTMANAGERFUNDRAISERID,
[PROSPECTMANAGERSTARTDATE] = @NEWMANAGERSTARTDATE,
[PROSPECTMANAGERENDDATE] = null,
[CHANGEDBYID] = @CHANGEAGENTID,
[DATECHANGED] = @CURRENTDATE
from dbo.[PROSPECT] P
inner join dbo.UFN_RESEARCHGROUP_GETMEMBERS_FROMITEMLISTXML(@RESEARCHGROUPMEMBERS) as MEMBERS on MEMBERS.[CONSTITUENTID] = P.[ID];
end
else
begin
update dbo.[PROSPECT]
set
[PROSPECTMANAGERFUNDRAISERID] = @PROSPECTMANAGERFUNDRAISERID,
[PROSPECTMANAGERSTARTDATE] = @NEWMANAGERSTARTDATE,
[PROSPECTMANAGERENDDATE] = null,
[CHANGEDBYID] = @CHANGEAGENTID,
[DATECHANGED] = @CURRENTDATE
from dbo.[PROSPECT] P
inner join dbo.UFN_RESEARCHGROUP_GETMEMBERS_FROMITEMLISTXML(@RESEARCHGROUPMEMBERS) as MEMBERS on MEMBERS.[CONSTITUENTID] = P.[ID]
where P.[PROSPECTMANAGERFUNDRAISERID] is null;
end
insert into dbo.[PROSPECT]
(
[ID],
[PROSPECTMANAGERFUNDRAISERID],
[PROSPECTMANAGERSTARTDATE],
[ADDEDBYID],
[CHANGEDBYID],
[DATEADDED],
[DATECHANGED]
)
select
MEMBERS.[CONSTITUENTID],
@PROSPECTMANAGERFUNDRAISERID,
@NEWMANAGERSTARTDATE,
@CHANGEAGENTID,
@CHANGEAGENTID,
@CURRENTDATE,
@CURRENTDATE
from dbo.UFN_RESEARCHGROUP_GETMEMBERS_FROMITEMLISTXML(@RESEARCHGROUPMEMBERS) as MEMBERS
left join dbo.[PROSPECT] P on P.[ID] = MEMBERS.[CONSTITUENTID]
where P.[ID] is null;
if @OVERWRITEEXISTINGPROSPECTMANAGER = 1
begin
--JamesWill WI185347 2012-01-09 When overwriting existing prospect managers, update the prospect manager history with the change
insert into dbo.[PROSPECTMANAGERHISTORY]
(
[ID],
[PROSPECTID],
[FUNDRAISERID],
[DATEFROM],
[DATETO],
[DATEADDED],
[DATECHANGED],
[ADDEDBYID],
[CHANGEDBYID]
)
select
newid(),
[CURRENT].[PROSPECTID],
[CURRENT].[CURRENTMANAGER],
[CURRENT].[MANAGERSTARTDATE],
@PREVIOUSMANAGERENDDATE,
@CURRENTDATE,
@CURRENTDATE,
@CHANGEAGENTID,
@CHANGEAGENTID
from @CURRENTPROSPECTMANAGERS [CURRENT];
end
if @PROSPECTMANAGERFUNDRAISERID is not null
begin
insert into dbo.PROSPECTDATERANGE
(
CONSTITUENTID,
ADDEDBYID,
CHANGEDBYID,
DATEADDED,
DATECHANGED
)
select
MEMBERS.[CONSTITUENTID],
@CHANGEAGENTID,
@CHANGEAGENTID,
@CURRENTDATE,
@CURRENTDATE
from dbo.UFN_RESEARCHGROUP_GETMEMBERS_FROMITEMLISTXML(@RESEARCHGROUPMEMBERS) as MEMBERS
left join dbo.[PROSPECTDATERANGE] PDR on PDR.[CONSTITUENTID] = MEMBERS.[CONSTITUENTID]
where PDR.[ID] is null;
end
update dbo.[INTERACTION]
set
[FUNDRAISERID] = @PROSPECTMANAGERFUNDRAISERID,
[CHANGEDBYID] = @CHANGEAGENTID,
[DATECHANGED] = @CURRENTDATE
from dbo.[INTERACTION] I
inner join dbo.[PROSPECTPLAN] PP on PP.[ID] = I.[PROSPECTPLANID]
inner join dbo.[PROSPECT] P on P.[ID] = PP.[PROSPECTID]
inner join dbo.UFN_RESEARCHGROUP_GETMEMBERS_FROMITEMLISTXML(@RESEARCHGROUPMEMBERS) as MEMBERS on MEMBERS.[CONSTITUENTID] = P.[ID]
left outer join dbo.[PLANOUTLINESTEP] SI on SI.[ID] = I.[PLANOUTLINESTEPID]
where
I.[FUNDRAISERID] is null and
P.[PROSPECTMANAGERFUNDRAISERID] = @PROSPECTMANAGERFUNDRAISERID and
SI.[FUNDRAISERROLECODE] = 0;
end try
begin catch
exec dbo.USP_RAISE_ERROR
return 1
end catch
end
else
begin
if @OVERWRITEEXISTINGPROSPECTMANAGER = 1
begin
update dbo.[PROSPECT]
set
[PROSPECTMANAGERFUNDRAISERID] = @PROSPECTMANAGERFUNDRAISERID,
[CHANGEDBYID] = @CHANGEAGENTID,
[DATECHANGED] = @CURRENTDATE
from dbo.[PROSPECT] P
inner join dbo.UFN_RESEARCHGROUP_GETMEMBERS_FROMITEMLISTXML(@RESEARCHGROUPMEMBERS) as MEMBERS on MEMBERS.[CONSTITUENTID] = P.[ID];
end
else
begin
update dbo.[PROSPECT]
set
[PROSPECTMANAGERFUNDRAISERID] = @PROSPECTMANAGERFUNDRAISERID,
[CHANGEDBYID] = @CHANGEAGENTID,
[DATECHANGED] = @CURRENTDATE
from dbo.[PROSPECT] P
inner join dbo.UFN_RESEARCHGROUP_GETMEMBERS_FROMITEMLISTXML(@RESEARCHGROUPMEMBERS) as MEMBERS on MEMBERS.[CONSTITUENTID] = P.[ID]
where P.[PROSPECTMANAGERFUNDRAISERID] is null;
end
insert into dbo.[PROSPECT]
(
[ID],
[PROSPECTMANAGERFUNDRAISERID],
[ADDEDBYID],
[CHANGEDBYID],
[DATEADDED],
[DATECHANGED]
)
select
MEMBERS.[CONSTITUENTID],
@PROSPECTMANAGERFUNDRAISERID,
@CHANGEAGENTID,
@CHANGEAGENTID,
@CURRENTDATE,
@CURRENTDATE
from dbo.UFN_RESEARCHGROUP_GETMEMBERS_FROMITEMLISTXML(@RESEARCHGROUPMEMBERS) as MEMBERS
left join dbo.[PROSPECT] P on P.[ID] = MEMBERS.[CONSTITUENTID]
where P.[ID] is null;
if @PROSPECTMANAGERFUNDRAISERID is not null
begin
insert into dbo.PROSPECTDATERANGE
(
CONSTITUENTID,
ADDEDBYID,
CHANGEDBYID,
DATEADDED,
DATECHANGED
)
select
MEMBERS.[CONSTITUENTID],
@CHANGEAGENTID,
@CHANGEAGENTID,
@CURRENTDATE,
@CURRENTDATE
from dbo.UFN_RESEARCHGROUP_GETMEMBERS_FROMITEMLISTXML(@RESEARCHGROUPMEMBERS) as MEMBERS
left join dbo.[PROSPECTDATERANGE] PDR on PDR.[CONSTITUENTID] = MEMBERS.[CONSTITUENTID]
where PDR.[ID] is null;
end
end
select top 1 @ID = CONSTITUENTID
from UFN_RESEARCHGROUP_GETMEMBERS_FROMITEMLISTXML(@RESEARCHGROUPMEMBERS);
return 0;