USP_DATAFORMTEMPLATE_EDIT_REVENUE_SPLITADJUST

The save procedure used by the edit dataform template "Posted Revenue Split 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.
@SPLITS xml IN
@ADJUSTMENTDATE datetime IN Adjusted Date
@ADJUSTMENTPOSTDATE datetime IN Adjusted Post Date
@ADJUSTMENTREASON nvarchar(300) IN Adjustment reason

Definition

Copy


                    CREATE procedure dbo.USP_DATAFORMTEMPLATE_EDIT_REVENUE_SPLITADJUST
                    (
                        @ID uniqueidentifier,
                        @CHANGEAGENTID uniqueidentifier = null,
                        @SPLITS xml,
                        @ADJUSTMENTDATE datetime,
                        @ADJUSTMENTPOSTDATE datetime,
                        @ADJUSTMENTREASON nvarchar(300)
                    )
                    as 
                        set nocount on;
                        declare @CHANGEDATE datetime;

                        declare @PAYMENTMETHODCODE tinyint;
                        declare @ADJUSTMENTID uniqueidentifier;
                        declare @STOCKSALEADJUSTMENTIDS xml;
                        declare @PROPERTYDETAILADJUSTMENTID uniqueidentifier;
                        declare @GIFTINKINDSALEADJUSTMENTIDS xml;
                        declare @REVENUEAMOUNT money;
                        declare @TRANSACTIONTYPECODE tinyint;
                        declare @REVENUEPAYMENTMETHODID uniqueidentifier;

                        declare @ADJUST bit;
                        declare @CLEARGLDISTRIBUTION bit;

                        declare @PROPERTYDETAILCOUNT int;

                        set @ADJUST = 0
                        set @PROPERTYDETAILCOUNT = 0;

                        set @CHANGEDATE = getdate();

                        begin try
                            select    @REVENUEAMOUNT = REVENUE.AMOUNT, 
                                    @TRANSACTIONTYPECODE = TRANSACTIONTYPECODE,
                                    @PAYMENTMETHODCODE = PAYMENTMETHODCODE,
                                    @REVENUEPAYMENTMETHODID = REVENUEPAYMENTMETHOD.ID
                            from dbo.REVENUE 
                            inner join dbo.REVENUEPAYMENTMETHOD
                                on REVENUEPAYMENTMETHOD.REVENUEID = REVENUE.ID
                            where REVENUE.ID = @ID;

                            if @TRANSACTIONTYPECODE = 1
                                raiserror('NOTVALIDFORPLEDGE',13,1)

                            if @TRANSACTIONTYPECODE = 3
                                raiserror('NOTVALIDFORMGPLEDGE',13,1)

                            /* Check if designations changed */
                            if dbo.UFN_CHECKDETAIL_SPLITSCHANGED(@ID, @SPLITS) = 1
                            begin
                                set @ADJUST = 1;
                                set @CLEARGLDISTRIBUTION = 1;
                            end

                            /* Already adjusted */
                            if @ADJUST = 0
                                if (select COUNT(ADJUSTMENT.ID)
                                        from dbo.ADJUSTMENT
                                        where REVENUEID = @ID and POSTSTATUSCODE = 1) > 0
                                    set @ADJUST = 1

                            /* If there was a change to GL related data log an adjustment for each revenue in the transaction */
                            if @ADJUST = 1
                            begin
                                    set @ADJUSTMENTID = null;
                                    exec dbo.USP_SAVE_ADJUSTMENT @ID, @ADJUSTMENTID output, @CHANGEAGENTID, @CHANGEDATE, @ADJUSTMENTDATE, @ADJUSTMENTPOSTDATE, @ADJUSTMENTREASON;

                                    select @PROPERTYDETAILCOUNT = count(PROPERTYDETAIL.ID)
                                    from dbo.PROPERTYDETAIL 
                                    where PROPERTYDETAIL.ID = @REVENUEPAYMENTMETHODID and SALEPOSTSTATUSCODE = 0;

                                    /* If sold stock has been posted, log stock detail adjustment */
                                    if @PAYMENTMETHODCODE = 4 and exists(select ID from dbo.STOCKSALE where STOCKDETAILID = @REVENUEPAYMENTMETHODID)
                                    begin
                                        exec dbo.USP_SAVE_STOCKDETAILADJUSTMENT @REVENUEPAYMENTMETHODID, @CHANGEAGENTID, @CHANGEDATE, @ADJUSTMENTDATE, @ADJUSTMENTPOSTDATE, @ADJUSTMENTREASON, @STOCKSALEADJUSTMENTIDS output;
                                    end

                                    /* If sold property has been posted, log property detail adjustment */
                                    else if (@PAYMENTMETHODCODE = 5) and (@PROPERTYDETAILCOUNT > 0
                                    begin
                                        exec dbo.USP_SAVE_PROPERTYDETAILADJUSTMENT @REVENUEPAYMENTMETHODID, @PROPERTYDETAILADJUSTMENTID output, @CHANGEAGENTID, @CHANGEDATE, @ADJUSTMENTDATE, @ADJUSTMENTPOSTDATE, @ADJUSTMENTREASON;                        
                                    end

                                    /* If sold gift-in-kind has been posted, log gift-in-kind detail adjustment */
                                    if @PAYMENTMETHODCODE = 6 and exists(select ID from dbo.GIFTINKINDSALE where GIFTINKINDPAYMENTMETHODDETAILID = @REVENUEPAYMENTMETHODID)
                                    begin
                                        exec dbo.USP_SAVE_GIFTINKINDPAYMENTMETHODDETAILADJUSTMENT @REVENUEPAYMENTMETHODID, @CHANGEAGENTID, @CHANGEDATE, @ADJUSTMENTDATE, @ADJUSTMENTPOSTDATE, @ADJUSTMENTREASON, @GIFTINKINDSALEADJUSTMENTIDS output;
                                    end

                            end                

                            -- check to see if the revenue record needs to be re-acknowledged                            

                            if (coalesce((select top 1 REACKNOWLEDGEREVENUE from dbo.ACKNOWLEDGEMENTPREFERENCE), 0)) = 1
                            begin

                                -- if designations have changed, mark the revenue letters for this record out of date, if necessary

                                if dbo.UFN_CHECKDETAIL_SPLITSCHANGED(@ID, @SPLITS) = 1
                                        exec dbo.USP_REVENUELETTER_SETREACKNOWLEDGEMENTS @ID, @CHANGEAGENTID;     

                            end

                            -- Set the IDs for any blank entries in the splits XML so that it can associate the declines with gift aid

                            -- flag with the generated splits.  Also, pull in the existing value for declines gift aid if it wasn't passed

                            -- in the xml.

                            set @SPLITS = (    select 
                                                case when SPLITS.[ID] is null or SPLITS.[ID] = '00000000-0000-0000-0000-000000000000' then newid() else SPLITS.[ID] end [ID],
                                                SPLITS.[AMOUNT],
                                                SPLITS.[APPLICATIONCODE],
                                                SPLITS.[DESIGNATIONID],
                                                SPLITS.[TYPECODE],
                                                case when SPLITS.[DECLINESGIFTAID] is null then REVENUESPLITGIFTAID.DECLINESGIFTAID else SPLITS.DECLINESGIFTAID end DECLINESGIFTAID
                                            from dbo.UFN_REVENUE_GETSPLITS_FROMITEMLISTXML(@SPLITS) SPLITS
                                            left join dbo.REVENUESPLITGIFTAID on SPLITS.ID = REVENUESPLITGIFTAID.ID
                                            for xml raw('ITEM'),type,elements,root('SPLITS'),BINARY BASE64)

                            exec dbo.USP_REVENUE_SPLIT_EDIT_SAVE @ID, @CHANGEAGENTID, @CHANGEDATE, @REVENUEAMOUNT, @SPLITS;

                            if @TRANSACTIONTYPECODE = 1 
                                exec dbo.USP_PLEDGE_FIXDEPENDENTSPLITS @ID, @CHANGEAGENTID, @CHANGEDATE;

                            --Gift Aid is for UK only

                            if dbo.UFN_INSTALLEDPRODUCTS_PRODUCTIS('9568A6C2-F7AA-45fd-8F54-21FE9654EE2D') = 1
                            begin
                                declare @DATE datetime, @APPEALID uniqueidentifier;
                                declare @CREDITTYPECODEID uniqueidentifier;
                                select
                                    @DATE = REVENUE.DATE,
                                    @APPEALID = REVENUE.APPEALID,
                                    @PAYMENTMETHODCODE = REVENUEPAYMENTMETHOD.PAYMENTMETHODCODE
                                from dbo.REVENUE
                                inner join dbo.REVENUEPAYMENTMETHOD on REVENUE.ID = REVENUEPAYMENTMETHOD.REVENUEID
                                where REVENUE.ID = @ID;

                                if @PAYMENTMETHODCODE = 2
                                    select @CREDITTYPECODEID = CREDITCARD.CREDITTYPECODEID 
                                    from dbo.REVENUE
                                    inner join dbo.REVENUEPAYMENTMETHOD on REVENUE.ID = REVENUEPAYMENTMETHOD.REVENUEID
                                    left join dbo.REVENUESCHEDULE on REVENUE.ID = REVENUESCHEDULE.ID
                                    left join dbo.CREDITCARD on CREDITCARD.ID = REVENUESCHEDULE.CREDITCARDID
                                    where REVENUE.ID = @ID;

                                declare @SPLITSDECLININGGIFTAID xml
                                set @SPLITSDECLININGGIFTAID = (    select
                                                                    ID as REVENUESPLITID
                                                                from dbo.UFN_REVENUE_GETSPLITS_FROMITEMLISTXML(@SPLITS)
                                                                where DECLINESGIFTAID = 1
                                                                for xml raw('ITEM'),type,elements,root('SPLITSDECLININGGIFTAID'),BINARY BASE64)

                                exec dbo.USP_GIFTAIDREVENUESPLIT_ADDUPDATESPLITS @ID, @APPEALID, @PAYMENTMETHODCODE, @CREDITTYPECODEID, @CHANGEAGENTID, @DATE, @TRANSACTIONTYPECODE, @SPLITSDECLININGGIFTAID
                            end

                            -- if the designations has changed, clear any user-defined gl distributions for this revenue record

                            if @CLEARGLDISTRIBUTION = 1
                            begin
                                --Clear GL

                                --Cache CONTEXT INFO

                                declare @contextCache varbinary(128);
                                set @contextCache = CONTEXT_INFO();

                                if not @CHANGEAGENTID is null
                                    set CONTEXT_INFO @CHANGEAGENTID;

                                delete from dbo.REVENUEGLDISTRIBUTION where REVENUEID = @ID and OUTDATED = 0;

                                delete from dbo.STOCKSALEGLDISTRIBUTION where REVENUEID = @ID and OUTDATED = 0;

                                delete from dbo.PROPERTYDETAILGLDISTRIBUTION where REVENUEID = @ID and OUTDATED = 0;

                                delete from dbo.GIFTINKINDSALEGLDISTRIBUTION where REVENUEID = @ID and OUTDATED = 0;

                                --Restore CONTEXT_INFO

                                if not @contextCache is null
                                    set CONTEXT_INFO @contextCache;

                                -- Add new GL distributions

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

                                -- Add new stock detail GL distributions

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

                                -- Add new property detail GL distributions

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

                                -- Add new gift-in-kind detail GL distributions

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

                declare @DEPOSITID uniqueidentifier;
                select @DEPOSITID = DEPOSITID
                from dbo.BANKACCOUNTDEPOSITPAYMENT
                where ID = @ID;
                if @DEPOSITID is not null
                  exec dbo.USP_BANKACCOUNTDEPOSIT_OVERWRITEPAYMENTDEBITACCOUNTS @ID, @DEPOSITID, @CHANGEAGENTID, @CHANGEDATE;

                            end

                            /* add adjustment history information */
                            if @ADJUST = 1
                            begin
                                /*call USP_ADJUSTMENTHISTORY_*_SAVEHISTORY after the revenue tables are updated */
                                if exists(select top 1 ID from dbo.REVENUE where ID = @ID)
                                begin
                                    if @ADJUSTMENTID is not null
                                        exec dbo.USP_ADJUSTMENTHISTORY_REVENUE_SAVEHISTORY @ID, @CHANGEAGENTID, null, @ADJUSTMENTID;

                                    if @STOCKSALEADJUSTMENTIDS is not null
                                        exec dbo.USP_ADJUSTMENTHISTORY_STOCK_SAVEHISTORY @REVENUEPAYMENTMETHODID, @CHANGEAGENTID, null, @STOCKSALEADJUSTMENTIDS;

                                    if @PROPERTYDETAILADJUSTMENTID is not null
                                        exec dbo.USP_ADJUSTMENTHISTORY_PROPERTY_SAVEHISTORY @REVENUEPAYMENTMETHODID, @CHANGEAGENTID, null, @PROPERTYDETAILADJUSTMENTID;

                                    if @GIFTINKINDSALEADJUSTMENTIDS is not null
                                        exec dbo.USP_ADJUSTMENTHISTORY_GIFTINKIND_SAVEHISTORY @REVENUEPAYMENTMETHODID, @CHANGEAGENTID, null, @GIFTINKINDSALEADJUSTMENTIDS;

                                end

                            end
                        end try

                        begin catch
                            exec dbo.USP_RAISE_ERROR;
                        end catch

                        return 0;