UFN_RECURRINGGIFTINSTALLMENT_GETINSTALLMENTBALANCEIGNOREPAYMENT
Returns the unpaid balance for a given recurring gift installment.
Return
Return Type |
---|
money |
Parameters
Parameter | Parameter Type | Mode | Description |
---|---|---|---|
@INSTALLMENTID | uniqueidentifier | IN | |
@PAYMENTID | uniqueidentifier | IN |
Definition
Copy
CREATE function dbo.UFN_RECURRINGGIFTINSTALLMENT_GETINSTALLMENTBALANCEIGNOREPAYMENT
(
@INSTALLMENTID uniqueidentifier,
@PAYMENTID uniqueidentifier
)
returns money
with execute as caller
as begin
declare @BALANCE money;
with WRITEOFF as (
select max(w.TYPECODE) TYPECODE, sum(iw.TRANSACTIONAMOUNT) AMOUNT
from dbo.RECURRINGGIFTINSTALLMENTWRITEOFF iw
inner join dbo.RECURRINGGIFTWRITEOFF w on w.ID = iw.WRITEOFFID
where iw.RECURRINGGIFTINSTALLMENTID = @INSTALLMENTID
and (w.PAYMENTID <> @PAYMENTID or w.PAYMENTID is null)
)
select
@BALANCE = case when WRITEOFF.TYPECODE = 1 then 0 else
isnull(e.OLDAMOUNT,i.TRANSACTIONAMOUNT)
- coalesce(
(
select sum(RECURRINGGIFTINSTALLMENTPAYMENT.AMOUNT)
from dbo.RECURRINGGIFTINSTALLMENTPAYMENT
where RECURRINGGIFTINSTALLMENTPAYMENT.RECURRINGGIFTINSTALLMENTID = @INSTALLMENTID
and RECURRINGGIFTINSTALLMENTPAYMENT.PAYMENTID <> @PAYMENTID
)
, 0)
- coalesce(WRITEOFF.AMOUNT, 0) end
from dbo.RECURRINGGIFTINSTALLMENT i
left join dbo.RECURRINGGIFTINSTALLMENTEVENT e on e.RECURRINGGIFTINSTALLMENTID = i.ID and e.PAYMENTID = @PAYMENTID
outer apply WRITEOFF
where i.ID = @INSTALLMENTID;
return @BALANCE;
end