USP_DEPOSITEDIT_UPDATEREVENUEGLDISTRIBUTION

Update the revenue's GL distribution after a change in the deposit.

Parameters

Parameter Parameter Type Mode Description
@DEPOSITID uniqueidentifier IN
@CHANGEAGENTID uniqueidentifier IN

Definition

Copy


CREATE procedure dbo.USP_DEPOSITEDIT_UPDATEREVENUEGLDISTRIBUTION
(
    @DEPOSITID uniqueidentifier
    ,@CHANGEAGENTID uniqueidentifier = null
)as 
begin
    if @CHANGEAGENTID is null  
        exec dbo.USP_CHANGEAGENT_GETORCREATECHANGEAGENT @CHANGEAGENTID output

    declare @CURRENTDATE datetime
    set @CURRENTDATE = getdate();

    declare @CONTEXTCACHE varbinary(128); 
    set @CONTEXTCACHE = CONTEXT_INFO();

    if @CHANGEAGENTID is not null 
        set CONTEXT_INFO @CHANGEAGENTID;

    delete from dbo.DEPOSITGLDISTRIBUTIONLINK
    where DEPOSITID = @DEPOSITID;

    create table #GLDEPOSITS
    (
        DEPOSITID uniqueidentifier
    )
    create clustered index IX_GLDEPOSITS_DEPOSITID on #GLDEPOSITS (DEPOSITID);

    insert into #GLDEPOSITS
        select J.ID as DEPOSITID
        from JOURNALENTRY J
        inner join JOURNALENTRY_EXT JE on J.ID = JE.ID
        inner join dbo.FINANCIALTRANSACTIONLINEITEM on J.FINANCIALTRANSACTIONLINEITEMID = FINANCIALTRANSACTIONLINEITEM.ID 
        inner join dbo.FINANCIALTRANSACTION on FINANCIALTRANSACTIONLINEITEM.FINANCIALTRANSACTIONID = FINANCIALTRANSACTION.ID 
        inner join dbo.BANKACCOUNTDEPOSITPAYMENT DP on DP.ID = FINANCIALTRANSACTION.ID 
        where JE.OUTDATED = 0 and DP.DEPOSITID = @DEPOSITID
        union
        select J.ID as DEPOSITID
        from JOURNALENTRY J
        inner join JOURNALENTRY_EXT JE on J.ID = JE.ID
        inner join dbo.BANKACCOUNTDEPOSITPAYMENT DP on JE.REVENUEPURCHASEID = DP.ID
        where JE.OUTDATED = 0 and DP.DEPOSITID = @DEPOSITID
        union
        select J.ID as DEPOSITID
        from JOURNALENTRY J
        inner join JOURNALENTRY_EXT JE on J.ID = JE.ID
        inner join dbo.BANKACCOUNTDEPOSITPAYMENT DP on JE.LOGICALREVENUEID = DP.ID
        where JE.OUTDATED = 0 and DP.DEPOSITID = @DEPOSITID;

        delete dbo.JOURNALENTRY 
        from dbo.JOURNALENTRY
        inner join  #GLDEPOSITS on #GLDEPOSITS.DEPOSITID = JOURNALENTRY.ID;

    if not @CONTEXTCACHE is null 
        set CONTEXT_INFO @CONTEXTCACHE;

    declare @REVENUEID uniqueidentifier;
    declare revenueCursor CURSOR for
    select ID from dbo.BANKACCOUNTDEPOSITPAYMENT where DEPOSITID = @DEPOSITID;

    open revenueCursor;

    fetch next from revenueCursor into @REVENUEID

    while @@FETCH_STATUS=0
    begin
        exec dbo.USP_SAVE_REVENUEGLDISTRIBUTION @REVENUEID, @CHANGEAGENTID, @CURRENTDATE;
        exec dbo.USP_SAVE_AUCTIONPURCHASEGLDISTRIBUTION @REVENUEID, @CHANGEAGENTID, @CURRENTDATE;
        if exists(select 1 from dbo.REVENUESPLITGIFTFEE inner join dbo.REVENUESPLIT on REVENUESPLITGIFTFEE.ID=REVENUESPLIT.ID where REVENUESPLIT.REVENUEID = @REVENUEID and REVENUESPLITGIFTFEE.WAIVED <> 1)
            exec dbo.USP_SAVE_GIFTFEEGLDISTRIBUTION @REVENUEID, @CHANGEAGENTID, @CURRENTDATE;
        fetch next from revenueCursor into @REVENUEID;
    end

    close revenueCursor;
    deallocate revenueCursor;

    declare @XML xml;

    set @XML = 
    (select 0 [AMOUNT], [ID], '' [PAYMENTMETHOD], GETDATE() [TRANSACTIONDATE], '' [TRANSACTIONTYPE]
    from dbo.BANKACCOUNTDEPOSITPAYMENT
    where DEPOSITID = @DEPOSITID
    for xml raw('ITEM'),type,elements,root('PAYMENTS'),BINARY BASE64);

    exec dbo.USP_BANKACCOUNTDEPOSIT_OVERWRITEMULTIPLEPAYMENTSDEBITACCOUNTS @DEPOSITID, @XML, @CHANGEAGENTID, @CURRENTDATE;

  drop table #GLDEPOSITS;
end