UFN_MEMBERSHIPPROGRAM_MEMBERSHIPSASOF
for a specified membership program, returns table of memberships and related data as of a specified date
Return
Return Type |
---|
table |
Parameters
Parameter | Parameter Type | Mode | Description |
---|---|---|---|
@MEMBERSHIPPROGRAMID | uniqueidentifier | IN | |
@ASOF | date | IN |
Definition
Copy
CREATE function dbo.UFN_MEMBERSHIPPROGRAM_MEMBERSHIPSASOF
(
@MEMBERSHIPPROGRAMID uniqueidentifier,
@ASOF date
)
returns table
as
return
(
select
LATESTTRANSACTION.MEMBERSHIPID,
LATESTTRANSACTION.MEMBERSHIPLEVELID,
LATESTTRANSACTION.ACTIONCODE,
LATESTTRANSACTION.EXPIRATIONDATE
from
dbo.MEMBERSHIP
cross apply (
select top 1
MEMBERSHIPTRANSACTION.MEMBERSHIPID,
MEMBERSHIPTRANSACTION.MEMBERSHIPLEVELID,
MEMBERSHIPTRANSACTION.ACTIONCODE,
MEMBERSHIPTRANSACTION.EXPIRATIONDATE
from
dbo.MEMBERSHIPTRANSACTION
where
MEMBERSHIPTRANSACTION.MEMBERSHIPID = MEMBERSHIP.ID
and convert(date, TRANSACTIONDATE) <= @ASOF
order by
MEMBERSHIPTRANSACTION.TRANSACTIONDATE desc,
MEMBERSHIPTRANSACTION.DATEADDED desc
) as LATESTTRANSACTION
where
MEMBERSHIP.MEMBERSHIPPROGRAMID = @MEMBERSHIPPROGRAMID
-- This function was originally written to filter out expired memberships as of the given date
-- so this is added to keep the functionality consistent with the way it used to work
-- though we may one day let the caller filter out expired.
and (LATESTTRANSACTION.EXPIRATIONDATE is null or (dbo.UFN_MEMBERSHIP_WITHRENEWALWINDOW_GETNOLONGERACTIVEDATE(MEMBERSHIP.ID, LATESTTRANSACTION.EXPIRATIONDATE) >= @ASOF))
and MEMBERSHIP.STATUSCODE <> 2
)