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