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