USP_DATAFORMTEMPLATE_ASSIGNPROSPECT_EDIT

The save procedure used by the edit dataform template "Fundraiser Assignment 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
@PROSPECTPLANID uniqueidentifier IN Plan
@FUNDRAISERROLECODE tinyint IN Fundraiser's role

Definition

Copy


                    CREATE procedure dbo.USP_DATAFORMTEMPLATE_ASSIGNPROSPECT_EDIT (
                        @ID uniqueidentifier,
                        @CHANGEAGENTID uniqueidentifier = null,    
                        @PROSPECTID uniqueidentifier,
                        @PROSPECTPLANID uniqueidentifier,
                        @FUNDRAISERROLECODE tinyint
                    ) as begin

                        set nocount on;

                        if @CHANGEAGENTID is null  
                            exec dbo.USP_CHANGEAGENT_GETORCREATECHANGEAGENT @CHANGEAGENTID output;

                        declare @NOW datetime;
                        set @NOW = getdate();

                        begin try
                            declare @PREVIOUSPRIMARYFUNDRAISERID uniqueidentifier;
                            declare @PREVIOUSSECONDARYFUNDRAISERID uniqueidentifier;

                            select
                                @PREVIOUSPRIMARYFUNDRAISERID = PRIMARYMANAGERFUNDRAISERID,
                                @PREVIOUSSECONDARYFUNDRAISERID = SECONDARYMANAGERFUNDRAISERID
                            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);
                                update dbo.PROSPECTPLAN set 
                                    PRIMARYMANAGERFUNDRAISERID = @ID,
                                    DATECHANGED = @NOW,
                                    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);
                                update dbo.PROSPECTPLAN set 
                                    SECONDARYMANAGERFUNDRAISERID=@ID,
                                    DATECHANGED = @NOW,
                                    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)
                                    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, SEQUENCE, ADDEDBYID, CHANGEDBYID)
                                values
                                    (@PROSPECTPLANID, @ID, @SEQUENCE, @CHANGEAGENTID, @CHANGEAGENTID);
                            end;

                            exec dbo.USP_PROSPECTPLANASSIGNEDALERT_SEND @PREVIOUSPRIMARYFUNDRAISERID, @PREVIOUSSECONDARYFUNDRAISERID, @PROSPECTPLANID;

                            update dbo.INTERACTION set
                                FUNDRAISERID = @ID,
                                CHANGEDBYID = @CHANGEAGENTID,
                                DATECHANGED = @NOW
                            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