USP_MATCHINGGIFTPLEDGE_EDIT

Stored procedure to edit a matching gift claim.

Parameters

Parameter Parameter Type Mode Description
@ID uniqueidentifier IN
@CHANGEAGENTID uniqueidentifier IN
@CHANGEDATE datetime IN
@ORIGINALGIFTID uniqueidentifier IN
@MATCHINGORGANIZATIONID uniqueidentifier IN
@DATE datetime IN
@AMOUNT money IN
@SPLITS xml IN
@POSTSTATUSCODE tinyint IN
@POSTDATE datetime IN
@MATCHINGGIFTCONDITIONID uniqueidentifier IN

Definition

Copy


            CREATE procedure dbo.USP_MATCHINGGIFTPLEDGE_EDIT
            (
                @ID uniqueidentifier, 
                @CHANGEAGENTID uniqueidentifier,
                @CHANGEDATE datetime,
                @ORIGINALGIFTID uniqueidentifier,
                @MATCHINGORGANIZATIONID uniqueidentifier,
                @DATE datetime,
                @AMOUNT money,
                @SPLITS xml,
                @POSTSTATUSCODE tinyint,
                @POSTDATE datetime,
                @MATCHINGGIFTCONDITIONID uniqueidentifier
            )
            as

            set nocount on;
            declare @OLDDATE datetime;
            declare @COUNT int;

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

            begin try
                exec dbo.USP_REVENUESPLIT_VALIDATESPLITS @SPLITS, @AMOUNT, 3, @ID;

                select 
                    @COUNT = count(REVENUE.ID) 
                from dbo.REVENUE
                inner join dbo.REVENUEMATCHINGGIFT RMG on REVENUE.ID = RMG.ID
                where
                    REVENUE.CONSTITUENTID = @MATCHINGORGANIZATIONID  and
                    RMG.MGSOURCEREVENUEID = @ORIGINALGIFTID;

                --Bug 98537 - AdamBu 5/25/10 - We are not longer enforcing one claim per org per gift.    

                --if (@COUNT - 1) > 0 --Use (@COUNT - 1) because the gift being edited will be counted in this.

                --    raiserror('An organization cannot match a single gift more than once.', 13, 1);


        declare @OLDAMOUNT money;

                select 
                    @OLDDATE = DATE,
          @OLDAMOUNT = AMOUNT
                from dbo.REVENUE 
                where ID = @ID;

                /* CMC
        update dbo.FINANCIALTRANSACTION 
                    set DATE = @DATE,
                        CHANGEDBYID = @CHANGEAGENTID,
                        DATECHANGED = @CHANGEDATE
                where ID = @ID;
        */
        update dbo.REVENUE 
                    set DATE = @DATE,
                        CHANGEDBYID = @CHANGEAGENTID,
                        DATECHANGED = @CHANGEDATE
                where ID = @ID;


        if @AMOUNT <> @OLDAMOUNT 
          -- make sure we aren't trying to modify revenue in a locked/closed deposit/bank

          exec dbo.USP_EDIT_REVENUE_VALIDATE_DEPOSIT_STATUS @ID;

        /* CMC
                update dbo.FINANCIALTRANSACTION
                    set AMOUNT = @AMOUNT,
                        CHANGEDBYID = @CHANGEAGENTID,
                        DATECHANGED = @CHANGEDATE
                    where ID = @ID;
        */
            update dbo.REVENUE
                    set AMOUNT = @AMOUNT,
                        CHANGEDBYID = @CHANGEAGENTID,
                        DATECHANGED = @CHANGEDATE
                    where ID = @ID;


                update dbo.REVENUEMATCHINGGIFT
                    set MATCHINGGIFTCONDITIONID = @MATCHINGGIFTCONDITIONID,
                        CHANGEDBYID = @CHANGEAGENTID,
                        DATECHANGED = @CHANGEDATE
                    where ID = @ID;

                if @DATE <> @OLDDATE
                    update dbo.REVENUESCHEDULE
                        set STARTDATE = @DATE,
                            CHANGEDBYID = @CHANGEAGENTID,
                            DATECHANGED = @CHANGEDATE
                        where ID = @ID;

                update dbo.INSTALLMENT
                    set AMOUNT = @AMOUNT,
                        DATE = @DATE,
                        CHANGEDBYID = @CHANGEAGENTID,
                        DATECHANGED = @CHANGEDATE
                    where REVENUEID = @ID;

                declare @SPLITSCHANGED bit
                set @SPLITSCHANGED = dbo.UFN_CHECKDETAIL_SPLITSCHANGED(@ID, @SPLITS)

                exec dbo.USP_REVENUE_GETSPLITS_UPDATEFROMXML @ID, @SPLITS, @CHANGEAGENTID, @CHANGEDATE;    

                exec dbo.USP_REVENUE_UPDATESOLICITORS @ID, @CHANGEAGENTID, @CHANGEDATE;

                if @SPLITSCHANGED = 1
                begin
                    exec dbo.USP_REVENUE_CLEARANDADDCAMPAIGNS @REVENUEID = @ID,
                        @CHANGEAGENTID = @CHANGEAGENTID,
                        @CHANGEDATE = @CHANGEDATE
                end
            end try
            begin catch
                exec dbo.USP_RAISE_ERROR;
                return 1;
            end catch
            return 0;