USP_BANKACCOUNTDEPOSIT_UPDATEPAYMENTSPOSTSTATUS

Update all payments that are linked to a deposit with the deposit's post status

Parameters

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

Definition

Copy


CREATE procedure dbo.USP_BANKACCOUNTDEPOSIT_UPDATEPAYMENTSPOSTSTATUS
(
    @DEPOSITID uniqueidentifier,
    @CHANGEAGENTID uniqueidentifier = null,
    @CURRENTDATE datetime = null
)
as
    set nocount on;

    if @CHANGEAGENTID is null
        exec dbo.USP_CHANGEAGENT_GETORCREATECHANGEAGENT @CHANGEAGENTID output;

    if @CURRENTDATE is null
        set @CURRENTDATE = GetDate();

    create table #DEPOSITS
    (
        DEPOSITID uniqueidentifier,
        POSTSTATUSCODE int,
        POSTDATE datetime
    )
    create clustered index IX_DEPOSITS_DEPOSITID on #DEPOSITS (DEPOSITID);

    insert into #DEPOSITS    
        select 
                DEPOSIT.ID,
                DEPOSIT.POSTSTATUSCODE,
                DEPOSIT.POSTDATE
        from dbo.FINANCIALTRANSACTION FT
        left join dbo.BANKACCOUNTDEPOSITPAYMENT BADP on BADP.ID = FT.ID
        left join dbo.CREDITPAYMENT CP on CP.CREDITID = FT.ID
        left join dbo.BANKACCOUNTDEPOSITCREDITPAYMENT BADCP on BADCP.ID = CP.ID
        left join dbo.BANKACCOUNTDEPOSITCORRECTION_EXT BADCX on BADCX.ID = FT.ID
        inner join dbo.FINANCIALTRANSACTION DEPOSIT  on DEPOSIT.ID = BADP.DEPOSITID 
        where DEPOSIT.ID = @DEPOSITID
        union
        select 
                DEPOSIT.ID,
                DEPOSIT.POSTSTATUSCODE,
                DEPOSIT.POSTDATE
        from dbo.FINANCIALTRANSACTION FT
        left join dbo.BANKACCOUNTDEPOSITPAYMENT BADP on BADP.ID = FT.ID
        left join dbo.CREDITPAYMENT CP on CP.CREDITID = FT.ID
        left join dbo.BANKACCOUNTDEPOSITCREDITPAYMENT BADCP on BADCP.ID = CP.ID
        left join dbo.BANKACCOUNTDEPOSITCORRECTION_EXT BADCX on BADCX.ID = FT.ID
        inner join dbo.FINANCIALTRANSACTION DEPOSIT on DEPOSIT.ID = BADCP.DEPOSITID
        where DEPOSIT.ID = @DEPOSITID
        union
        select
                DEPOSIT.ID, 
                DEPOSIT.POSTSTATUSCODE,
                DEPOSIT.POSTDATE
        from dbo.FINANCIALTRANSACTION FT
        left join dbo.BANKACCOUNTDEPOSITPAYMENT BADP on BADP.ID = FT.ID
        left join dbo.CREDITPAYMENT CP on CP.CREDITID = FT.ID
        left join dbo.BANKACCOUNTDEPOSITCREDITPAYMENT BADCP on BADCP.ID = CP.ID
        left join dbo.BANKACCOUNTDEPOSITCORRECTION_EXT BADCX on BADCX.ID = FT.ID
        inner join dbo.FINANCIALTRANSACTION DEPOSIT on (DEPOSIT.ID = FT.PARENTID and BADCX.ID is not null)
        where DEPOSIT.ID = @DEPOSITID

    update FINANCIALTRANSACTION set
        POSTSTATUSCODE = DT.POSTSTATUSCODE,    
        POSTDATE = case DT.POSTSTATUSCODE when 3 then NULL else DT.POSTDATE end,
        CHANGEDBYID = @CHANGEAGENTID
        DATECHANGED = @CURRENTDATE
    from dbo.FINANCIALTRANSACTION FT
    inner join #DEPOSITS DT on DT.DEPOSITID = FT.ID

    update FINANCIALTRANSACTIONLINEITEM set
        POSTSTATUSCODE = DT.POSTSTATUSCODE,    
        POSTDATE = case DT.POSTSTATUSCODE when 3 then NULL else DT.POSTDATE end,
        CHANGEDBYID = @CHANGEAGENTID
        DATECHANGED = @CURRENTDATE
    from dbo.FINANCIALTRANSACTIONLINEITEM FTLI
    inner join #DEPOSITS DT on DT.DEPOSITID = FTLI.FINANCIALTRANSACTIONID

    update REVENUE_EXT set
        CHANGEDBYID = @CHANGEAGENTID
        DATECHANGED = @CURRENTDATE
    from dbo.REVENUE_EXT REX
    inner join #DEPOSITS DT on DT.DEPOSITID = REX.ID

    if (select DEPOSIT.POSTSTATUSCODE from dbo.BANKACCOUNTTRANSACTION as DEPOSIT where DEPOSIT.ID = @DEPOSITID) = 1
        exec dbo.USP_DEPOSITEDIT_UPDATEREVENUEGLDISTRIBUTION @DEPOSITID, @CHANGEAGENTID
    else
    begin
        declare @CONTEXTCACHE varbinary(128); 
        set @CONTEXTCACHE = CONTEXT_INFO();

        if @CHANGEAGENTID is not null 
            set CONTEXT_INFO @CHANGEAGENTID;

    create table #DEPOSITIDS
        (
            DEPOSITID uniqueidentifier
        )
        create clustered index IX_DEPOSITIDS_DEPOSITID on #DEPOSITIDS (DEPOSITID);

        insert into #DEPOSITIDS
            select ID from FINANCIALTRANSACTION FT 
            where FT.TYPECODE in (24,25) -- Deposit correction

            and PARENTID = @DEPOSITID
            union
            -- Will not re-wtire this because CREDITGL view has complicated logic to determine CREDITPAYMENTID

            select DIST.GLTRANSACTIONID
            from dbo.BANKACCOUNTDEPOSITCREDITPAYMENT as C --view

            inner join dbo.CREDITGLDISTRIBUTION as DIST on C.ID = DIST.CREDITPAYMENTID --view

            where C.DEPOSITID = @DEPOSITID
            union
            select JE.ID
            from JOURNALENTRY JE
            inner join dbo.FINANCIALTRANSACTIONLINEITEM FTLI on JE.FINANCIALTRANSACTIONLINEITEMID = FTLI.ID
            inner join dbo.FINANCIALTRANSACTION FT on FTLI.FINANCIALTRANSACTIONID = FT.ID 
            inner join dbo.BANKACCOUNTDEPOSITPAYMENT DP on DP.ID = FT.ID            
            inner join dbo.JOURNALENTRY_EXT JEX on JE.ID = JEX.ID and JEX.TABLENAMECODE = 1
            where FTLI.DELETEDON is null
            and JEX.OUTDATED = 0
            and DP.DEPOSITID = @DEPOSITID
            union
            select JE.ID
            from JOURNALENTRY JE
            inner join dbo.JOURNALENTRY_EXT JEX on JE.ID = JEX.ID and JEX.TABLENAMECODE = 2
            inner join dbo.BANKACCOUNTDEPOSITPAYMENT DP on JEX.REVENUEPURCHASEID = DP.ID
            where JEX.OUTDATED = 0
            and DP.DEPOSITID = @DEPOSITID
            union
            select JE.ID
            from JOURNALENTRY JE
            inner join dbo.JOURNALENTRY_EXT JEX on JE.ID = JEX.ID and JEX.TABLENAMECODE = 8
            inner join dbo.BANKACCOUNTDEPOSITPAYMENT DP on JEX.LOGICALREVENUEID = DP.ID
            where JEX.OUTDATED = 0
            and DP.DEPOSITID = @DEPOSITID;

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

            delete from dbo.DEPOSITGLDISTRIBUTIONLINK
            where DEPOSITID = @DEPOSITID;

      drop table #DEPOSITS;
        drop table    #DEPOSITIDS;

        if not @CONTEXTCACHE is null 
            set CONTEXT_INFO @CONTEXTCACHE;
    end

    return 0;