USP_DATAFORMTEMPLATE_ASSIGNPROSPECT_EDIT_2
The save procedure used by the edit dataform template "Fundraiser Assignment Edit Form 2".
Parameters
Parameter | Parameter Type | Mode | Description |
---|---|---|---|
@ID | uniqueidentifier | IN | The input ID parameter indicating the ID of the record being edited. |
@CHANGEAGENTID | uniqueidentifier | IN | Input parameter indicating the ID of the change agent invoking the procedure. |
@PROSPECTID | uniqueidentifier | IN | Prospect |
@PROSPECTPLANID | uniqueidentifier | IN | Plan |
@FUNDRAISERROLECODE | tinyint | IN | Fundraiser's role |
@FUNDRAISERSTARTDATE | datetime | IN | Start date |
@CURRENTAPPUSERID | uniqueidentifier | IN | Input parameter indicating the ID of the current user. |
Definition
Copy
CREATE procedure dbo.USP_DATAFORMTEMPLATE_ASSIGNPROSPECT_EDIT_2 (
@ID uniqueidentifier,
@CHANGEAGENTID uniqueidentifier = null,
@PROSPECTID uniqueidentifier,
@PROSPECTPLANID uniqueidentifier,
@FUNDRAISERROLECODE tinyint,
@FUNDRAISERSTARTDATE datetime,
@CURRENTAPPUSERID uniqueidentifier
) as begin
set nocount on;
if not exists(select SITEID from dbo.UFN_SITEID_MAPFROM_PROSPECTPLANID(@PROSPECTPLANID) SITES where dbo.UFN_SITEALLOWEDFORUSERONFEATURE(@CURRENTAPPUSERID, SITES.SITEID, '12A43662-7F1C-4391-8ABC-0D0461ECB88B', 1) = 1)
raiserror('ASSIGNPROSPECT_ERR_ACCESSDENIEDFORPROSPECTPLAN', 13, 1);
if @CHANGEAGENTID is null
exec dbo.USP_CHANGEAGENT_GETORCREATECHANGEAGENT @CHANGEAGENTID output;
declare @CURRENTDATE datetime;
set @CURRENTDATE = getdate();
begin try
declare @PREVIOUSPRIMARYFUNDRAISERID uniqueidentifier;
declare @PREVIOUSSECONDARYFUNDRAISERID uniqueidentifier;
declare @PREVIOUSMANAGERSTARTDATE date;
declare @PREVIOUSMANAGERENDDATE date;
declare @MAKEHISTORICAL bit = 1;
select
@PREVIOUSPRIMARYFUNDRAISERID = PRIMARYMANAGERFUNDRAISERID,
@PREVIOUSSECONDARYFUNDRAISERID = SECONDARYMANAGERFUNDRAISERID,
@PREVIOUSMANAGERSTARTDATE = case when @FUNDRAISERROLECODE = 1 then PRIMARYMANAGERSTARTDATE when @FUNDRAISERROLECODE = 2 then SECONDARYMANAGERSTARTDATE else null end,
@PREVIOUSMANAGERENDDATE = case when @FUNDRAISERROLECODE = 1 then PRIMARYMANAGERENDDATE when @FUNDRAISERROLECODE = 2 then SECONDARYMANAGERENDDATE else null end
from
dbo.PROSPECTPLAN
where
ID = @PROSPECTPLANID;
if @FUNDRAISERROLECODE = 1 begin
if exists(select 1 from dbo.PROSPECTPLAN where ID = @PROSPECTPLANID and PRIMARYMANAGERFUNDRAISERID = @ID)
raiserror('ASSIGNPROSPECT_ERR_ALREADYASSIGNED', 13, 1);
if @PREVIOUSPRIMARYFUNDRAISERID is not null begin
if @FUNDRAISERSTARTDATE is null
set @FUNDRAISERSTARTDATE = getdate();
if @FUNDRAISERSTARTDATE <= @PREVIOUSMANAGERSTARTDATE
if dbo.UFN_DATE_GETEARLIESTTIME(@PREVIOUSMANAGERSTARTDATE) < dbo.UFN_DATE_GETEARLIESTTIME(getdate())
raiserror('ASSIGNPROSPECT_ERR_INVALIDSTARTDATE', 13, 1);
else
set @MAKEHISTORICAL = 0;
if @MAKEHISTORICAL = 1
begin
if @PREVIOUSMANAGERENDDATE is null or @PREVIOUSMANAGERENDDATE >= @FUNDRAISERSTARTDATE
set @PREVIOUSMANAGERENDDATE = dateadd(d, -1, @FUNDRAISERSTARTDATE);
update
dbo.PROSPECTPLAN
set
PRIMARYMANAGERFUNDRAISERID = null,
PRIMARYMANAGERSTARTDATE = null,
PRIMARYMANAGERENDDATE = null,
DATECHANGED = @CURRENTDATE,
CHANGEDBYID = @CHANGEAGENTID
where
ID = @PROSPECTPLANID
insert into dbo.PROSPECTPLANMANAGERHISTORY(ID, PROSPECTPLANID, FUNDRAISERID, ISPRIMARYMANAGER, DATEFROM, DATETO, DATEADDED, DATECHANGED, ADDEDBYID, CHANGEDBYID)
values(newid(), @PROSPECTPLANID, @PREVIOUSPRIMARYFUNDRAISERID, 1, @PREVIOUSMANAGERSTARTDATE, @PREVIOUSMANAGERENDDATE, @CURRENTDATE, @CURRENTDATE, @CHANGEAGENTID, @CHANGEAGENTID)
end
end
update dbo.PROSPECTPLAN set
PRIMARYMANAGERFUNDRAISERID = @ID,
PRIMARYMANAGERSTARTDATE = @FUNDRAISERSTARTDATE,
PRIMARYMANAGERENDDATE = null,
DATECHANGED = @CURRENTDATE,
CHANGEDBYID = @CHANGEAGENTID
where
ID = @PROSPECTPLANID;
if (@@ROWCOUNT=0) raiserror('ASSIGNPROSPECT_ERR_INVALIDPROSPECTPLAN', 13, 1);
end
else if @FUNDRAISERROLECODE = 2 begin
if exists(select 1 from dbo.PROSPECTPLAN where ID=@PROSPECTPLANID and SECONDARYMANAGERFUNDRAISERID=@ID)
raiserror('ASSIGNPROSPECT_ERR_ALREADYASSIGNED', 13, 1);
if @PREVIOUSSECONDARYFUNDRAISERID is not null begin
if @FUNDRAISERSTARTDATE is null
set @FUNDRAISERSTARTDATE = getdate();
if @FUNDRAISERSTARTDATE <= @PREVIOUSMANAGERSTARTDATE
if dbo.UFN_DATE_GETEARLIESTTIME(@PREVIOUSMANAGERSTARTDATE) < dbo.UFN_DATE_GETEARLIESTTIME(getdate())
raiserror('ASSIGNPROSPECT_ERR_INVALIDSTARTDATE', 13, 1);
else
set @MAKEHISTORICAL = 0;
if @MAKEHISTORICAL = 1
begin
if @PREVIOUSMANAGERENDDATE is null or @PREVIOUSMANAGERENDDATE >= @FUNDRAISERSTARTDATE
set @PREVIOUSMANAGERENDDATE = dateadd(d, -1, @FUNDRAISERSTARTDATE);
update
dbo.PROSPECTPLAN
set
SECONDARYMANAGERFUNDRAISERID = null,
SECONDARYMANAGERSTARTDATE = null,
SECONDARYMANAGERENDDATE = null,
DATECHANGED = @CURRENTDATE,
CHANGEDBYID = @CHANGEAGENTID
where
ID = @PROSPECTPLANID
insert into dbo.PROSPECTPLANMANAGERHISTORY(ID, PROSPECTPLANID, FUNDRAISERID, ISPRIMARYMANAGER, DATEFROM, DATETO, DATEADDED, DATECHANGED, ADDEDBYID, CHANGEDBYID)
values(newid(), @PROSPECTPLANID, @PREVIOUSSECONDARYFUNDRAISERID, 0, @PREVIOUSMANAGERSTARTDATE, @PREVIOUSMANAGERENDDATE, @CURRENTDATE, @CURRENTDATE, @CHANGEAGENTID, @CHANGEAGENTID)
end
end
update dbo.PROSPECTPLAN set
SECONDARYMANAGERFUNDRAISERID = @ID,
SECONDARYMANAGERSTARTDATE = @FUNDRAISERSTARTDATE,
SECONDARYMANAGERENDDATE = null,
DATECHANGED = @CURRENTDATE,
CHANGEDBYID = @CHANGEAGENTID
where
ID = @PROSPECTPLANID;
if (@@ROWCOUNT=0) raiserror('ASSIGNPROSPECT_ERR_INVALIDPROSPECTPLAN', 13, 1);
end
else if @FUNDRAISERROLECODE = 3 begin
if exists(select 1 from dbo.SECONDARYFUNDRAISER where PROSPECTPLANID=@PROSPECTPLANID and FUNDRAISERID=@ID and (DATETO is null or DATETO > @FUNDRAISERSTARTDATE))
raiserror('ASSIGNPROSPECT_ERR_ALREADYASSIGNED', 13, 1);
declare @SEQUENCE int;
select @SEQUENCE=coalesce(max(SEQUENCE)+1,0) from dbo.SECONDARYFUNDRAISER where PROSPECTPLANID=@PROSPECTPLANID;
insert into dbo.SECONDARYFUNDRAISER
(PROSPECTPLANID, FUNDRAISERID, DATEFROM, SEQUENCE, ADDEDBYID, CHANGEDBYID)
values
(@PROSPECTPLANID, @ID, @FUNDRAISERSTARTDATE, @SEQUENCE, @CHANGEAGENTID, @CHANGEAGENTID);
end;
exec dbo.USP_PROSPECTPLANASSIGNEDALERT_SEND @PREVIOUSPRIMARYFUNDRAISERID, @PREVIOUSSECONDARYFUNDRAISERID, @PROSPECTPLANID;
update dbo.INTERACTION set
FUNDRAISERID = @ID,
CHANGEDBYID = @CHANGEAGENTID,
DATECHANGED = @CURRENTDATE
from
dbo.PLANOUTLINESTEP SI
where
SI.ID = PLANOUTLINESTEPID
and SI.FUNDRAISERROLECODE = @FUNDRAISERROLECODE
and FUNDRAISERID is null
and PROSPECTPLANID = @PROSPECTPLANID;
end try
begin catch
exec dbo.USP_RAISE_ERROR;
return 1;
end catch;
return 0;
end