USP_DATAFORMTEMPLATE_EDIT_MGPLEDGE_2

The save procedure used by the edit dataform template "Matching Gift Claim Edit Form 2".

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.
@ORIGINALGIFTID uniqueidentifier IN Original Gift
@MATCHINGORGANIZATIONID uniqueidentifier IN Matching organization
@DATE datetime IN Date
@AMOUNT money IN Amount
@SPLITS xml IN Designations
@MATCHINGGIFTCONDITIONID uniqueidentifier IN Matching gift condition type
@RELATIONSHIPID uniqueidentifier IN Relationship

Definition

Copy


                    CREATE procedure dbo.USP_DATAFORMTEMPLATE_EDIT_MGPLEDGE_2
                    (
                        @ID uniqueidentifier, 
                        @CHANGEAGENTID uniqueidentifier,
                        @ORIGINALGIFTID uniqueidentifier,
                        @MATCHINGORGANIZATIONID uniqueidentifier,
                        @DATE datetime,
                        @AMOUNT money,
                        @SPLITS xml,
                        @MATCHINGGIFTCONDITIONID uniqueidentifier,
                        @RELATIONSHIPID uniqueidentifier
                    )
                    as
                    set nocount on;
                    declare @CHANGEDATE datetime;
                    set @CHANGEDATE = getdate();

                    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;

                        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;

                        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);

                        select 
                            @OLDDATE = DATE 
                        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;

            -- 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,
                                RELATIONSHIPID = @RELATIONSHIPID,
                                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;

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

                        --assume one installment

                        declare @INSTALLMENTSPLITS xml;
                                    set @INSTALLMENTSPLITS = (select distinct
                                            INSTALLMENTSPLIT.ID, INSTALLMENT.ID INSTALLMENTID, REVENUESPLIT.DESIGNATIONID, REVENUESPLIT.AMOUNT, REVENUESPLIT.ID
                                        from REVENUESPLIT
                                        inner join INSTALLMENT on INSTALLMENT.REVENUEID = REVENUESPLIT.REVENUEID
                                        left outer join INSTALLMENTSPLIT on
                                            REVENUESPLIT.ID = INSTALLMENTSPLIT.REVENUESPLITID
                                        where REVENUESPLIT.REVENUEID = @ID
                                        for xml raw('ITEM'),type,elements,root('INSTALLMENTSPLITS'),BINARY BASE64);

                        exec dbo.USP_PLEDGE_GETINSTALLMENTSPLITS_UPDATEFROMXML @ID, @INSTALLMENTSPLITS, @CHANGEAGENTID, @CHANGEDATE;

                        if dbo.UFN_PLEDGE_INSTALLMENTSPLITSBALANCE(@ID) = 0
                            raiserror('INSTALLMENTSPLITSBALANCE', 13, 10);

                        if dbo.UFN_PLEDGEPAYMENT_INSTALLMENTSBALANCE(@ID) = 0
                            raiserror('PLEDGEPAYMENT_INSTALLMENTSBALANCE', 13, 10);

                        if dbo.UFN_PLEDGEPAYMENT_DESIGNATIONSBALANCE(@ID) = 0
                            raiserror('PLEDGEPAYMENT_DESIGNATIONSBALANCE', 13, 10);

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

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

                    return 0;