UFN_MEMBERSHIP_WITHRENEWALWINDOW_GETEXPIRATIONDATE
Return
Return Type |
---|
datetime |
Parameters
Parameter | Parameter Type | Mode | Description |
---|---|---|---|
@MEMBERSHIPID | uniqueidentifier | IN | |
@ORIGINALTRANSACTIONEXPIRATIONDATE | datetime | IN |
Definition
Copy
create function dbo.UFN_MEMBERSHIP_WITHRENEWALWINDOW_GETEXPIRATIONDATE(@MEMBERSHIPID as uniqueidentifier, @ORIGINALTRANSACTIONEXPIRATIONDATE datetime)
returns datetime
with execute as caller
as begin
declare @RENEWALWINDOWSTARTSINMONTHS tinyint
declare @TOTALGRACEPERIODINMONTHS tinyint = 0
declare @GRACEPERIODINMONTHS tinyint = 0
declare @RENEWALRULESID uniqueidentifier
declare @ORIGINALTRANSACTIONEXTENDEDEXPIRATIONDATE datetime
select @RENEWALWINDOWSTARTSINMONTHS = ML.BEFOREEXPIRATION,
@TOTALGRACEPERIODINMONTHS = RR.AFTEREXPIRATION,
@RENEWALRULESID = RR.ID
from dbo.MEMBERSHIP M
join dbo.MEMBERSHIPLEVEL ML
on M.MEMBERSHIPLEVELID = ML.ID
join dbo.MEMBERSHIPLEVELRENEWALRULES RR
on ML.ID = RR.MEMBERSHIPLEVELID
where M.ID = @MEMBERSHIPID
if @TOTALGRACEPERIODINMONTHS > 0
begin
select @GRACEPERIODINMONTHS = R.INTERVALCODE + 1 --The code is off by one, 0 = 1 month, 1 = 2 months
from MEMBERSHIPLEVELRENEWALRULES RR
join MEMBERSHIPLEVELRENEWAL R
on RR.ID = @RENEWALRULESID
and R.ID = RR.MEMBERSHIPLEVELRENEWAL1ID
where R.STATUSCODE != 4 --Don't include any graceperiod if during that time the membership is lapsed anyway
select @GRACEPERIODINMONTHS = @GRACEPERIODINMONTHS + R.INTERVALCODE + 1 --The code is off by one, 0 = 1 month, 1 = 2 months
from MEMBERSHIPLEVELRENEWALRULES RR
join MEMBERSHIPLEVELRENEWAL R
on RR.ID = @RENEWALRULESID
and R.ID = RR.MEMBERSHIPLEVELRENEWAL2ID
where R.STATUSCODE != 4 --Don't include any graceperiod if during that time the membership is lapsed anyway
select @GRACEPERIODINMONTHS = @GRACEPERIODINMONTHS + R.INTERVALCODE + 1 --The code is off by one, 0 = 1 month, 1 = 2 months
from MEMBERSHIPLEVELRENEWALRULES RR
join MEMBERSHIPLEVELRENEWAL R
on RR.ID = @RENEWALRULESID
and R.ID = RR.MEMBERSHIPLEVELRENEWAL3ID
where R.STATUSCODE != 4 --Don't include any graceperiod if during that time the membership is lapsed anyway
end
if @GRACEPERIODINMONTHS = 13
begin
set @GRACEPERIODINMONTHS = @TOTALGRACEPERIODINMONTHS
end
if @GRACEPERIODINMONTHS > 0
begin
set @ORIGINALTRANSACTIONEXTENDEDEXPIRATIONDATE = DATEADD(month, @GRACEPERIODINMONTHS, @ORIGINALTRANSACTIONEXPIRATIONDATE)
end
else
begin
set @ORIGINALTRANSACTIONEXTENDEDEXPIRATIONDATE = @ORIGINALTRANSACTIONEXPIRATIONDATE
end
return dbo.UFN_DATE_GETLATESTTIME(@ORIGINALTRANSACTIONEXTENDEDEXPIRATIONDATE)
end