UFN_PLEDGE_GETBALANCEASOF_BULK

Return

Return Type
table

Parameters

Parameter Parameter Type Mode Description
@ASOFDATE datetime IN

Definition

Copy


create function dbo.UFN_PLEDGE_GETBALANCEASOF_BULK
(
    @ASOFDATE datetime
)
returns table
as
return
(
    select
        REVENUE.ID
        ,(REVENUE.TRANSACTIONAMOUNT - isnull(PAYMENT.AMOUNT, 0) - isnull(WRITEOFF.AMOUNT, 0)) [BALANCE]
        ,REVENUE.TRANSACTIONCURRENCYID
        ,REVENUE.CALCULATEDDATE [DATE]
        ,REVENUE.TYPECODE [TRANSACTIONTYPECODE]
        ,REVENUE.TYPE [TRANSACTIONTYPE]
        ,REVENUE.CONSTITUENTID
        ,REVENUE.TRANSACTIONAMOUNT
    from dbo.FINANCIALTRANSACTION REVENUE with (nolock)
    inner join dbo.REVENUE_EXT on REVENUE.ID = REVENUE_EXT.ID
    left join (
        select INSTALLMENTSPLITPAYMENT.PLEDGEID, SUM(PAY_LI.TRANSACTIONAMOUNT) AMOUNT
        from dbo.INSTALLMENTSPLITPAYMENT
        inner join dbo.FINANCIALTRANSACTIONLINEITEM PAY_LI on PAY_LI.ID = INSTALLMENTSPLITPAYMENT.PAYMENTID
        inner join dbo.REVENUESPLIT_EXT RSE on RSE.ID = PAY_LI.ID
        inner join dbo.FINANCIALTRANSACTION PAY on PAY.ID = PAY_LI.FINANCIALTRANSACTIONID
        where PAY_LI.DELETEDON is null and PAY_LI.TYPECODE = 0
            and PAY.CALCULATEDDATE <= @ASOFDATE
        group by INSTALLMENTSPLITPAYMENT.PLEDGEID
    ) PAYMENT on PAYMENT.PLEDGEID = REVENUE.ID
    left join (
        select INSTALLMENTSPLIT.PLEDGEID, SUM(INSTALLMENTSPLITWRITEOFF.TRANSACTIONAMOUNT) AMOUNT
        from dbo.INSTALLMENTSPLITWRITEOFF
        inner join dbo.INSTALLMENTSPLIT on INSTALLMENTSPLITWRITEOFF.INSTALLMENTSPLITID = INSTALLMENTSPLIT.ID
        inner join dbo.FINANCIALTRANSACTION WRITEOFF on INSTALLMENTSPLITWRITEOFF.WRITEOFFID = WRITEOFF.ID
        where WRITEOFF.TYPECODE = 20 and WRITEOFF.DELETEDON is null
            and WRITEOFF.CALCULATEDDATE <= @ASOFDATE
        group by INSTALLMENTSPLIT.PLEDGEID
    ) WRITEOFF on WRITEOFF.PLEDGEID = REVENUE.ID
    where REVENUE.TYPECODE in (0,1,2,3,4,5,6,7,8,9) and REVENUE.DELETEDON is null 
)