USP_SAVE_PLANNEDGIFTPAYOUTADJUSTMENT

Stored procedure to log adjustments to planned gift payouts.

Parameters

Parameter Parameter Type Mode Description
@REVENUEID uniqueidentifier IN
@ADJUSTMENTID uniqueidentifier INOUT
@CHANGEAGENTID uniqueidentifier IN
@CHANGEDATE datetime IN
@DATE datetime IN
@POSTDATE datetime IN
@ADJUSTMENTREASON nvarchar(300) IN
@ISNEWREVENUE bit IN
@ADJUSTMENTREASONCODEID uniqueidentifier IN
@POSTSTATUSCODE tinyint IN

Definition

Copy


            CREATE procedure dbo.USP_SAVE_PLANNEDGIFTPAYOUTADJUSTMENT
            (
                @REVENUEID uniqueidentifier = null,
                @ADJUSTMENTID uniqueidentifier = null output,
                @CHANGEAGENTID uniqueidentifier = null,
                @CHANGEDATE datetime = null,
                @DATE datetime = null,
                @POSTDATE datetime = null,
                @ADJUSTMENTREASON nvarchar(300) = null,
                @ISNEWREVENUE bit = 0,
                @ADJUSTMENTREASONCODEID uniqueidentifier = null,
                @POSTSTATUSCODE tinyint = 1
            )
            with execute as owner
            as
            /*call this procedure before making changes to the revenue tables.*/

            set nocount on;

            declare @REVENUEPOSTDATE datetime;

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

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

            if @ADJUSTMENTID is null
                set @ADJUSTMENTID = newid();

            --Is the revenue posted?

            if (select count(REVENUE.ID) from dbo.REVENUE
                inner join dbo.REVENUEPOSTED on REVENUEPOSTED.ID = REVENUE.ID
                where REVENUE.ID = @REVENUEID) = 0
                raiserror('You cannot adjust an unposted planned gift', 13, 1)

            --Update unposted adjustment if existing

            update dbo.PLANNEDGIFTPAYOUTADJUSTMENT
            set DATE = @DATE
                POSTDATE = @POSTDATE,
                REASON = @ADJUSTMENTREASON,
                REASONCODEID = @ADJUSTMENTREASONCODEID,
                CHANGEDBYID = @CHANGEAGENTID,
                DATECHANGED = @CHANGEDATE,
                POSTSTATUSCODE = @POSTSTATUSCODE
            where REVENUEID = @REVENUEID and POSTSTATUSCODE <> 0

            if @@ROWCOUNT = 0
            begin
                --Log Adjustment if new

                insert into dbo.PLANNEDGIFTPAYOUTADJUSTMENT
                    (ID, REVENUEID, PREVIOUSAMOUNT, DATE, POSTDATE, POSTSTATUSCODE, REASON, REASONCODEID, ADDEDBYID, CHANGEDBYID, DATEADDED, DATECHANGED, BASECURRENCYID, TRANSACTIONCURRENCYID, TRANSACTIONPREVIOUSAMOUNT, BASEEXCHANGERATEID, ORGANIZATIONPREVIOUSAMOUNT, ORGANIZATIONEXCHANGERATEID)
                select 
                    @ADJUSTMENTID
                    REVENUE.ID, 
                    AMOUNT, 
                    @DATE
                    @POSTDATE
                    @POSTSTATUSCODE
                    @ADJUSTMENTREASON
                    @ADJUSTMENTREASONCODEID
                    @CHANGEAGENTID
                    @CHANGEAGENTID
                    @CHANGEDATE
                    @CHANGEDATE,
                    REVENUE.BASECURRENCYID, 
                    REVENUE.TRANSACTIONCURRENCYID, 
                    REVENUE.TRANSACTIONAMOUNT, 
                    REVENUE.BASEEXCHANGERATEID, 
                    REVENUE.ORGANIZATIONAMOUNT, 
                    REVENUE.ORGANIZATIONEXCHANGERATEID
                from 
                    dbo.REVENUE
                where 
                    REVENUE.ID = @REVENUEID;

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

                --Save the snapshot before deleting the GL information

                --exec dbo.USP_ADJUSTMENTHISTORY_PLANNEDGIFTPAYOUT_SAVESNAPSHOT @ADJUSTMENTID, @CHANGEAGENTID, @ISNEWREVENUE;


                --Log reversals in the GLTRANSACTION table

                exec dbo.USP_GLTRANSACTION_ADDPAYOUTREVERSALS @REVENUEID, @CHANGEAGENTID, @CHANGEDATE, @POSTDATE;

            end
            else /*make sure @ADJUSTMENTID gets set to the correct value*/
            begin
                select
                    @ADJUSTMENTID = ID
                from dbo.PLANNEDGIFTPAYOUTADJUSTMENT
                where REVENUEID = @REVENUEID and POSTSTATUSCODE <> 0;

                update dbo.FINANCIALTRANSACTIONLINEITEMADJUSTMENT set
                    ADJUSTMENTREASONCODEID = @ADJUSTMENTREASONCODEID,
                    REASON = @ADJUSTMENTREASON,
                    DATE = @POSTDATE,
                    CHANGEDBYID = @CHANGEAGENTID, DATECHANGED = @CHANGEDATE
                where
                    ID = @ADJUSTMENTID

                -- Update the post date on the GL transaction records

                update 
                    dbo.GLTRANSACTION
                set
                    GLTRANSACTION.POSTDATE = @POSTDATE,
                    GLTRANSACTION.DATECHANGED = @CHANGEDATE,
                    GLTRANSACTION.CHANGEDBYID = @CHANGEAGENTID
                where GLTRANSACTION.ID in (select GLTRANSACTION.ID    
                from
                    dbo.GLTRANSACTION
                inner join
                    dbo.PLANNEDGIFTPAYOUTGLDISTRIBUTION on GLTRANSACTION.ID = PLANNEDGIFTPAYOUTGLDISTRIBUTION.GLTRANSACTIONID
                where    
                    PLANNEDGIFTPAYOUTGLDISTRIBUTION.REVENUEID = @REVENUEID and PLANNEDGIFTPAYOUTGLDISTRIBUTION.OUTDATED = 0);

                -- post date for unposted reversals should match the adjustment post date

        update
          dbo.GLTRANSACTION
        set
          GLTRANSACTION.POSTDATE = @POSTDATE,
          GLTRANSACTION.DATECHANGED = @CHANGEDATE,
          GLTRANSACTION.CHANGEDBYID = @CHANGEAGENTID
        where GLTRANSACTION.ID in (select GLTRANSACTION.ID  
        from
          dbo.GLTRANSACTION
        inner join
          dbo.PLANNEDGIFTPAYOUTGLDISTRIBUTION on GLTRANSACTION.REVERSEDGLTRANSACTIONID = PLANNEDGIFTPAYOUTGLDISTRIBUTION.GLTRANSACTIONID
        where
          PLANNEDGIFTPAYOUTGLDISTRIBUTION.REVENUEID = @REVENUEID and GLTRANSACTION.POSTSTATUSCODE = 1);

                --Save the snapshot

                --exec dbo.USP_ADJUSTMENTHISTORY_PLANNEDGIFTPAYOUT_SAVESNAPSHOT @ADJUSTMENTID, @CHANGEAGENTID;


            end

            if exists (select 1 from dbo.FINANCIALTRANSACTIONLINEITEMADJUSTMENT where ID = @ADJUSTMENTID)
            begin
                update LI set
                    FINANCIALTRANSACTIONLINEITEMADJUSTMENTID = @ADJUSTMENTID
                from
                    dbo.FINANCIALTRANSACTIONLINEITEM LI
                    inner join dbo.FINANCIALTRANSACTION FT on FT.ID = LI.FINANCIALTRANSACTIONID
                    inner join dbo.FINANCIALTRANSACTION PARENT on PARENT.ID = FT.PARENTID
                where
                    PARENT.ID = @REVENUEID
                    and FT.TYPECODE = 26
                    and LI.POSTSTATUSCODE = 1
                    and LI.DELETEDON is null

            end

            declare @Error nvarchar(255) = ''
            if @@ROWCOUNT > 0 
                set @Error = dbo.UFN_GLDISTRIBUTION_VALIDPOSTDATE(@POSTDATE)

            if @Error <> '' 
                raiserror(@Error, 13, 1)