USP_PROSPECTASSIGNMENTREQUEST_ACCEPT
Executes the "Accept Prospect Assignment Request" record operation.
Parameters
Parameter | Parameter Type | Mode | Description |
---|---|---|---|
@ID | uniqueidentifier | IN | Input parameter indicating the ID of the record being updated. |
@CURRENTAPPUSERID | uniqueidentifier | IN | Input parameter indicating the ID of the current user. |
@CHANGEAGENTID | uniqueidentifier | IN | Input parameter indicating the ID of the change agent invoking the update. |
Definition
Copy
CREATE procedure dbo.USP_PROSPECTASSIGNMENTREQUEST_ACCEPT
(
@ID uniqueidentifier,
@CURRENTAPPUSERID uniqueidentifier,
@CHANGEAGENTID uniqueidentifier
)
as begin
if @CHANGEAGENTID is null
exec dbo.USP_CHANGEAGENT_GETORCREATECHANGEAGENT @CHANGEAGENTID output;
declare @CURRENTDATE datetime;
set @CURRENTDATE = dbo.UFN_DATE_GETEARLIESTTIME(getdate());
if exists(select 1 from dbo.PROSPECTPLANREQUEST where ID = @ID) -- Prospect Plan Request
begin
declare @PLANPROSPECTID uniqueidentifier;
declare @PROSPECTPLANTYPECODEID uniqueidentifier;
declare @NARRATIVE nvarchar(1000);
declare @PROSPECTPLAN_NAME nvarchar(100);
declare @PROSPECTPLAN_PARTICIPANTS xml;
declare @SECONDARYFUNDRAISERS xml;
declare @PRIMARYMANAGERFUNDRAISERID uniqueidentifier;
declare @SECONDARYMANAGERFUNDRAISERID uniqueidentifier;
declare @SITES xml;
declare @PRIMARYMANAGERDATEFROM datetime;
declare @SECONDARYMANAGERDATEFROM datetime;
select
@PLANPROSPECTID = PROSPECTID,
@PROSPECTPLANTYPECODEID = PROSPECTPLANTYPECODEID,
@NARRATIVE = NARRATIVE,
@PROSPECTPLAN_NAME = NAME,
@PROSPECTPLAN_PARTICIPANTS = PROSPECTPLAN_PARTICIPANTS,
@SECONDARYFUNDRAISERS = SECONDARYFUNDRAISERS,
@PRIMARYMANAGERFUNDRAISERID = PRIMARYMANAGERFUNDRAISERID,
@SECONDARYMANAGERFUNDRAISERID = SECONDARYMANAGERFUNDRAISERID,
@SITES = SITES,
@PRIMARYMANAGERDATEFROM = PRIMARYMANAGERSTARTDATE,
@SECONDARYMANAGERDATEFROM = SECONDARYMANAGERSTARTDATE
from dbo.PROSPECTPLANREQUEST
where ID = @ID
exec dbo.USP_DATAFORMTEMPLATE_PROSPECTPLAN_ADD
null,
@CHANGEAGENTID,
@PLANPROSPECTID,
@PROSPECTPLANTYPECODEID,
@NARRATIVE,
null,
@PROSPECTPLAN_NAME,
@PROSPECTPLAN_PARTICIPANTS,
@SECONDARYFUNDRAISERS,
@PRIMARYMANAGERFUNDRAISERID,
@SECONDARYMANAGERFUNDRAISERID,
@SITES,
@CURRENTAPPUSERID,
@PRIMARYMANAGERDATEFROM,
@SECONDARYMANAGERDATEFROM,
@CURRENTDATE;
update dbo.PROSPECTPLANREQUEST set
STATUSCODE = 1,
REVIEWDATE = @CURRENTDATE,
REVIEWEDBYID = @CURRENTAPPUSERID,
DATECHANGED = @CURRENTDATE,
CHANGEDBYID = @CHANGEAGENTID
where ID = @ID;
end
else -- Prospect Assignment Request
begin
declare @TYPECODE int;
declare @NEWFUNDRAISERID uniqueidentifier;
declare @PROSPECTID uniqueidentifier;
declare @PROSPECTPLANID uniqueidentifier;
declare @SECONDARYFUNDRAISERID uniqueidentifier;
declare @SOLICITORROLECODEID uniqueidentifier;
declare @STARTDATE datetime;
-- Get TYPE
select
@TYPECODE = TYPECODE,
@NEWFUNDRAISERID = NEWFUNDRAISERID,
@PROSPECTID = PROSPECTASSIGNMENTREQUESTPROSPECT.PROSPECTID,
@PROSPECTPLANID = PROSPECTASSIGNMENTREQUESTPROSPECTPLAN.PROSPECTPLANID,
@SECONDARYFUNDRAISERID = PROSPECTASSIGNMENTREQUESTPROSPECTPLAN.SECONDARYFUNDRAISERID,
@SOLICITORROLECODEID = PROSPECTASSIGNMENTREQUESTPROSPECTPLAN.SOLICITORROLECODEID,
@STARTDATE = coalesce(PROSPECTASSIGNMENTREQUEST.STARTDATE, getdate())
from
dbo.PROSPECTASSIGNMENTREQUEST
left outer join PROSPECTASSIGNMENTREQUESTPROSPECT on PROSPECTASSIGNMENTREQUESTPROSPECT.ID = PROSPECTASSIGNMENTREQUEST.ID
left outer join PROSPECTASSIGNMENTREQUESTPROSPECTPLAN on PROSPECTASSIGNMENTREQUESTPROSPECTPLAN.ID = PROSPECTASSIGNMENTREQUEST.ID
where
PROSPECTASSIGNMENTREQUEST.ID = @ID;
--Prospect manager
if @TYPECODE = 0 begin
declare @PREVIOUSFUNDRAISERID uniqueidentifier;
declare @PREVIOUSSTARTDATE datetime;
declare @PREVIOUSENDDATE datetime;
select
@PREVIOUSFUNDRAISERID = PROSPECTMANAGERFUNDRAISERID,
@PREVIOUSSTARTDATE = PROSPECTMANAGERSTARTDATE,
@PREVIOUSENDDATE = dbo.UFN_DATE_GETEARLIESTTIME(isnull(PROSPECTMANAGERENDDATE, dateadd(d, -1, @STARTDATE)))
from
dbo.PROSPECT
where
ID = @PROSPECTID;
if @PREVIOUSFUNDRAISERID is not null begin
--Clear out record to prevent constraint violations.
update dbo.PROSPECT set
PROSPECTMANAGERFUNDRAISERID = null,
PROSPECTMANAGERSTARTDATE = null,
PROSPECTMANAGERENDDATE = null,
DATECHANGED = @CURRENTDATE,
CHANGEDBYID = @CHANGEAGENTID
where
ID = @PROSPECTID
--Only add to the history if the fundraiser actually started in this capacity. If the start date is in the future then they never actually worked in this capacity and same record doesn't already exists.
if (coalesce(@PREVIOUSSTARTDATE,'01/01/1753') <= @CURRENTDATE
and not exists (select 1 from dbo.PROSPECTMANAGERHISTORY where PROSPECTID = @PROSPECTID and FUNDRAISERID = @PREVIOUSFUNDRAISERID and DATEFROM = @PREVIOUSSTARTDATE and DATETO = @PREVIOUSENDDATE))
begin
/*Create manager history record*/
insert into dbo.PROSPECTMANAGERHISTORY
(PROSPECTID, FUNDRAISERID, DATEFROM, DATETO, ADDEDBYID, CHANGEDBYID, DATEADDED, DATECHANGED)
values
(@PROSPECTID, @PREVIOUSFUNDRAISERID, @PREVIOUSSTARTDATE, @PREVIOUSENDDATE, @CHANGEAGENTID, @CHANGEAGENTID, @CURRENTDATE, @CURRENTDATE);
end
end
if @NEWFUNDRAISERID is not null
update dbo.PROSPECT set
PROSPECTMANAGERFUNDRAISERID = @NEWFUNDRAISERID,
PROSPECTMANAGERSTARTDATE = case when @NEWFUNDRAISERID is not null then @STARTDATE else null end,
PROSPECTMANAGERENDDATE = null,
DATECHANGED = @CURRENTDATE,
CHANGEDBYID = @CHANGEAGENTID
where
ID = @PROSPECTID;
exec dbo.USP_PROSPECTASSIGNEDALERT_SEND @PREVIOUSFUNDRAISERID, @PROSPECTID;
end
declare @PREVIOUSPRIMARYFUNDRAISERID uniqueidentifier;
declare @PREVIOUSSECONDARYFUNDRAISERID uniqueidentifier;
--Primary manager
if @TYPECODE = 2 begin
select
@PREVIOUSPRIMARYFUNDRAISERID = PRIMARYMANAGERFUNDRAISERID,
@PREVIOUSSTARTDATE = PRIMARYMANAGERSTARTDATE,
@PREVIOUSENDDATE = dbo.UFN_DATE_GETEARLIESTTIME(isnull(PRIMARYMANAGERENDDATE, dateadd(d, -1, @STARTDATE))),
@PREVIOUSSECONDARYFUNDRAISERID = SECONDARYMANAGERFUNDRAISERID
from
dbo.PROSPECTPLAN
where
ID = @PROSPECTPLANID;
if @PREVIOUSPRIMARYFUNDRAISERID is not null begin
--Clear out record to prevent constraint violations.
update dbo.PROSPECTPLAN set
PRIMARYMANAGERFUNDRAISERID = null,
PRIMARYMANAGERSTARTDATE = null,
PRIMARYMANAGERENDDATE = null,
DATECHANGED = @CURRENTDATE,
CHANGEDBYID = @CHANGEAGENTID
where
ID = @PROSPECTPLANID;
--Only add to the history if the fundraiser actually started in this capacity. If the start date is in the future then they never actually worked in this capacity and same record doesn't already exists.
if (coalesce(@PREVIOUSSTARTDATE,'01/01/1753') <= @CURRENTDATE
and not exists (select 1 from dbo.PROSPECTPLANMANAGERHISTORY where PROSPECTPLANID = @PROSPECTPLANID and FUNDRAISERID = @PREVIOUSPRIMARYFUNDRAISERID and ISPRIMARYMANAGER = 1 and DATEFROM = @PREVIOUSSTARTDATE and DATETO = @PREVIOUSENDDATE))
begin
/*Create primary manager history record*/
insert into dbo.PROSPECTPLANMANAGERHISTORY
(PROSPECTPLANID, FUNDRAISERID, ISPRIMARYMANAGER, DATEFROM, DATETO, ADDEDBYID, CHANGEDBYID, DATEADDED, DATECHANGED)
values
(@PROSPECTPLANID, @PREVIOUSPRIMARYFUNDRAISERID, 1, @PREVIOUSSTARTDATE, @PREVIOUSENDDATE, @CHANGEAGENTID, @CHANGEAGENTID, @CURRENTDATE, @CURRENTDATE);
end
end
if @NEWFUNDRAISERID is not null
update dbo.PROSPECTPLAN set
PRIMARYMANAGERFUNDRAISERID = @NEWFUNDRAISERID,
PRIMARYMANAGERSTARTDATE = case when @NEWFUNDRAISERID is not null then @STARTDATE else null end,
PRIMARYMANAGERENDDATE = null,
DATECHANGED = @CURRENTDATE,
CHANGEDBYID = @CHANGEAGENTID
where
ID = @PROSPECTPLANID;
exec dbo.USP_PROSPECTPLANASSIGNEDALERT_SEND @PREVIOUSPRIMARYFUNDRAISERID, @PREVIOUSSECONDARYFUNDRAISERID, @PROSPECTPLANID;
end
--Secondary manager
if @TYPECODE = 3 begin
select
@PREVIOUSPRIMARYFUNDRAISERID = PRIMARYMANAGERFUNDRAISERID,
@PREVIOUSSECONDARYFUNDRAISERID = SECONDARYMANAGERFUNDRAISERID,
@PREVIOUSSTARTDATE = SECONDARYMANAGERSTARTDATE,
@PREVIOUSENDDATE = dbo.UFN_DATE_GETEARLIESTTIME(isnull(SECONDARYMANAGERENDDATE, dateadd(d, -1, @STARTDATE)))
from
dbo.PROSPECTPLAN
where
ID = @PROSPECTPLANID;
if @PREVIOUSSECONDARYFUNDRAISERID is not null begin
--Clear out record to prevent constraint violations.
update dbo.PROSPECTPLAN set
SECONDARYMANAGERFUNDRAISERID = null,
SECONDARYMANAGERSTARTDATE = null,
SECONDARYMANAGERENDDATE = null,
DATECHANGED = @CURRENTDATE,
CHANGEDBYID = @CHANGEAGENTID
where
ID = @PROSPECTPLANID;
--Only add to the history if the fundraiser actually started in this capacity. If the start date is in the future then they never actually worked in this capacity and same record doesn't already exists.
if (coalesce(@PREVIOUSSTARTDATE,'01/01/1753') <= @CURRENTDATE
and not exists (select 1 from dbo.PROSPECTPLANMANAGERHISTORY where PROSPECTPLANID = @PROSPECTPLANID and FUNDRAISERID = @PREVIOUSSECONDARYFUNDRAISERID and ISPRIMARYMANAGER = 0 and DATEFROM = @PREVIOUSSTARTDATE and DATETO = @PREVIOUSENDDATE))
begin
/*Create primary manager history record*/
insert into dbo.PROSPECTPLANMANAGERHISTORY
(PROSPECTPLANID, FUNDRAISERID, ISPRIMARYMANAGER, DATEFROM, DATETO, ADDEDBYID, CHANGEDBYID, DATEADDED, DATECHANGED)
values
(@PROSPECTPLANID, @PREVIOUSSECONDARYFUNDRAISERID, 0, @PREVIOUSSTARTDATE, @PREVIOUSENDDATE, @CHANGEAGENTID, @CHANGEAGENTID, @CURRENTDATE, @CURRENTDATE);
end
end
if @NEWFUNDRAISERID is not null
update dbo.PROSPECTPLAN set
SECONDARYMANAGERFUNDRAISERID = @NEWFUNDRAISERID,
SECONDARYMANAGERSTARTDATE = case when @NEWFUNDRAISERID is not null then @STARTDATE else null end,
SECONDARYMANAGERENDDATE = null,
DATECHANGED = @CURRENTDATE,
CHANGEDBYID = @CHANGEAGENTID
where
ID = @PROSPECTPLANID;
exec dbo.USP_PROSPECTPLANASSIGNEDALERT_SEND @PREVIOUSPRIMARYFUNDRAISERID, @PREVIOUSSECONDARYFUNDRAISERID, @PROSPECTPLANID;
end
--Secondary fundraiser
if @TYPECODE = 4 begin
declare @SEQUENCE int;
select
@SEQUENCE = isnull(max(SEQUENCE)+1, 0)
from
dbo.SECONDARYFUNDRAISER
where
PROSPECTPLANID = @PROSPECTPLANID;
--New secondary fundraiser
if @SECONDARYFUNDRAISERID is null and @NEWFUNDRAISERID is not null begin
insert into dbo.SECONDARYFUNDRAISER
(PROSPECTPLANID, FUNDRAISERID, SOLICITORROLECODEID, SEQUENCE, DATEFROM, ADDEDBYID, CHANGEDBYID)
values
(@PROSPECTPLANID, @NEWFUNDRAISERID, @SOLICITORROLECODEID, @SEQUENCE, @STARTDATE, @CHANGEAGENTID, @CHANGEAGENTID);
end
--Existing
if @SECONDARYFUNDRAISERID is not null begin
--remove fundraiser
if @NEWFUNDRAISERID is null
begin
if (select dbo.UFN_DATE_GETEARLIESTTIME(coalesce(DATEFROM,'01/01/1753')) from dbo.SECONDARYFUNDRAISER where ID = @SECONDARYFUNDRAISERID) >= @CURRENTDATE
begin
exec USP_PROSPECTASSIGNMENTREQUEST_DELETEBYID_WITHCHANGEAGENTID @ID, @CHANGEAGENTID;
exec USP_SECONDARYFUNDRAISER_DELETEBYID_WITHCHANGEAGENTID @SECONDARYFUNDRAISERID, @CHANGEAGENTID;
end
else
begin
update
dbo.SECONDARYFUNDRAISER
set
DATETO = case when
dbo.UFN_DATE_GETEARLIESTTIME(isnull(DATETO, @CURRENTDATE)) >= @CURRENTDATE
then
dateadd(d, -1, @CURRENTDATE)
else
SECONDARYFUNDRAISER.DATETO
end
from
dbo.SECONDARYFUNDRAISER
where
SECONDARYFUNDRAISER.ID = @SECONDARYFUNDRAISERID;
end
end
else
begin
--Add the new fundraiser
insert into dbo.SECONDARYFUNDRAISER
(PROSPECTPLANID, FUNDRAISERID, SOLICITORROLECODEID, SEQUENCE, DATEFROM, ADDEDBYID, CHANGEDBYID)
values
(@PROSPECTPLANID, @NEWFUNDRAISERID, @SOLICITORROLECODEID, @SEQUENCE, @STARTDATE, @CHANGEAGENTID, @CHANGEAGENTID);
--If the fundraiser has not actually started we should delete their record so they don't appear in the history
if (select dbo.UFN_DATE_GETEARLIESTTIME(coalesce(DATEFROM,'01/01/1753')) from dbo.SECONDARYFUNDRAISER where ID = @SECONDARYFUNDRAISERID) >= @CURRENTDATE
begin
exec USP_PROSPECTASSIGNMENTREQUEST_DELETEBYID_WITHCHANGEAGENTID @ID, @CHANGEAGENTID;
exec USP_SECONDARYFUNDRAISER_DELETEBYID_WITHCHANGEAGENTID @SECONDARYFUNDRAISERID, @CHANGEAGENTID;
end
else
begin
update
dbo.SECONDARYFUNDRAISER
set
DATETO = case when
dbo.UFN_DATE_GETEARLIESTTIME(isnull(DATETO, @CURRENTDATE)) >= @CURRENTDATE
then
dateadd(d, -1, @CURRENTDATE )
else
DATETO
end,
CHANGEDBYID = @CHANGEAGENTID,
DATECHANGED = @CURRENTDATE
from
dbo.SECONDARYFUNDRAISER
where
ID = @SECONDARYFUNDRAISERID;
end
end
end
end
update dbo.PROSPECTASSIGNMENTREQUEST set
STATUSCODE = 1,
REVIEWDATE = @CURRENTDATE,
REVIEWEDBYID = @CURRENTAPPUSERID,
DATECHANGED = @CURRENTDATE,
CHANGEDBYID = @CHANGEAGENTID
where ID = @ID;
end
return 0;
end