USP_DATAFORMTEMPLATE_EDIT_GIFTAIDGLDISTRIBUTIONADJUST_2

Parameters

Parameter Parameter Type Mode Description
@ID uniqueidentifier IN
@GLDISTRIBUTION xml IN
@ADJUSTMENTDATE datetime IN
@ADJUSTMENTPOSTDATE datetime IN
@ADJUSTMENTREASON nvarchar(300) IN
@ADJUSTMENTREASONCODEID uniqueidentifier IN
@CHANGEAGENTID uniqueidentifier IN

Definition

Copy


                    CREATE procedure dbo.USP_DATAFORMTEMPLATE_EDIT_GIFTAIDGLDISTRIBUTIONADJUST_2
                    (
                        @ID uniqueidentifier,
                        @GLDISTRIBUTION xml,
                        @ADJUSTMENTDATE datetime,
                        @ADJUSTMENTPOSTDATE datetime,
                        @ADJUSTMENTREASON nvarchar(300),
                        @ADJUSTMENTREASONCODEID uniqueidentifier,
                        @CHANGEAGENTID uniqueidentifier = null
                    )
                    as

                        set nocount on;

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

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

                        begin try
                            declare @ADJUST bit;
                            declare @ADJUSTMENTEXISTS bit

                            set @ADJUST = 0;
                            set @ADJUSTMENTEXISTS = 0;

                            if (dbo.UFN_GLDISTRIBUTION_DEBITSEQUALCREDITS(@GLDISTRIBUTION) = 0)
                                raiserror('The sum of the debit accounts must equal the sum of the credit accounts.', 13, 1)    

                            declare @REVID uniqueidentifier
                            select @REVID = REVENUEID from REVENUESPLIT where ID =  @ID    

                            if (dbo.UFN_GLDISTRIBUTION_ACCOUNTEXISTS_2(@GLDISTRIBUTION,@REVID) = 0)
                                raiserror('One or more of the edited accounts do not exist.', 13, 1)

                            /* Already adjusted */
                            if dbo.UFN_REVENUESPLITGIFTAID_HASPENDINGADJUSTMENT(@ID) = 1
                            begin
                                set @ADJUST = 1;
                                set @ADJUSTMENTEXISTS = 1;
                            end

                            /* distributions Changed */
                            if @ADJUST = 0
                                set @ADJUST = dbo.UFN_REVENUESPLITGIFTAID_DISTRIBUTIONCHANGED(@ID, @GLDISTRIBUTION)

                            /* Create the reversals if no previous adjustment exists. */
                            if @ADJUST = 1
                            begin
                                exec dbo.USP_SAVE_GIFTAID_ADJUSTMENT @ID, 1, @ADJUSTMENTPOSTDATE, @ADJUSTMENTREASONCODEID, null, @CHANGEAGENTID, @CURRENTDATE;
                            end

              if @ADJUST = 1
              begin

                            declare @TRANSACTIONCURRENCYID uniqueidentifier;
                            declare @BASECURRENCYID uniqueidentifier;
                            declare @BASEEXCHANGERATEID uniqueidentifier;
                            declare @ORGANIZATIONEXCHANGERATEID uniqueidentifier;

                            select 
                                @TRANSACTIONCURRENCYID = TRANSACTIONCURRENCYID,
                                @BASECURRENCYID = BASECURRENCYID,
                                @BASEEXCHANGERATEID = BASEEXCHANGERATEID,
                                @ORGANIZATIONEXCHANGERATEID = ORGANIZATIONEXCHANGERATEID
                            from
                                dbo.REVENUESPLITGIFTAID
                            where
                                ID = @ID;

                            --Set the currency values in the GLDISTRIBUTION collection.

                            select @GLDISTRIBUTION = dbo.UFN_GLDISTRIBUTION_CONVERTAMOUNTSINXML
                            (
                                @GLDISTRIBUTION,
                                @BASECURRENCYID,
                                @ORGANIZATIONEXCHANGERATEID,
                                @TRANSACTIONCURRENCYID,
                                @BASEEXCHANGERATEID
                                @ORGANIZATIONEXCHANGERATEID
                                @BASEEXCHANGERATEID
                            )                                

                            -- If an unposted adjustment already exists, update the gift aid GL distribution rows.

                            -- Otherwise, insert new gift aid gl distribution rows using @GLDISTRIBUTION.

                            if @ADJUSTMENTEXISTS = 1 
                            begin
                                exec dbo.USP_REVENUESPLITGIFTAID_GETGLDISTRIBUTION_CUSTOMUPDATEFROMXML_2 @ID, @GLDISTRIBUTION, @CURRENTDATE, @CHANGEAGENTID, @CURRENTDATE;
                            end
                            else
                            begin
                                declare @JOURNAL nvarchar(50);
                                set @JOURNAL = 'Blackbaud Enterprise';

                                declare @REVENUEID uniqueidentifier;
                                select @REVENUEID = REVENUEID from dbo.REVENUESPLIT where ID = @ID;

                                set @CURRENTDATE = getdate();

                                declare @DISTRIBUTIONS table(
                                    GLTRANSACTIONID uniqueidentifier,
                                    ACCOUNT nvarchar(100),
                                    AMOUNT money,
                                    PROJECT nvarchar(100),
                                    REFERENCE nvarchar(255),
                                    TRANSACTIONTYPECODE tinyint,
                                    GLPAYMENTMETHODREVENUETYPEMAPPINGID uniqueidentifier,
                                    BASECURRENCYID uniqueidentifier,
                                    TRANSACTIONAMOUNT money,
                                    TRANSACTIONCURRENCYID uniqueidentifier,
                                    BASEEXCHANGERATEID uniqueidentifier,
                                    ORGANIZATIONAMOUNT money,
                                    ORGANIZATIONEXCHANGERATEID uniqueidentifier
                                );

                                -- Get the user-defined GL distributions for the gift aid record.

                                insert into @DISTRIBUTIONS(GLTRANSACTIONID, ACCOUNT, AMOUNT, PROJECT, REFERENCE, TRANSACTIONTYPECODE, GLPAYMENTMETHODREVENUETYPEMAPPINGID,
                                                           BASECURRENCYID, TRANSACTIONAMOUNT, TRANSACTIONCURRENCYID, BASEEXCHANGERATEID, ORGANIZATIONAMOUNT, ORGANIZATIONEXCHANGERATEID)
                                select 
                                    newid(),
                                    GIFTAIDDISTRIBUTIONS.ACCOUNT,
                                    GIFTAIDDISTRIBUTIONS.AMOUNT,
                                    GIFTAIDDISTRIBUTIONS.PROJECT,
                                    GIFTAIDDISTRIBUTIONS.REFERENCE, 
                                    GIFTAIDDISTRIBUTIONS.TRANSACTIONTYPECODE,
                                    GIFTAIDDISTRIBUTIONS.GLPAYMENTMETHODREVENUETYPEMAPPINGID,
                                    GIFTAIDDISTRIBUTIONS.BASECURRENCYID,
                                    GIFTAIDDISTRIBUTIONS.TRANSACTIONAMOUNT,
                                    GIFTAIDDISTRIBUTIONS.TRANSACTIONCURRENCYID,
                                    GIFTAIDDISTRIBUTIONS.BASEEXCHANGERATEID,
                                    GIFTAIDDISTRIBUTIONS.ORGANIZATIONAMOUNT,
                                    GIFTAIDDISTRIBUTIONS.ORGANIZATIONEXCHANGERATEID
                                from 
                                    dbo.UFN_REVENUESPLITGIFTAID_GETGLDISTRIBUTION_FROMITEMLISTXML(@GLDISTRIBUTION) GIFTAIDDISTRIBUTIONS

                                -- Insert rows in GLTRANSACTION table

                                insert into dbo.GLTRANSACTION(ID, TRANSACTIONTYPECODE, ACCOUNT, AMOUNT, PROJECT, REFERENCE, POSTDATE, JOURNAL, ADDEDBYID, CHANGEDBYID, DATEADDED, DATECHANGED, GLACCOUNTID,
                                                              BASECURRENCYID, TRANSACTIONAMOUNT, TRANSACTIONCURRENCYID, BASEEXCHANGERATEID, ORGANIZATIONAMOUNT, ORGANIZATIONEXCHANGERATEID)
                                select
                                    GLTRANSACTIONID,
                                    TRANSACTIONTYPECODE,
                                    ACCOUNT,
                                    AMOUNT,
                                    PROJECT,
                                    REFERENCE,
                                    @ADJUSTMENTPOSTDATE,
                                    @JOURNAL,
                                    @CHANGEAGENTID,
                                    @CHANGEAGENTID,
                                    @CURRENTDATE,
                                    @CURRENTDATE,
                                    dbo.UFN_GLACCOUNT_GETIDFROMACCOUNTANDREVENUE(ACCOUNT, @REVENUEID),
                                    BASECURRENCYID,
                                    TRANSACTIONAMOUNT,
                                    TRANSACTIONCURRENCYID,
                                    BASEEXCHANGERATEID,
                                    ORGANIZATIONAMOUNT,
                                    ORGANIZATIONEXCHANGERATEID
                                from 
                                    @DISTRIBUTIONS;

                                insert into dbo.GIFTAIDGLDISTRIBUTION
                                    (ID,REVENUESPLITGIFTAIDID,REVENUEID,GLTRANSACTIONID,GLPAYMENTMETHODREVENUETYPEMAPPINGID,PROJECT,REFERENCE,AMOUNT,ACCOUNT,TRANSACTIONTYPECODE,ADDEDBYID,CHANGEDBYID,DATEADDED,DATECHANGED,
                                     BASECURRENCYID, TRANSACTIONAMOUNT, TRANSACTIONCURRENCYID, BASEEXCHANGERATEID, ORGANIZATIONAMOUNT, ORGANIZATIONEXCHANGERATEID)
                                select
                                    newid(),
                                    @ID,
                                    @REVENUEID,
                                    GLTRANSACTIONID,
                                    GLPAYMENTMETHODREVENUETYPEMAPPINGID,
                                    PROJECT,
                                    REFERENCE,
                                    AMOUNT,
                                    ACCOUNT,
                                    TRANSACTIONTYPECODE,
                                    @CHANGEAGENTID,
                                    @CHANGEAGENTID,
                                    @CURRENTDATE,
                                    @CURRENTDATE,
                                    BASECURRENCYID,
                                    TRANSACTIONAMOUNT,
                                    TRANSACTIONCURRENCYID,
                                    BASEEXCHANGERATEID,
                                    ORGANIZATIONAMOUNT,
                                    ORGANIZATIONEXCHANGERATEID
                                from 
                                    @DISTRIBUTIONS;
                            end

                        end            

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

                    return 0;