UFN_RECURRINGGIFT_GETREMAININGBALANCE
Return
Return Type |
---|
money |
Parameters
Parameter | Parameter Type | Mode | Description |
---|---|---|---|
@ID | uniqueidentifier | IN |
Definition
Copy
CREATE function dbo.UFN_RECURRINGGIFT_GETREMAININGBALANCE
(
@ID uniqueidentifier
)
returns money
with execute as caller
as begin
declare @CURRENTINSTALLMENTDATE datetime;
declare @RGENDDATE datetime;
declare @BALANCE money = 0.00
declare @INSTALLMENTID uniqueidentifier;
declare @RGAMOUNT money = 0.00
select @RGENDDATE = dbo.UFN_DATE_GETLATESTTIME(ENDDATE)
from dbo.REVENUESCHEDULE
where ID = @ID
if @RGENDDATE is null
return null;
select @RGAMOUNT = TRANSACTIONAMOUNT
from dbo.FINANCIALTRANSACTION
where ID = @ID
select top 1 @INSTALLMENTID = ID,
@CURRENTINSTALLMENTDATE = DATE
from dbo.RECURRINGGIFTINSTALLMENT
where REVENUEID = @ID
and STATUSCODE in(0,1)
order by DATE;
set @BALANCE = dbo.UFN_RECURRINGGIFTINSTALLMENT_GETINSTALLMENTBALANCE(@INSTALLMENTID)
set @CURRENTINSTALLMENTDATE = dbo.UFN_REVENUE_GETNEXTTRANSACTIONDATE_BYID_1_1(@ID, @CURRENTINSTALLMENTDATE)
while @CURRENTINSTALLMENTDATE <= @RGENDDATE
begin
select top 1 @INSTALLMENTID = ID
from dbo.RECURRINGGIFTINSTALLMENT
where REVENUEID = @ID
and STATUSCODE in(0,1)
and DATE >= @CURRENTINSTALLMENTDATE
order by DATE;
if @INSTALLMENTID is not null
set @BALANCE = @BALANCE + dbo.UFN_RECURRINGGIFTINSTALLMENT_GETINSTALLMENTBALANCE(@INSTALLMENTID)
else
set @BALANCE = @BALANCE + @RGAMOUNT
set @CURRENTINSTALLMENTDATE = dbo.UFN_REVENUE_GETNEXTTRANSACTIONDATE_BYID_1_1(@ID, @CURRENTINSTALLMENTDATE)
end
return @BALANCE
end