UFN_INSTALLMENT_GETOLDINSTALLMENTBALANCE
Returns the unpaid balance for an installment using a variable set of payments instead of the payments stored in the database.
Return
Return Type |
---|
money |
Parameters
Parameter | Parameter Type | Mode | Description |
---|---|---|---|
@INSTALLMENTID | uniqueidentifier | IN | |
@PAYMENTID | uniqueidentifier | IN |
Definition
Copy
CREATE function dbo.UFN_INSTALLMENT_GETOLDINSTALLMENTBALANCE
(
@INSTALLMENTID uniqueidentifier,
@PAYMENTID uniqueidentifier
)
returns money
with execute as caller
as begin
declare @PAYMENTS table
(
PAYMENTID uniqueidentifier,
PLEDGEID uniqueidentifier,
INSTALLMENTID uniqueidentifier,
AMOUNT money
);
declare @PLEDGEID uniqueidentifier;
if @PAYMENTID is null
return dbo.UFN_INSTALLMENT_GETINSTALLMENTBALANCE(@INSTALLMENTID);
select top 1 @PLEDGEID = REVENUEID
from dbo.INSTALLMENT
where ID = @INSTALLMENTID;
insert into @PAYMENTS
select PAYMENTID, PLEDGEID, INSTALLMENTID, AMOUNT
from dbo.INSTALLMENTPAYMENT
where PLEDGEID = @PLEDGEID and PAYMENTID <> @PAYMENTID;
declare @BALANCE money;
select @BALANCE = INSTALLMENT.AMOUNT - coalesce(sum([PAYMENTSTABLE].AMOUNT), 0)
from dbo.INSTALLMENT
left join @PAYMENTS as [PAYMENTSTABLE] on [PAYMENTSTABLE].INSTALLMENTID = INSTALLMENT.ID
where INSTALLMENT.ID = @INSTALLMENTID
group by INSTALLMENT.ID, INSTALLMENT.AMOUNT;
return @BALANCE;
end