USP_ADJUSTMENTHISTORY_WRITEOFF_SAVESNAPSHOT

Stores a snapshot of write-off information at the time of an adjustment for use in reporting.

Parameters

Parameter Parameter Type Mode Description
@WRITEOFFADJUSTMENTID uniqueidentifier IN
@CHANGEAGENTID uniqueidentifier IN

Definition

Copy


            CREATE procedure dbo.USP_ADJUSTMENTHISTORY_WRITEOFF_SAVESNAPSHOT
            (
                @WRITEOFFADJUSTMENTID uniqueidentifier,
                @CHANGEAGENTID uniqueidentifier
            )
            as
            set nocount on;

            declare @CHANGEDATE datetime;
            declare @WRITEOFFID uniqueidentifier;
            declare @ADJUSTMENTHISTORYWRITEOFFID uniqueidentifier;
            declare @SNAPSHOTEXISTS bit;

            set @CHANGEDATE = getdate();
            set @SNAPSHOTEXISTS = 0;

            select @ADJUSTMENTHISTORYWRITEOFFID = ID
            from dbo.ADJUSTMENTHISTORYWRITEOFF
            where WRITEOFFADJUSTMENTID = @WRITEOFFADJUSTMENTID;

            update dbo.ADJUSTMENTHISTORYWRITEOFF set
                ADJUSTMENTHISTORYWRITEOFF.CONSTITUENTNAME = CONSTITUENT.NAME,
                ADJUSTMENTHISTORYWRITEOFF.DATE = WRITEOFF.DATE,
                ADJUSTMENTHISTORYWRITEOFF.ADJUSTMENTDATE = WRITEOFFADJUSTMENT.DATE,
                ADJUSTMENTHISTORYWRITEOFF.ADJUSTMENTPOSTDATE = WRITEOFFADJUSTMENT.POSTDATE,
                ADJUSTMENTHISTORYWRITEOFF.ADJUSTMENTREASON = WRITEOFFADJUSTMENT.REASON,
                ADJUSTMENTHISTORYWRITEOFF.ADJUSTMENTREASONCODEID = WRITEOFFADJUSTMENT.REASONCODEID,
                CHANGEDBYID = @CHANGEAGENTID,
                DATECHANGED = @CHANGEDATE
            from dbo.ADJUSTMENTHISTORYWRITEOFF
            inner join dbo.WRITEOFFADJUSTMENT on WRITEOFFADJUSTMENT.ID = ADJUSTMENTHISTORYWRITEOFF.WRITEOFFADJUSTMENTID
            inner join dbo.WRITEOFF on WRITEOFF.ID = WRITEOFFADJUSTMENT.WRITEOFFID
            inner join dbo.FINANCIALTRANSACTION on FINANCIALTRANSACTION.ID = WRITEOFF.REVENUEID 
            inner join dbo.CONSTITUENT on CONSTITUENT.ID = FINANCIALTRANSACTION.CONSTITUENTID
            where WRITEOFFADJUSTMENT.ID = @WRITEOFFADJUSTMENTID;

            if @@ROWCOUNT = 0
            begin
                /*since the snapshot has an FK ADJUSTMENTHISTORYSTOCK, need to create an ADJUSTMENTHISTORYSTOCK row. The needed information is 
                attached to the STOCKSALEADJUSTMENT record*/

                select
                    @WRITEOFFID = WRITEOFFADJUSTMENT.WRITEOFFID
                from dbo.WRITEOFFADJUSTMENT 
                where ID = @WRITEOFFADJUSTMENTID;

                set @ADJUSTMENTHISTORYWRITEOFFID = newid();

                insert into dbo.ADJUSTMENTHISTORYWRITEOFF(ID, WRITEOFFADJUSTMENTID, REVENUETYPE, WRITEOFFIDENTIFIER, ADJUSTMENTIDENTIFIER, CONSTITUENTNAME, DATE, ADJUSTMENTDATE, ADJUSTMENTPOSTDATE, ADJUSTMENTREASON, ADJUSTMENTREASONCODEID, ADDEDBYID, CHANGEDBYID, DATEADDED, DATECHANGED)
                    select top 1
                        @ADJUSTMENTHISTORYWRITEOFFID,
                        WRITEOFFADJUSTMENT.ID,
                        FINANCIALTRANSACTION.TYPE,
                        cast(WRITEOFFADJUSTMENT.WRITEOFFID as nvarchar(36)),
                        cast(WRITEOFFADJUSTMENT.ID as nvarchar(36)),
                        CONSTITUENT.NAME,
                        WRITEOFF.DATE,
                        WRITEOFFADJUSTMENT.DATE,
                        WRITEOFFADJUSTMENT.POSTDATE,
                        WRITEOFFADJUSTMENT.REASON,
                        WRITEOFFADJUSTMENT.REASONCODEID,
                        @CHANGEAGENTID,
                        @CHANGEAGENTID,
                        @CHANGEDATE,
                        @CHANGEDATE
                    from dbo.WRITEOFFADJUSTMENT
                    inner join dbo.WRITEOFF on WRITEOFF.ID = WRITEOFFADJUSTMENT.WRITEOFFID
                    inner join dbo.FINANCIALTRANSACTION on FINANCIALTRANSACTION.ID = WRITEOFF.REVENUEID
                    inner join dbo.CONSTITUENT on CONSTITUENT.ID = FINANCIALTRANSACTION.CONSTITUENTID
                    where WRITEOFFADJUSTMENT.ID = @WRITEOFFADJUSTMENTID;


                /*create the distribution snapshot*/
                /*JamesWill CR254668-091306 10/02/2006 Reverse the debit and credit accounts to actually capture a reversal*/
                insert into dbo.ADJUSTMENTHISTORYWRITEOFFDISTRIBUTIONSNAPSHOT(ADJUSTMENTHISTORYWRITEOFFID, TRANSACTIONTYPECODE, ACCOUNT, PROJECT, REFERENCE, AMOUNT, ADDEDBYID, CHANGEDBYID, DATEADDED, DATECHANGED, TRANSACTIONAMOUNT, ORGANIZATIONAMOUNT, BASECURRENCYID, TRANSACTIONCURRENCYID)
                    select
                        @ADJUSTMENTHISTORYWRITEOFFID,
                        case TRANSACTIONTYPECODE when 0 then 1 else 0 end,
                        ACCOUNT,
                        PROJECT,
                        REFERENCE,
                        AMOUNT,
                        @CHANGEAGENTID,
                        @CHANGEAGENTID,
                        @CHANGEDATE,
                        @CHANGEDATE,
                        TRANSACTIONAMOUNT,
                        ORGANIZATIONAMOUNT,
                        BASECURRENCYID,
                        TRANSACTIONCURRENCYID
                    from dbo.WRITEOFFGLDISTRIBUTION
                    where WRITEOFFID = @WRITEOFFID
                    and WRITEOFFGLDISTRIBUTION.OUTDATED = 0;

            end