UFN_PLEDGE_GETBALANCE

Returns the unpaid balance for a given pledge.

Return

Return Type
money

Parameters

Parameter Parameter Type Mode Description
@PLEDGEID uniqueidentifier IN

Definition

Copy


CREATE function [dbo].[UFN_PLEDGE_GETBALANCE]
(
  @PLEDGEID uniqueidentifier

returns money
with execute as caller
as begin
  declare @RESULT money;

  /****************************************************************************/
  --NOTE: The following objects inline balance calculations, so any updates

  --to the way pledge balances are calculated must be made in these as well.

  --

  --UFN_REVENUE_CONSTITUENTSWITHCOMMITMENTS

  --UFN_QUERY_PLEDGEREMINDEROUTPUT

  --UFN_QUERY_PLEDGEREMINDEROUTPUTDETAILS2

  --V_QUERY_PLEDGEREMINDERPROCESS

  --V_QUERY_PLEDGEREMINDERPROCESS_SEASONALADDRESSOUTPUT

  /****************************************************************************/

  select 
    @RESULT = 
      case when FINANCIALTRANSACTION.TYPECODE = 7 then --Auction donations do not have installments

        FINANCIALTRANSACTION.TRANSACTIONAMOUNT - 
        isnull((select 
                  sum(FTLI.TRANSACTIONAMOUNT) 
                from dbo.FINANCIALTRANSACTIONLINEITEM as FTLI
                inner join dbo.FINANCIALTRANSACTION as FT on FT.ID = FTLI.FINANCIALTRANSACTIONID
                where FT.PARENTID = FINANCIALTRANSACTION.ID
                and FT.TYPECODE = 20 and FTLI.DELETEDON is null
               ), 0)
      else
        FINANCIALTRANSACTION.TRANSACTIONAMOUNT - 
        (
          isnull((select 
                    sum(INSTALLMENTSPLITPAYMENT.AMOUNT) 
                  from dbo.INSTALLMENTSPLITPAYMENT 
                  where INSTALLMENTSPLITPAYMENT.PLEDGEID = @PLEDGEID), 0) + 
          isnull((select
                    sum(INSTALLMENTSPLITWRITEOFF.TRANSACTIONAMOUNT) 
                  from dbo.INSTALLMENTSPLITWRITEOFF 
                  inner join dbo.INSTALLMENTSPLIT on INSTALLMENTSPLITWRITEOFF.INSTALLMENTSPLITID = INSTALLMENTSPLIT.ID 
                  where INSTALLMENTSPLIT.PLEDGEID = @PLEDGEID), 0)
        )
      end
  from dbo.FINANCIALTRANSACTION
  where FINANCIALTRANSACTION.ID = @PLEDGEID;

  return @RESULT;
end