UFN_PLEDGE_GETDESIGNATIONBALANCEINCURRENCY_BULK

Returns the unpaid balance for a given pledge and designation in the given currency.

Return

Return Type
table

Parameters

Parameter Parameter Type Mode Description
@CURRENCYID uniqueidentifier IN

Definition

Copy


            CREATE function dbo.UFN_PLEDGE_GETDESIGNATIONBALANCEINCURRENCY_BULK
            (
                @CURRENCYID uniqueidentifier
            )
      returns table
      as 
      return(
        select
          REVENUE.ID,
          REVENUESPLIT.DESIGNATIONID,
          sum(
          case when @CURRENCYID <> REVENUE.TRANSACTIONCURRENCYID then
            case when dbo.UFN_CURRENCYEXCHANGERATE_GETLATESTINCLUDEEXPIRED(REVENUE.TRANSACTIONCURRENCYID, @CURRENCYID, getdate(), 1, null) is not null then
              dbo.UFN_CURRENCY_CONVERT(REVENUESPLIT.TRANSACTIONAMOUNT - (coalesce((Q.PAYMENTS), 0) + coalesce((P.WRITEOFFS), 0)), dbo.UFN_CURRENCYEXCHANGERATE_GETLATESTINCLUDEEXPIRED(REVENUE.TRANSACTIONCURRENCYID, @CURRENCYID, getdate(), 1, null))
            else
              dbo.UFN_CURRENCY_CONVERTINVERSE(REVENUESPLIT.TRANSACTIONAMOUNT - (coalesce((Q.PAYMENTS), 0) + coalesce((P.WRITEOFFS), 0)), dbo.UFN_CURRENCYEXCHANGERATE_GETLATESTINCLUDEEXPIRED(REVENUE.TRANSACTIONCURRENCYID, @CURRENCYID, getdate(), 1, null))
            end
          else
            REVENUESPLIT.TRANSACTIONAMOUNT - (coalesce((Q.PAYMENTS), 0) + coalesce((P.WRITEOFFS), 0))
          end
          ) as BALANCEINCURRENCY
        from dbo.REVENUESPLIT with (nolock)
        inner join dbo.REVENUE on REVENUE.ID = REVENUESPLIT.REVENUEID
        left join (
            select sum(INSTALLMENTSPLITPAYMENT.AMOUNT) as PAYMENTS,INSTALLMENTSPLITPAYMENT.PLEDGEID as PAYMENTREVENUEID,INSTALLMENTSPLIT.DESIGNATIONID PAYMENTDESIGNATIONID
            from dbo.INSTALLMENTSPLITPAYMENT 
            inner join INSTALLMENTSPLIT on INSTALLMENTSPLITPAYMENT.INSTALLMENTSPLITID = INSTALLMENTSPLIT.ID
            group by INSTALLMENTSPLITPAYMENT.PLEDGEID , INSTALLMENTSPLIT.DESIGNATIONID
          ) as Q on Q.PAYMENTREVENUEID = REVENUE.ID and Q.PAYMENTDESIGNATIONID=REVENUESPLIT.DESIGNATIONID
          left join(
              select sum(INSTALLMENTSPLITWRITEOFF.TRANSACTIONAMOUNT) as WRITEOFFS,WRITEOFF.REVENUEID WRITEOFFREVENUEID,INSTALLMENTSPLIT.DESIGNATIONID WRITEOFFDESIGNATIONID
              from dbo.WRITEOFF 
              inner join dbo.INSTALLMENTSPLITWRITEOFF on WRITEOFF.ID = INSTALLMENTSPLITWRITEOFF.WRITEOFFID 
              inner join INSTALLMENTSPLIT on INSTALLMENTSPLITWRITEOFF.INSTALLMENTSPLITID = INSTALLMENTSPLIT.ID
              group by WRITEOFF.REVENUEID,INSTALLMENTSPLIT.DESIGNATIONID
          ) as P on P.WRITEOFFREVENUEID=REVENUE.ID and P.WRITEOFFDESIGNATIONID = REVENUESPLIT.DESIGNATIONID
        group by REVENUESPLIT.DESIGNATIONID,REVENUE.ID
      )