USP_DATAFORMTEMPLATE_FUNDRAISERASSIGNTOPROSPECT_EDIT
The save procedure used by the edit dataform template "Fundraiser Assign to Prospect Edit Form".
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 |
@FUNDRAISERSTARTDATE | datetime | IN | Start date |
@CURRENTAPPUSERID | uniqueidentifier | IN | Input parameter indicating the ID of the current user. |
Definition
Copy
CREATE procedure dbo.USP_DATAFORMTEMPLATE_FUNDRAISERASSIGNTOPROSPECT_EDIT (
@ID uniqueidentifier,
@CHANGEAGENTID uniqueidentifier = null,
@PROSPECTID uniqueidentifier,
@FUNDRAISERSTARTDATE datetime,
@CURRENTAPPUSERID uniqueidentifier
) as begin
set nocount on;
if @CHANGEAGENTID is null
exec dbo.USP_CHANGEAGENT_GETORCREATECHANGEAGENT @CHANGEAGENTID output;
declare @CURRENTDATE datetime = getdate();
if not exists(select SITEID from dbo.UFN_SITEID_MAPFROM_CONSTITUENTID(@PROSPECTID) SITES where dbo.UFN_SITEALLOWEDFORUSERONFEATURE(@CURRENTAPPUSERID, SITES.SITEID, '49567191-21B6-4260-A147-5716DC72387C', 1) = 1)
or (dbo.UFN_APPUSER_ISSYSADMIN(@CURRENTAPPUSERID) = 0 and dbo.UFN_SECURITY_APPUSER_GRANTED_FORM_FORCONSTIT(@CURRENTAPPUSERID, '49567191-21B6-4260-A147-5716DC72387C', @PROSPECTID) = 0)
raiserror('FUNDRAISERASSIGNTOPROSPECT_ERR_ACCESSDENIEDFORPROSPECT', 13, 1);
begin try
declare @PREVIOUSMANAGERID uniqueidentifier;
declare @PREVIOUSMANAGERSTARTDATE date;
declare @PREVIOUSMANAGERENDDATE date;
declare @MAKEHISTORICAL bit = 1;
select
@PREVIOUSMANAGERID = PROSPECTMANAGERFUNDRAISERID,
@PREVIOUSMANAGERSTARTDATE = PROSPECTMANAGERSTARTDATE,
@PREVIOUSMANAGERENDDATE = PROSPECTMANAGERENDDATE
from
dbo.PROSPECT
where
ID = @PROSPECTID;
if @PREVIOUSMANAGERID is not null
begin
if exists(select 1 from dbo.PROSPECT where ID = @PROSPECTID and PROSPECTMANAGERFUNDRAISERID = @ID)
raiserror('FUNDRAISERASSIGNTOPROSPECT_ERR_ALREADYASSIGNED', 13, 1);
if @FUNDRAISERSTARTDATE is null
set @FUNDRAISERSTARTDATE = getdate();
if @FUNDRAISERSTARTDATE <= @PREVIOUSMANAGERSTARTDATE
if dbo.UFN_DATE_GETEARLIESTTIME(@PREVIOUSMANAGERSTARTDATE) < dbo.UFN_DATE_GETEARLIESTTIME(getdate())
raiserror('FUNDRAISERASSIGNTOPROSPECT_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.PROSPECT
set
PROSPECTMANAGERFUNDRAISERID = null,
PROSPECTMANAGERSTARTDATE = null,
PROSPECTMANAGERENDDATE = null,
DATECHANGED = @CURRENTDATE,
CHANGEDBYID = @CHANGEAGENTID
where
ID = @PROSPECTID
insert into dbo.PROSPECTMANAGERHISTORY(ID, PROSPECTID, FUNDRAISERID, DATEFROM, DATETO, DATEADDED, DATECHANGED, ADDEDBYID, CHANGEDBYID)
values(newid(), @PROSPECTID, @PREVIOUSMANAGERID, @PREVIOUSMANAGERSTARTDATE, @PREVIOUSMANAGERENDDATE, @CURRENTDATE, @CURRENTDATE, @CHANGEAGENTID, @CHANGEAGENTID)
end
end
update
dbo.PROSPECT
set
PROSPECTMANAGERFUNDRAISERID = @ID,
PROSPECTMANAGERSTARTDATE = @FUNDRAISERSTARTDATE,
PROSPECTMANAGERENDDATE = null,
DATECHANGED = @CURRENTDATE,
CHANGEDBYID = @CHANGEAGENTID
where
ID = @PROSPECTID
exec dbo.USP_PROSPECTASSIGNEDALERT_SEND @PREVIOUSMANAGERID, @PROSPECTID;
update dbo.INTERACTION set
FUNDRAISERID = @PREVIOUSMANAGERID,
CHANGEDBYID = @CHANGEAGENTID,
DATECHANGED = @CURRENTDATE
from
dbo.INTERACTION I
inner join dbo.PROSPECTPLAN PP on PP.ID = I.PROSPECTPLANID
left outer join dbo.PLANOUTLINESTEP SI on SI.ID=I.PLANOUTLINESTEPID
where
I.FUNDRAISERID is null
and SI.FUNDRAISERROLECODE = 0
and PP.PROSPECTID = @PROSPECTID;
end try
begin catch
exec dbo.USP_RAISE_ERROR;
return 1;
end catch;
return 0;
end