USP_DATAFORMTEMPLATE_EDIT_PROSPECTPLANFUNDRAISERS

The save procedure used by the edit dataform template "Prospect Plan Fundraisers 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.
@PRIMARYMANAGERFUNDRAISERID uniqueidentifier IN Primary manager
@SECONDARYMANAGERFUNDRAISERID uniqueidentifier IN Secondary manager
@SECONDARYFUNDRAISERS xml IN

Definition

Copy


                    CREATE procedure dbo.USP_DATAFORMTEMPLATE_EDIT_PROSPECTPLANFUNDRAISERS (
                        @ID uniqueidentifier,
                        @CHANGEAGENTID uniqueidentifier = null,    
                        @PRIMARYMANAGERFUNDRAISERID uniqueidentifier,
                        @SECONDARYMANAGERFUNDRAISERID uniqueidentifier,
                        @SECONDARYFUNDRAISERS xml
                    ) as begin
                        set nocount on;

                        begin try

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

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

                            declare @PREVIOUSPRIMARYFUNDRAISERID uniqueidentifier;
                            declare @PREVIOUSSECONDARYFUNDRAISERID uniqueidentifier;

                            select 
                                @PREVIOUSPRIMARYFUNDRAISERID = PRIMARYMANAGERFUNDRAISERID,
                                @PREVIOUSSECONDARYFUNDRAISERID = SECONDARYMANAGERFUNDRAISERID
                            from
                                dbo.PROSPECTPLAN
                            where
                                ID = @ID;

                            update dbo.PROSPECTPLAN set 
                                PRIMARYMANAGERFUNDRAISERID=@PRIMARYMANAGERFUNDRAISERID,
                                SECONDARYMANAGERFUNDRAISERID=@SECONDARYMANAGERFUNDRAISERID,
                                CHANGEDBYID = @CHANGEAGENTID,
                                DATECHANGED = @CURRENTDATE
                            where 
                                ID = @ID;

                            exec dbo.USP_PROSPECTPLANASSIGNEDALERT_SEND @PREVIOUSPRIMARYFUNDRAISERID, @PREVIOUSSECONDARYFUNDRAISERID, @ID;
                            exec dbo.USP_PROSPECTPLAN_SECONDARYFUNDRAISERS_CUSTOMUPDATEFROMXML @ID, @SECONDARYFUNDRAISERS, @CHANGEAGENTID;

                            if exists (
                                    select INTERACTION.ID 
                                    from dbo.INTERACTION 
                                        inner join dbo.PLANOUTLINESTEP on INTERACTION.PLANOUTLINESTEPID = PLANOUTLINESTEP.ID
                                    where 
                                        PLANOUTLINESTEP.FUNDRAISERROLECODE = 1
                                        and INTERACTION.FUNDRAISERID is null
                                        and INTERACTION.PROSPECTPLANID = @ID
                                        and INTERACTION.COMPLETED = 0
                                        and dbo.UFN_INTERACTION_ISADDITIONALFUNDRAISER(INTERACTION.ID, @PRIMARYMANAGERFUNDRAISERID) = 1)
                                raiserror('The new primary manager cannot be the owner of steps to which they are already assigned another role.', 13, 1);

                            if exists (
                                    select INTERACTION.ID  
                                    from dbo.INTERACTION 
                                        inner join dbo.PLANOUTLINESTEP on INTERACTION.PLANOUTLINESTEPID = PLANOUTLINESTEP.ID
                                    where 
                                        PLANOUTLINESTEP.FUNDRAISERROLECODE = 2
                                        and INTERACTION.FUNDRAISERID is null
                                        and INTERACTION.PROSPECTPLANID = @ID
                                        and INTERACTION.COMPLETED = 0
                                        and dbo.UFN_INTERACTION_ISADDITIONALFUNDRAISER(INTERACTION.ID, @SECONDARYMANAGERFUNDRAISERID) = 1)
                                raiserror('The new secondary manager cannot be the owner of steps to which they are already assigned another role.', 13, 1);

                            declare @SECONDARYFUNDRAISERID uniqueidentifier;
                            select top 1 @SECONDARYFUNDRAISERID = FUNDRAISERID from dbo.SECONDARYFUNDRAISER where PROSPECTPLANID = @ID order by SEQUENCE;

                            if exists (
                                    select INTERACTION.ID 
                                    from dbo.INTERACTION 
                                        inner join dbo.PLANOUTLINESTEP on INTERACTION.PLANOUTLINESTEPID = PLANOUTLINESTEP.ID
                                    where 
                                        PLANOUTLINESTEP.FUNDRAISERROLECODE = 3
                                        and INTERACTION.FUNDRAISERID is null
                                        and INTERACTION.PROSPECTPLANID = @ID
                                        and INTERACTION.COMPLETED = 0
                                        and dbo.UFN_INTERACTION_ISADDITIONALFUNDRAISER(INTERACTION.ID, @SECONDARYFUNDRAISERID) = 1)
                                raiserror('The top additional fundraiser cannot be the owner of steps to which they are already assigned another role.', 13, 1);

                            update dbo.INTERACTION set
                                FUNDRAISERID = @PRIMARYMANAGERFUNDRAISERID,
                                CHANGEDBYID = @CHANGEAGENTID,
                                DATECHANGED = @CURRENTDATE
                            from
                                dbo.PLANOUTLINESTEP SI
                            where
                                SI.ID=PLANOUTLINESTEPID
                                and SI.FUNDRAISERROLECODE = 1
                                and FUNDRAISERID is null
                                and PROSPECTPLANID = @ID
                                and INTERACTION.COMPLETED = 0;

                            update dbo.INTERACTION set
                                FUNDRAISERID = @SECONDARYMANAGERFUNDRAISERID,
                                CHANGEDBYID = @CHANGEAGENTID,
                                DATECHANGED = @CURRENTDATE
                            from
                                dbo.PLANOUTLINESTEP SI
                            where
                                SI.ID=PLANOUTLINESTEPID
                                and SI.FUNDRAISERROLECODE = 2
                                and FUNDRAISERID is null
                                and PROSPECTPLANID = @ID
                                and INTERACTION.COMPLETED = 0;

                            update dbo.INTERACTION set
                                FUNDRAISERID = @SECONDARYFUNDRAISERID,
                                CHANGEDBYID = @CHANGEAGENTID,
                                DATECHANGED = @CURRENTDATE
                            from
                                dbo.PLANOUTLINESTEP SI
                            where
                                SI.ID=PLANOUTLINESTEPID
                                and SI.FUNDRAISERROLECODE = 3
                                and FUNDRAISERID is null
                                and PROSPECTPLANID = @ID
                                and INTERACTION.COMPLETED = 0;

                        end try
                        begin catch
                            exec dbo.USP_RAISE_ERROR;
                            return 1;
                        end catch

                        return 0;

                    end;