USP_SAVE_GIFTAID_ADJUSTMENT

Parameters

Parameter Parameter Type Mode Description
@REVENUESPLITGIFTAIDID uniqueidentifier IN
@POSTSTATUSCODE tinyint IN
@POSTDATE date IN
@ADJUSTMENTREASONCODEID uniqueidentifier IN
@PAYMENTADJUSTMENTID uniqueidentifier IN
@CHANGEAGENTID uniqueidentifier IN
@CHANGEDATE datetime IN

Definition

Copy


            create procedure dbo.USP_SAVE_GIFTAID_ADJUSTMENT(
                @REVENUESPLITGIFTAIDID uniqueidentifier,
                @POSTSTATUSCODE tinyint = null,
                @POSTDATE date = null,
                @ADJUSTMENTREASONCODEID uniqueidentifier = null,
                @PAYMENTADJUSTMENTID uniqueidentifier = null,
                @CHANGEAGENTID uniqueidentifier = null,
                @CHANGEDATE datetime = null                
            )
            as
            begin
                set nocount on;

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

                if @CHANGEDATE is null
                    set @CHANGEDATE = getdate();

                declare @ADJUSTMENTID uniqueidentifier
                select top 1
                    @ADJUSTMENTID = FINANCIALTRANSACTIONLINEITEMADJUSTMENTID,
                    @POSTDATE = LIA.DATE
                from
                    dbo.FINANCIALTRANSACTIONLINEITEM LI
                    inner join dbo.FINANCIALTRANSACTIONLINEITEMADJUSTMENT LIA on LIA.ID = LI.FINANCIALTRANSACTIONLINEITEMADJUSTMENTID
                    inner join dbo.JOURNALENTRY JE on JE.FINANCIALTRANSACTIONLINEITEMID = LI.ID
                    inner join dbo.JOURNALENTRY_EXT JEX on JEX.ID = JE.ID
                where
                    JEX.REVENUESPLITGIFTAIDID = @REVENUESPLITGIFTAIDID
                    and LI.POSTSTATUSCODE = 1

                if @ADJUSTMENTID is null and @PAYMENTADJUSTMENTID is not null
                begin
                    set @ADJUSTMENTID = @PAYMENTADJUSTMENTID
                end

                if @POSTDATE is null
                    set @POSTDATE = getdate()

                if @POSTSTATUSCODE is null
                    set @POSTSTATUSCODE = 1

                if @ADJUSTMENTID is null
                begin

                    set @ADJUSTMENTID = NEWID()

                    insert into dbo.FINANCIALTRANSACTIONLINEITEMADJUSTMENT
                        (ID, ADJUSTMENTREASONCODEID, DATE, ADDEDBYID, CHANGEDBYID, DATEADDED, DATECHANGED)
                    values
                    (
                        @ADJUSTMENTID,
                        @ADJUSTMENTREASONCODEID,
                        @POSTDATE,
                        @CHANGEAGENTID,
                        @CHANGEAGENTID,
                        @CHANGEDATE,
                        @CHANGEDATE
                    );

                end

                -- Gift Aid line items to reverse

                declare @LINEITEMS UDT_GENERICID
                insert into @LINEITEMS (ID)
                select distinct
                    GIFTAIDLI.ID
                from
                    dbo.FINANCIALTRANSACTIONLINEITEM PAYMENTLI
                    left join dbo.FINANCIALTRANSACTIONLINEITEM REVERSEDPAYMENTLI on REVERSEDPAYMENTLI.REVERSEDLINEITEMID = PAYMENTLI.ID
                    inner join dbo.FINANCIALTRANSACTIONLINEITEM GIFTAIDLI on GIFTAIDLI.SOURCELINEITEMID = PAYMENTLI.ID or GIFTAIDLI.SOURCELINEITEMID = REVERSEDPAYMENTLI.ID
                where
                    PAYMENTLI.ID = @REVENUESPLITGIFTAIDID
                    and GIFTAIDLI.TYPECODE = 8
                    and GIFTAIDLI.DELETEDON is null

                --create reversals if none exist for this adjustment

                if not exists (
                    select
                        1
                    from
                        @LINEITEMS L
                        inner join dbo.FINANCIALTRANSACTIONLINEITEM LI on LI.REVERSEDLINEITEMID = L.ID
                    where
                        LI.TYPECODE = 1
                        and LI.FINANCIALTRANSACTIONLINEITEMADJUSTMENTID = @ADJUSTMENTID)
                begin
                    exec dbo.USP_SAVE_REVERSAL_LINEITEM @LINEITEMS, @ADJUSTMENTID, @CHANGEAGENTID, @CHANGEDATE, @POSTDATE, @POSTSTATUSCODE

                    exec dbo.USP_SAVE_HISTORICAL_LINEITEM @LINEITEMS, @ADJUSTMENTID, @CHANGEAGENTID, @CHANGEDATE, @POSTDATE, @POSTSTATUSCODE

                end

                update LI set
                    SOURCELINEITEMID = @REVENUESPLITGIFTAIDID
                from
                    @LINEITEMS L
                    inner join dbo.FINANCIALTRANSACTIONLINEITEM LI on LI.ID = L.ID

            end