UFN_RECURRINGGIFT_BUILDINSTALLMENTSCHEDULE
Return
Return Type |
---|
table |
Parameters
Parameter | Parameter Type | Mode | Description |
---|---|---|---|
@NEXTTRANSACTIONDATE | datetime | IN | |
@ENDDATE | datetime | IN | |
@FREQUENCY | tinyint | IN |
Definition
Copy
create function dbo.UFN_RECURRINGGIFT_BUILDINSTALLMENTSCHEDULE(
@NEXTTRANSACTIONDATE datetime,
@ENDDATE datetime,
@FREQUENCY tinyint
)
returns @INSTALLMENTS table (DATE date)
as begin
declare @CURRENTDATE datetime = getdate();
declare @NUMBEROFINSTALLMENTS smallint;
if datediff(day,@CURRENTDATE,@ENDDATE) > 0
set @ENDDATE = @CURRENTDATE
if @FREQUENCY = 0 --ANNUALLY
set @NUMBEROFINSTALLMENTS = datediff(year, @NEXTTRANSACTIONDATE, @ENDDATE)
if @FREQUENCY = 1 --SEMI-ANNUALLY
set @NUMBEROFINSTALLMENTS = datediff(month, @NEXTTRANSACTIONDATE, @ENDDATE) / 6
if @FREQUENCY = 2 --QUARTYERLY
set @NUMBEROFINSTALLMENTS = datediff(quarter, @NEXTTRANSACTIONDATE, @ENDDATE)
if @FREQUENCY = 3 --MONTHLY
set @NUMBEROFINSTALLMENTS = datediff(month, @NEXTTRANSACTIONDATE, @ENDDATE)
if @FREQUENCY = 6 --BIMONTHLY
set @NUMBEROFINSTALLMENTS = datediff(month, @NEXTTRANSACTIONDATE, @ENDDATE) / 2
if @FREQUENCY = 7 --SEMI-MONTHLY
set @NUMBEROFINSTALLMENTS = (datediff(day, @NEXTTRANSACTIONDATE, @ENDDATE) / 15)
if @FREQUENCY = 8 --BIWEEKLY
set @NUMBEROFINSTALLMENTS = datediff(day, @NEXTTRANSACTIONDATE, @ENDDATE) / 14
if @FREQUENCY = 9 --WEEKLY
set @NUMBEROFINSTALLMENTS = datediff(day, @NEXTTRANSACTIONDATE, @ENDDATE) / 7
insert into @INSTALLMENTS
select
dbo.UFN_REVENUE_GETNEXTTRANSACTIONDATE_BYINSTALLMENTS(NUM, @FREQUENCY,@NEXTTRANSACTIONDATE)
from dbo.NUMBERS
where NUM <=@NUMBEROFINSTALLMENTS and NUM>0 and dbo.UFN_REVENUE_GETNEXTTRANSACTIONDATE_BYINSTALLMENTS(NUM, @FREQUENCY,@NEXTTRANSACTIONDATE) < @ENDDATE
return;
end