USP_ADJUSTMENTHISTORY_WRITEOFF_SAVEHISTORY
Store historical writeoff adjustment information for reporting purposes.
Parameters
Parameter | Parameter Type | Mode | Description |
---|---|---|---|
@WRITEOFFID | uniqueidentifier | IN | |
@CHANGEAGENTID | uniqueidentifier | IN | |
@CHANGEDATE | datetime | IN | |
@WRITEOFFADJUSTMENTID | uniqueidentifier | IN |
Definition
Copy
CREATE procedure dbo.USP_ADJUSTMENTHISTORY_WRITEOFF_SAVEHISTORY
(
@WRITEOFFID uniqueidentifier,
@CHANGEAGENTID uniqueidentifier,
@CHANGEDATE datetime,
@WRITEOFFADJUSTMENTID uniqueidentifier
)
as
set nocount on;
/*Before calling this procedure, be sure that you call USP_SAVE_WRITEOFFADJUSTMENT and then save changes to the WRITEOFF table*/
declare @ADJUSTMENTCOUNT int;
declare @PREVIOUSWRITEOFFADJUSTMENTID uniqueidentifier;
declare @PREVIOUSADJUSTMENTHISTORYWRITEOFFID uniqueidentifier;
declare @ADJUSTMENTHISTORYWRITEOFFID uniqueidentifier;
declare @EDITINGADJUSTMENT bit;
if @CHANGEDATE is null
set @CHANGEDATE = getdate();
select @ADJUSTMENTCOUNT = count(ID)
from dbo.WRITEOFFADJUSTMENT
where WRITEOFFADJUSTMENT.WRITEOFFID = @WRITEOFFID;
select @ADJUSTMENTHISTORYWRITEOFFID = ID
from dbo.ADJUSTMENTHISTORYWRITEOFF
where WRITEOFFADJUSTMENTID = @WRITEOFFADJUSTMENTID
/*if this is a new adjustment, there will only be a header row (no details or distributions). Otherwise, it's an edit*/
if (select count(ID) from dbo.ADJUSTMENTHISTORYWRITEOFFDETAIL where ADJUSTMENTHISTORYWRITEOFFID = @ADJUSTMENTHISTORYWRITEOFFID) = 0
and (select count(ID) from dbo.ADJUSTMENTHISTORYWRITEOFFDISTRIBUTION where ADJUSTMENTHISTORYWRITEOFFID = @ADJUSTMENTHISTORYWRITEOFFID) = 0
set @EDITINGADJUSTMENT = 0;
else
set @EDITINGADJUSTMENT = 1;
/*delete the previous report information so we can recreate it*/
delete from ADJUSTMENTHISTORYWRITEOFFDETAIL where ADJUSTMENTHISTORYWRITEOFFID = @ADJUSTMENTHISTORYWRITEOFFID;
/*Log the detail for this adjustment*/
/*Record the GL reversal and adjustment information*/
if @EDITINGADJUSTMENT = 0 /*if this is a new adjustment, store the reversal that will take place*/
begin
insert into dbo.ADJUSTMENTHISTORYWRITEOFFDISTRIBUTION(ADJUSTMENTHISTORYWRITEOFFID, TYPECODE, TRANSACTIONTYPECODE, ACCOUNT, PROJECT, REFERENCE, AMOUNT, ADDEDBYID, CHANGEDBYID, DATEADDED, DATECHANGED, TRANSACTIONAMOUNT, ORGANIZATIONAMOUNT, BASECURRENCYID, TRANSACTIONCURRENCYID)
select
@ADJUSTMENTHISTORYWRITEOFFID,
0, /*Reversal*/
TRANSACTIONTYPECODE,
ACCOUNT,
PROJECT,
REFERENCE,
AMOUNT,
@CHANGEAGENTID,
@CHANGEAGENTID,
@CHANGEDATE,
@CHANGEDATE,
TRANSACTIONAMOUNT,
ORGANIZATIONAMOUNT,
BASECURRENCYID,
TRANSACTIONCURRENCYID
from dbo.ADJUSTMENTHISTORYWRITEOFFDISTRIBUTIONSNAPSHOT
where ADJUSTMENTHISTORYWRITEOFFID = @ADJUSTMENTHISTORYWRITEOFFID;
end
if @ADJUSTMENTCOUNT > 1 /*if this is not the first adjustment, we need to copy our reversal information to be the adjustment information for the last adjustment */
begin
select top 1
@PREVIOUSWRITEOFFADJUSTMENTID = ID
from dbo.WRITEOFFADJUSTMENT
where WRITEOFFID = @WRITEOFFID
and ID <> @WRITEOFFADJUSTMENTID
order by TSLONG desc;
/*If there is a previous adjustment, write the same reversal as the "adjusted" portion of the previous adjustment */
if not @PREVIOUSWRITEOFFADJUSTMENTID is null
begin
select
@PREVIOUSADJUSTMENTHISTORYWRITEOFFID = ID
from dbo.ADJUSTMENTHISTORYWRITEOFF
where WRITEOFFADJUSTMENTID = @PREVIOUSWRITEOFFADJUSTMENTID;
/*first, delete the previous adjustment record*/
delete from dbo.ADJUSTMENTHISTORYWRITEOFFDISTRIBUTION where ADJUSTMENTHISTORYWRITEOFFID = @PREVIOUSADJUSTMENTHISTORYWRITEOFFID and TYPECODE = 1;
/*then insert the updated ones*/
insert into dbo.ADJUSTMENTHISTORYWRITEOFFDISTRIBUTION(ADJUSTMENTHISTORYWRITEOFFID, TYPECODE, TRANSACTIONTYPECODE, ACCOUNT, PROJECT, REFERENCE, AMOUNT, ADDEDBYID, CHANGEDBYID, DATEADDED, DATECHANGED, TRANSACTIONAMOUNT, ORGANIZATIONAMOUNT, BASECURRENCYID, TRANSACTIONCURRENCYID)
select
@PREVIOUSADJUSTMENTHISTORYWRITEOFFID,
1, /*Adjustment*/
TRANSACTIONTYPECODE,
ACCOUNT,
PROJECT,
REFERENCE,
AMOUNT,
@CHANGEAGENTID,
@CHANGEAGENTID,
@CHANGEDATE,
@CHANGEDATE,
TRANSACTIONAMOUNT,
ORGANIZATIONAMOUNT,
BASECURRENCYID,
TRANSACTIONCURRENCYID
from dbo.ADJUSTMENTHISTORYWRITEOFFDISTRIBUTIONSNAPSHOT
where ADJUSTMENTHISTORYWRITEOFFID = @ADJUSTMENTHISTORYWRITEOFFID;
end
end