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