USP_SAVE_BENEFITGLDISTRIBUTION_ADJUSTMENT

Parameters

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

Definition

Copy


CREATE procedure dbo.USP_SAVE_BENEFITGLDISTRIBUTION_ADJUSTMENT
(
    @ID uniqueidentifier,
    @GLDISTRIBUTION xml,
    @ADJUSTMENTDATE datetime,
    @ADJUSTMENTPOSTDATE datetime,
    @ADJUSTMENTREASONCODEID uniqueidentifier,
    @ADJUSTMENTREASON nvarchar(300),
    @BENEFITTYPECODE tinyint,
    @CHANGEAGENTID uniqueidentifier = null
)
as
begin try
    set nocount on;

    declare @ADJUSTMENTID uniqueidentifier;
    declare @ADJUST bit = 0;

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

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

    declare @CUSTOMIZED integer = 0;
    exec  @CUSTOMIZED = dbo.USP_SAVE_BENEFITGLDISTRIBUTION_ADJUSTMENT_CUSTOMIZE @ID, @GLDISTRIBUTION, @ADJUSTMENTDATE, @ADJUSTMENTPOSTDATE, @ADJUSTMENTREASONCODEID, @ADJUSTMENTREASON, @BENEFITTYPECODE, @CHANGEAGENTID

    if @CUSTOMIZED = 0
    begin
        declare @DISTRIBUTIONS table
        (
            ID uniqueidentifier,
            LINEITEMID uniqueidentifier,
            GLACCOUNTID uniqueidentifier,
            REFERENCE nvarchar(255),
            NEWJEID uniqueidentifier --if there is a new adjustment, there will be new journal entries. this is the relationship

        )

        insert into @DISTRIBUTIONS
        select
            DISTRIBUTIONS.ID,
            JE.FINANCIALTRANSACTIONLINEITEMID,
            GLACCOUNT.ID,
            DISTRIBUTIONS.REFERENCE,
            newid()
        from
            dbo.UFN_FINANCIALTRANSACTIONLINEITEM_GETJOURNALENTRIES_FROMITEMLISTXML(@GLDISTRIBUTION) DISTRIBUTIONS
            inner join dbo.JOURNALENTRY JE on JE.ID = DISTRIBUTIONS.ID
            inner join dbo.FINANCIALTRANSACTIONLINEITEM LI ON LI.ID = JE.FINANCIALTRANSACTIONLINEITEMID
            inner join dbo.FINANCIALTRANSACTION FT on FT.ID = LI.FINANCIALTRANSACTIONID
            left join dbo.GLACCOUNT on GLACCOUNT.ACCOUNTNUMBER = DISTRIBUTIONS.ACCOUNT and GLACCOUNT.PDACCOUNTSYSTEMID = FT.PDACCOUNTSYSTEMID

        if exists
        (select
            1
        from
            @DISTRIBUTIONS D
            inner join dbo.JOURNALENTRY JE on JE.ID = D.ID
        where
            JE.COMMENT <> D.REFERENCE
            or JE.GLACCOUNTID <> D.GLACCOUNTID)
        begin
            set @ADJUST = 1;
        end

        /* If there was a change to GL related data log an adjustment for each revenue in the transaction */
        if @ADJUST = 1
        begin
            if @ADJUSTMENTREASONCODEID is null
                raiserror('BBERR_ADJUSTMENTREASONCODEIDREQUIRED', 13, 1)

            set @ADJUSTMENTID = null;
            exec dbo.USP_SAVE_BENEFITADJUSTMENT_2 @ID, @ADJUSTMENTID output, @CHANGEAGENTID, @CHANGEDATE, @ADJUSTMENTDATE
                @ADJUSTMENTPOSTDATE, @ADJUSTMENTREASON, default, @ADJUSTMENTREASONCODEID, default, null, @BENEFITTYPECODE;

            --update journal entries where the line item didn't change

            update JE set
                GLACCOUNTID = DISTRIBUTIONS.GLACCOUNTID,
                COMMENT = DISTRIBUTIONS.REFERENCE,
                POSTDATE = @ADJUSTMENTPOSTDATE,
                DATECHANGED = @CHANGEDATE,
                CHANGEDBYID = @CHANGEAGENTID
            from
                @DISTRIBUTIONS DISTRIBUTIONS
                inner join dbo.JOURNALENTRY JE on JE.ID = DISTRIBUTIONS.ID
            where
                JE.FINANCIALTRANSACTIONLINEITEMID = DISTRIBUTIONS.LINEITEMID

            insert into dbo.JOURNALENTRY
                (ID, FINANCIALTRANSACTIONLINEITEMID, TRANSACTIONTYPECODE, CLASSCODE, JOURNALCODEID,
                SEQUENCE, TRANSACTIONAMOUNT, PERCENTAGE, SUMMARYID, BATCHID, COMMENT
                POSTDATE, FINANCIALBATCHID, GLACCOUNTID, SUBLEDGERTYPECODE, BASEAMOUNT, ORGAMOUNT,
                TRANSACTIONCURRENCYID, TYPECODE, ADDEDBYID, CHANGEDBYID, DATEADDED, DATECHANGED)
            select
                DISTRIBUTIONS.NEWJEID, DISTRIBUTIONS.LINEITEMID, JE.TRANSACTIONTYPECODE, JE.CLASSCODE, JE.JOURNALCODEID,
                JE.SEQUENCE, JE.TRANSACTIONAMOUNT, JE.PERCENTAGE, JE.SUMMARYID, JE.BATCHID, DISTRIBUTIONS.REFERENCE,
                @ADJUSTMENTPOSTDATE, JE.FINANCIALBATCHID, DISTRIBUTIONS.GLACCOUNTID, JE.SUBLEDGERTYPECODE, JE.BASEAMOUNT, JE.ORGAMOUNT,
                JE.TRANSACTIONCURRENCYID, JE.TYPECODE, @CHANGEAGENTID, @CHANGEAGENTID, @CHANGEDATE, @CHANGEDATE
            from
                @DISTRIBUTIONS DISTRIBUTIONS
                inner join dbo.JOURNALENTRY JE on JE.ID = DISTRIBUTIONS.ID
            where
                JE.FINANCIALTRANSACTIONLINEITEMID <> DISTRIBUTIONS.LINEITEMID

            insert into dbo.JOURNALENTRY_EXT
                (ID, PROJECT, JOURNAL, TABLENAMECODE, BATCHID, REVERSEDGLTRANSACTIONID, REVERSEDATE, DISTRIBUTIONTABLEID,
                REVENUEID, GLPAYMENTMETHODREVENUETYPEMAPPINGID, OUTDATED, WRITEOFFID, PROPERTYDETAILID, STOCKSALEID,
                PAYMENTMETHODCODE, LOGICALREVENUEID, GIFTINKINDSALEID, CREDITITEMID, DISCOUNTCREDITITEMID,
                REVENUESPLITGIFTFEEID, REVENUESPLITGIFTAIDID, ACCOUNT, PRECALCPOSTSTATUSCODE, REVENUEPURCHASEID,
                PLANNEDGIFTPAYOUTID, PRECALCORGANIZATIONEXCHANGERATEID, PRECALCBASEEXCHANGERATEID, FULLYPAIDSTATUSCODE,
                BENEFITTYPECODE, ADDEDBYID, CHANGEDBYID, DATEADDED, DATECHANGED)
            select
                DISTRIBUTIONS.NEWJEID, JEX.PROJECT, JEX.JOURNAL, JEX.TABLENAMECODE, null, JEX.REVERSEDGLTRANSACTIONID, null, JEX.DISTRIBUTIONTABLEID,
                JEX.REVENUEID, JEX.GLPAYMENTMETHODREVENUETYPEMAPPINGID, 0, JEX.WRITEOFFID, JEX.PROPERTYDETAILID, JEX.STOCKSALEID,
                JEX.PAYMENTMETHODCODE, JEX.LOGICALREVENUEID, JEX.GIFTINKINDSALEID, JEX.CREDITITEMID, JEX.DISCOUNTCREDITITEMID,
                JEX.REVENUESPLITGIFTFEEID, JEX.REVENUESPLITGIFTAIDID, JEX.ACCOUNT, JEX.PRECALCPOSTSTATUSCODE, JEX.REVENUEPURCHASEID,
                JEX.PLANNEDGIFTPAYOUTID, JEX.PRECALCORGANIZATIONEXCHANGERATEID, JEX.PRECALCBASEEXCHANGERATEID, JEX.FULLYPAIDSTATUSCODE,
                JEX.BENEFITTYPECODE, @CHANGEAGENTID, @CHANGEAGENTID, @CHANGEDATE, @CHANGEDATE
            from
                @DISTRIBUTIONS DISTRIBUTIONS
                inner join dbo.JOURNALENTRY JE on JE.ID = DISTRIBUTIONS.ID
                inner join dbo.JOURNALENTRY_EXT JEX on JEX.ID = JE.ID
            where
                JE.FINANCIALTRANSACTIONLINEITEMID <> DISTRIBUTIONS.LINEITEMID
        end
    end
end try

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

return 0