UFN_REMINDER_GETPAIDTHROUGHDATE
Get the next paid through date for a recurring gift or a pledge.
Return
Return Type |
---|
datetime |
Parameters
Parameter | Parameter Type | Mode | Description |
---|---|---|---|
@REVENUEID | uniqueidentifier | IN | |
@TRANSACTIONTYPECODE | tinyint | IN |
Definition
Copy
CREATE function dbo.UFN_REMINDER_GETPAIDTHROUGHDATE(
@REVENUEID uniqueidentifier,
@TRANSACTIONTYPECODE tinyint
)
returns datetime
with execute as caller
as begin
declare @PAIDTHROUGH datetime
if @TRANSACTIONTYPECODE = 2
begin
select @PAIDTHROUGH = max(RECURRINGGIFTINSTALLMENT.DATE) from dbo.RECURRINGGIFTINSTALLMENT
where REVENUEID = @REVENUEID and dbo.UFN_RECURRINGGIFTINSTALLMENT_GETINSTALLMENTBALANCE(ID) = 0
return @PAIDTHROUGH
end
--Reworked to account for pledge overpayment to balance
--Find the first unpaid installment. If the installment is not the first one, return the date of the previous installment.
--If the first unpaid installment is null, return the date of the last installment (it is fully paid off).
--Else, return null.
declare @FIRSTUNPAIDINSTALLMENTID uniqueidentifier;
declare @FIRSTUNPAIDINSTALLMENTSEQUENCE int;
select top 1 @FIRSTUNPAIDINSTALLMENTID = ID, @FIRSTUNPAIDINSTALLMENTSEQUENCE = SEQUENCE
from dbo.INSTALLMENT
where REVENUEID = @REVENUEID
and dbo.UFN_INSTALLMENT_GETINSTALLMENTBALANCE(ID) > 0
order by DATE asc;
if @FIRSTUNPAIDINSTALLMENTID is not null and @FIRSTUNPAIDINSTALLMENTSEQUENCE > 1
select @PAIDTHROUGH = DATE
from dbo.INSTALLMENT
where REVENUEID = @REVENUEID and SEQUENCE = (@FIRSTUNPAIDINSTALLMENTSEQUENCE - 1)
else if @FIRSTUNPAIDINSTALLMENTID is null
select @PAIDTHROUGH = max(DATE)
from dbo.INSTALLMENT
where REVENUEID = @REVENUEID
else
select @PAIDTHROUGH = null;
return @PAIDTHROUGH;
end