USP_SAVE_AUCTIONPURCHASEADJUSTMENT

Stored procedure to log adjustments to auction purchases.

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
@ADJUSTMENTREASONCODEID uniqueidentifier IN
@POSTSTATUSCODE tinyint IN
@ADJUSTMENTCODE tinyint IN

Definition

Copy


            CREATE procedure dbo.USP_SAVE_AUCTIONPURCHASEADJUSTMENT
            (
                @REVENUEID uniqueidentifier = null,
                @ADJUSTMENTID uniqueidentifier = null output,
                @CHANGEAGENTID uniqueidentifier = null,
                @CHANGEDATE datetime = null,
                @DATE datetime = null,
                @POSTDATE datetime = null,
                @ADJUSTMENTREASON nvarchar(300) = '',
                @ADJUSTMENTREASONCODEID uniqueidentifier = null,
                @POSTSTATUSCODE tinyint = 1,
                @ADJUSTMENTCODE tinyint = 0
            )
            with execute as owner
            as

                set nocount on;

                declare @REVENUEPOSTDATE datetime;
                declare @CONSTITUENTID uniqueidentifier;

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

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

                select @ADJUSTMENTID = ID
                from dbo.AUCTIONPURCHASEADJUSTMENT
                where REVENUEID = @REVENUEID and POSTSTATUSCODE <> 0;

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

                --JamesWill WI197067 2012-03-08 Ensure that the date used does not have a timestamp

                if not @DATE is null
                    set @DATE = dbo.UFN_DATE_GETEARLIESTTIME(@DATE);

                --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 auction purchase.', 13, 1)

                --kwb Create FINANCIALTRANSACTIONLINEITEMADJUSTMENT records for original write-offs that will be adjusted

                exec dbo.USP_CREATEINITIALADJUSTMENTHISTORY @REVENUEID, @CHANGEAGENTID

                select @CONSTITUENTID = CONSTITUENTID from dbo.FINANCIALTRANSACTION where ID = @REVENUEID

                --Update unposted adjustment if existing

                if @ADJUSTMENTID is not null and exists(select 1 from dbo.FINANCIALTRANSACTIONLINEITEMADJUSTMENT where ID = @ADJUSTMENTID)
                    update dbo.FINANCIALTRANSACTIONLINEITEMADJUSTMENT set
                        ADJUSTMENTREASONCODEID = @ADJUSTMENTREASONCODEID
                        ,REASON = @ADJUSTMENTREASON
                        ,CONSTITUENTID = @CONSTITUENTID
                        ,DATE = @DATE
                        ,CHANGEDBYID = @CHANGEAGENTID
                        ,DATECHANGED = @CHANGEDATE
                    where ID = @ADJUSTMENTID;
                else if @ADJUSTMENTID is not null
                    insert into dbo.FINANCIALTRANSACTIONLINEITEMADJUSTMENT (
                        ID
                        ,ADJUSTMENTREASONCODEID
                        ,REASON
                        ,CONSTITUENTID
                        ,DATE
                        ,ADDEDBYID, CHANGEDBYID, DATEADDED, DATECHANGED)
                    values (@ADJUSTMENTID
                        ,@ADJUSTMENTREASONCODEID
                        ,@ADJUSTMENTREASON
                        ,@CONSTITUENTID
                        ,@DATE
                        ,@CHANGEAGENTID, @CHANGEAGENTID, @CHANGEDATE, @CHANGEDATE);

                update dbo.AUCTIONPURCHASEADJUSTMENT
                set DATE = @DATE
                    POSTDATE = @POSTDATE,
                    CHANGEDBYID = @CHANGEAGENTID,
                    DATECHANGED = @CHANGEDATE,
                    POSTSTATUSCODE = @POSTSTATUSCODE
                where ID = @ADJUSTMENTID

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

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

                    --Log reversals in the GLTRANSACTION table 

                    exec dbo.USP_GLTRANSACTION_ADDAUCTIONPURCHASEREVERSALS @REVENUEID, @CHANGEAGENTID, @CHANGEDATE, @POSTDATE

                end
                else /*make sure @ADJUSTMENTID gets set to the correct value*/
                begin
                    -- Update the post date on the GL transaction records

                    update dbo.JOURNALENTRY set 
                      JOURNALENTRY.POSTDATE = @POSTDATE
                      ,JOURNALENTRY.DATECHANGED = @CHANGEDATE
                      ,JOURNALENTRY.CHANGEDBYID = @CHANGEAGENTID
                    from dbo.JOURNALENTRY as JE
                    inner join dbo.JOURNALENTRY_EXT as JEX on JE.ID = JEX.ID
                    inner join dbo.FINANCIALTRANSACTIONLINEITEM as FTLI on JE.FINANCIALTRANSACTIONLINEITEMID = FTLI.ID
                    where JEX.REVENUEPURCHASEID = @REVENUEID and JEX.OUTDATED = 0 and JEX.TABLENAMECODE = 2;

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

                    update dbo.JOURNALENTRY set 
                        JOURNALENTRY.POSTDATE = @POSTDATE
                        ,JOURNALENTRY.DATECHANGED = @CHANGEDATE
                        ,JOURNALENTRY.CHANGEDBYID = @CHANGEAGENTID
                    from dbo.JOURNALENTRY 
                    inner join dbo.JOURNALENTRY_EXT as JEX on JOURNALENTRY.ID = JEX.ID
                    inner join dbo.JOURNALENTRY as JE_REV on JEX.REVERSEDGLTRANSACTIONID = JE_REV.ID
                    inner join dbo.FINANCIALTRANSACTIONLINEITEM as FTLI_REV on JE_REV.FINANCIALTRANSACTIONLINEITEMID = FTLI_REV.ID
                    inner join dbo.FINANCIALTRANSACTIONLINEITEM as FTLI on FTLI.ID = JOURNALENTRY.FINANCIALTRANSACTIONLINEITEMID
                    where JEX.REVENUEPURCHASEID = @REVENUEID and FTLI.POSTSTATUSCODE = 1 and JEX.TABLENAMECODE = 2;

                end

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

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