UFN_RECURRINGGIFT_GETMISSINGINSTALLMENTS_BULK
Return
Return Type |
---|
table |
Definition
Copy
CREATE function dbo.UFN_RECURRINGGIFT_GETMISSINGINSTALLMENTS_BULK()
returns table
as
return
(
with INSTALLMENTPARAMETERS as
(
select
RECURRINGGIFTINSTALLMENT.REVENUEID,
cast(max(RECURRINGGIFTINSTALLMENT.DATE) as date) as LASTINSTALLMENTDATE
from dbo.RECURRINGGIFTINSTALLMENT
group by RECURRINGGIFTINSTALLMENT.REVENUEID
),
SCHEDULEPARAMETERS as
(
select
REVENUESCHEDULE.ID as REVENUEID,
REVENUESCHEDULE.FREQUENCYCODE,
cast(
case
when REVENUESCHEDULE.ENDDATE is null
or getdate() < REVENUESCHEDULE.ENDDATE
then getdate()
else
REVENUESCHEDULE.ENDDATE
end
as date
) as ENDDATE,
NEXTTRANSACTIONDATE
from dbo.REVENUESCHEDULE
where
-- Only return missing installments if RG is active or lapsed
REVENUESCHEDULE.STATUSCODE in (0,5)
and REVENUESCHEDULE.FREQUENCYCODE <> 4
)
select
INSTALLMENTPARAMETERS.REVENUEID,
INSTALLMENTSCHEDULE.DATE
from INSTALLMENTPARAMETERS
inner join SCHEDULEPARAMETERS on SCHEDULEPARAMETERS.REVENUEID = INSTALLMENTPARAMETERS.REVENUEID
--The "GETEARLIESTTIME" date function has been inlined here for performance (the part with "cast(@DATE as date)")...
cross apply dbo.UFN_RECURRINGGIFT_BUILDINSTALLMENTSCHEDULE(cast(isnull(INSTALLMENTPARAMETERS.LASTINSTALLMENTDATE, SCHEDULEPARAMETERS.NEXTTRANSACTIONDATE) as date), SCHEDULEPARAMETERS.ENDDATE, SCHEDULEPARAMETERS.FREQUENCYCODE) INSTALLMENTSCHEDULE
);