USP_FINANCIALTRANSACTION_DELETEMULTIPLE
Deletes one or more financial transactions
Parameters
Parameter | Parameter Type | Mode | Description |
---|---|---|---|
@TRANSACTIONS | xml | IN | |
@CHANGEAGENTID | uniqueidentifier | IN |
Definition
Copy
CREATE procedure dbo.USP_FINANCIALTRANSACTION_DELETEMULTIPLE
(
@TRANSACTIONS xml,
@CHANGEAGENTID uniqueidentifier = null
)
as
begin
-- Get a table with the new transactions in it.
declare @TRANSACTIONSTABLE table
(
ID uniqueidentifier NOT NULL
)
insert into @TRANSACTIONSTABLE
(ID)
select TRANSACTIONS.item.value('(ID)[1]','uniqueidentifier')
from @TRANSACTIONS.nodes('/TRANSACTIONS/ITEM') as TRANSACTIONS(item)
--********************************************
--Unposted FT Steps
--********************************************
--Delete all transactions that are not posted
declare @CONTEXTCACHE varbinary(128) = CONTEXT_INFO()
set CONTEXT_INFO @CHANGEAGENTID
delete from dbo.FINANCIALTRANSACTION
from dbo.FINANCIALTRANSACTION
where (not exists (select FINANCIALTRANSACTIONLINEITEM.ID
from dbo.FINANCIALTRANSACTIONLINEITEM
where (FINANCIALTRANSACTIONLINEITEM.FINANCIALTRANSACTIONID = FINANCIALTRANSACTION.ID) and
(FINANCIALTRANSACTIONLINEITEM.POSTSTATUSCODE = 2)));
if @CONTEXTCACHE is not null
set CONTEXT_INFO @CONTEXTCACHE
--************************
-- Reverse all line items
--************************
-- Get the current date
declare @CURRENTDATE datetime;
set @CURRENTDATE = getdate();
declare @LINEITEMIDS UDT_GENERICID;
insert into @LINEITEMIDS
select FTLI.ID
from @TRANSACTIONSTABLE as TRANSACTIONS
inner join dbo.FINANCIALTRANSACTIONLINEITEM as FTLI_STND
on (TRANSACTIONS.ID = FTLI_STND.FINANCIALTRANSACTIONID) and (FTLI_STND.TYPECODE = 0)
inner join dbo.FINANCIALTRANSACTIONLINEITEM as FTLI
on ((TRANSACTIONS.ID = FTLI.FINANCIALTRANSACTIONID) or (FTLI_STND.ID = FTLI.SOURCELINEITEMID) or (FTLI_STND.ID = FTLI.TARGETLINEITEMID)) and (FTLI.DELETEDON is null)
where FTLI.TYPECODE != 1
-- Reverse posted standard line items and delete unposted line items
exec dbo.USP_FINANCIALTRANSACTIONLINEITEMS_REVERSE @CHANGEAGENTID, @LINEITEMIDS, @CURRENTDATE, @CURRENTDATE, 1;
--********************************************
--Posted FT Steps
--********************************************
--Set posted financial transactions as deleted
update dbo.FINANCIALTRANSACTION
set DELETEDON = @CURRENTDATE,
DATECHANGED = @CURRENTDATE,
CHANGEDBYID = @CHANGEAGENTID
from dbo.FINANCIALTRANSACTION as FT
inner join @TRANSACTIONSTABLE as TRANSACTIONS
on FT.ID = TRANSACTIONS.ID
inner join dbo.FINANCIALTRANSACTIONLINEITEM as FTLI_STND
on (TRANSACTIONS.ID = FTLI_STND.FINANCIALTRANSACTIONID) and (FTLI_STND.TYPECODE = 0)
inner join FINANCIALTRANSACTIONLINEITEM as FTLI
on ((TRANSACTIONS.ID = FTLI.FINANCIALTRANSACTIONID) or (FTLI_STND.ID = FTLI.SOURCELINEITEMID) or (FTLI_STND.ID = FTLI.TARGETLINEITEMID))
end