USP_SAVE_REVERSAL_LINEITEM
Parameters
Parameter | Parameter Type | Mode | Description |
---|---|---|---|
@LINEITEMS | UDT_GENERICID | IN | |
@ADJUSTMENTID | uniqueidentifier | IN | |
@CHANGEAGENTID | uniqueidentifier | IN | |
@CHANGEDATE | datetime | IN | |
@POSTDATE | datetime | IN | |
@POSTSTATUSCODE | tinyint | IN |
Definition
Copy
create procedure dbo.USP_SAVE_REVERSAL_LINEITEM
(
@LINEITEMS UDT_GENERICID readonly,
@ADJUSTMENTID uniqueidentifier = null,
@CHANGEAGENTID uniqueidentifier = null,
@CHANGEDATE datetime = null,
@POSTDATE datetime = null,
@POSTSTATUSCODE tinyint = 1 -- FTM codes. 1 - NP, 2 - P, 3 - DNP
)
as
begin
if @CHANGEAGENTID is null
exec dbo.USP_CHANGEAGENT_GETORCREATECHANGEAGENT @CHANGEAGENTID output;
if @CHANGEDATE is null
set @CHANGEDATE = getdate();
delete from dbo.FINANCIALTRANSACTIONLINEITEM where ID in
(select
LI.ID
from
@LINEITEMS L
inner join dbo.FINANCIALTRANSACTIONLINEITEM LI on LI.REVERSEDLINEITEMID = L.ID
where
LI.POSTSTATUSCODE <> 2
and LI.FINANCIALTRANSACTIONLINEITEMADJUSTMENTID = @ADJUSTMENTID
and LI.TYPECODE = 1)
declare @REVERSALIDS table (ORIGINALID uniqueidentifier, REVERSALID uniqueidentifier)
insert into @REVERSALIDS (ORIGINALID, REVERSALID)
select
ID,
NEWID()
from @LINEITEMS
--create reversals
insert into dbo.FINANCIALTRANSACTIONLINEITEM
(ID, FINANCIALTRANSACTIONID, TRANSACTIONAMOUNT, VISIBLE, DESCRIPTION, SEQUENCE, TYPECODE,
POSTDATE, POSTSTATUSCODE, REVERSEDLINEITEMID, SOURCELINEITEMID, TARGETLINEITEMID, DELETEDON,
BASEAMOUNT, ORGAMOUNT, QUANTITY, UNITVALUE, FINANCIALTRANSACTIONLINEITEMADJUSTMENTID, BATCHID,
ADDEDBYID, CHANGEDBYID, DATEADDED, DATECHANGED)
select
R.REVERSALID, LI.FINANCIALTRANSACTIONID, LI.TRANSACTIONAMOUNT, LI.VISIBLE, LI.DESCRIPTION, LI.SEQUENCE, 1,
@POSTDATE, @POSTSTATUSCODE, LI.ID, null, null, null,
LI.BASEAMOUNT, LI.ORGAMOUNT, LI.QUANTITY, LI.UNITVALUE, @ADJUSTMENTID, LI.BATCHID,
@CHANGEAGENTID, @CHANGEAGENTID, @CHANGEDATE, @CHANGEDATE
from
@REVERSALIDS R
inner join dbo.FINANCIALTRANSACTIONLINEITEM LI on R.ORIGINALID = LI.ID
declare @ORIGINALJE table
(ORIGINALJEID uniqueidentifier, ORIGINALLIID uniqueidentifier,
REVERSALJEID uniqueidentifier, REVERSALLIID uniqueidentifier)
insert into @ORIGINALJE (ORIGINALJEID, ORIGINALLIID, REVERSALJEID, REVERSALLIID)
select
JE.ID, R.ORIGINALID, NEWID(), R.REVERSALID
from
@REVERSALIDS R
inner join dbo.JOURNALENTRY JE on JE.FINANCIALTRANSACTIONLINEITEMID = R.ORIGINALID
insert into dbo.JOURNALENTRY
(ID, FINANCIALTRANSACTIONLINEITEMID, TRANSACTIONTYPECODE, CLASSCODE, JOURNALCODEID,
SEQUENCE, TRANSACTIONAMOUNT, PERCENTAGE, SUMMARYID, BATCHID, COMMENT, POSTDATE, FINANCIALBATCHID,
GLACCOUNTID, SUBLEDGERTYPECODE, BASEAMOUNT, ORGAMOUNT, TRANSACTIONCURRENCYID,
TYPECODE, ADDEDBYID, CHANGEDBYID, DATEADDED, DATECHANGED)
select
HJE.REVERSALJEID, HJE.REVERSALLIID, case JE.TRANSACTIONTYPECODE when 1 then 0 else 1 end, JE.CLASSCODE, JE.JOURNALCODEID,
JE.SEQUENCE, JE.TRANSACTIONAMOUNT, JE.PERCENTAGE, JE.SUMMARYID, null, JE.COMMENT, @POSTDATE, JE.FINANCIALBATCHID,
JE.GLACCOUNTID, case JE.SUBLEDGERTYPECODE when 1 then 0 else 1 end, JE.BASEAMOUNT, JE.ORGAMOUNT, JE.TRANSACTIONCURRENCYID,
JE.TYPECODE, @CHANGEAGENTID, @CHANGEAGENTID, @CHANGEDATE, @CHANGEDATE
from
@ORIGINALJE HJE
inner join dbo.JOURNALENTRY JE on JE.ID = HJE.ORIGINALJEID
insert into dbo.JOURNALENTRY_EXT
(ID, PROJECT, JOURNAL, TABLENAMECODE, BATCHID, REVERSEDGLTRANSACTIONID, REVERSEDATE, DISTRIBUTIONTABLEID,
REVENUEID, GLPAYMENTMETHODREVENUETYPEMAPPINGID, OUTDATED, WRITEOFFID, PROPERTYDETAILID, STOCKSALEID,
PAYMENTMETHODCODE, LOGICALREVENUEID, GIFTINKINDSALEID, CREDITITEMID, DISCOUNTCREDITITEMID,
REVENUESPLITGIFTFEEID, REVENUESPLITGIFTAIDID, ACCOUNT, PRECALCPOSTSTATUSCODE, REVENUEPURCHASEID,
PLANNEDGIFTPAYOUTID, PRECALCORGANIZATIONEXCHANGERATEID, PRECALCBASEEXCHANGERATEID, FULLYPAIDSTATUSCODE,
BENEFITTYPECODE, ADDEDBYID, CHANGEDBYID, DATEADDED, DATECHANGED)
select
HJE.REVERSALJEID, JEX.PROJECT, JEX.JOURNAL, JEX.TABLENAMECODE, null, HJE.ORIGINALJEID, null, JEX.DISTRIBUTIONTABLEID,
JEX.REVENUEID, JEX.GLPAYMENTMETHODREVENUETYPEMAPPINGID, 1, JEX.WRITEOFFID, JEX.PROPERTYDETAILID, JEX.STOCKSALEID,
JEX.PAYMENTMETHODCODE, JEX.LOGICALREVENUEID, JEX.GIFTINKINDSALEID, JEX.CREDITITEMID, JEX.DISCOUNTCREDITITEMID,
JEX.REVENUESPLITGIFTFEEID, JEX.REVENUESPLITGIFTAIDID, JEX.ACCOUNT, JEX.PRECALCPOSTSTATUSCODE, JEX.REVENUEPURCHASEID,
JEX.PLANNEDGIFTPAYOUTID, JEX.PRECALCORGANIZATIONEXCHANGERATEID, JEX.PRECALCBASEEXCHANGERATEID, JEX.FULLYPAIDSTATUSCODE,
JEX.BENEFITTYPECODE, @CHANGEAGENTID, @CHANGEAGENTID, @CHANGEDATE, @CHANGEDATE
from
@ORIGINALJE HJE
inner join dbo.JOURNALENTRY_EXT JEX on JEX.ID = HJE.ORIGINALJEID
update JEX set
REVERSEDATE = @CHANGEDATE
from
@ORIGINALJE HJE
inner join dbo.JOURNALENTRY_EXT JEX on JEX.ID = HJE.ORIGINALJEID
end