USP_DATAFORMTEMPLATE_VIEW_DAILYSALESPATRONMEMBERSHIPS
The load procedure used by the view dataform template "Daily Sales Patron Memberships View Data Form"
Parameters
Parameter | Parameter Type | Mode | Description |
---|---|---|---|
@ID | uniqueidentifier | IN | The input ID parameter used to load the fields defined on the form. |
@DATALOADED | bit | INOUT | Output parameter indicating whether or not data was actually loaded. |
@MEMBERSHIPS | xml | INOUT | MEMBERSHIPS |
Definition
Copy
CREATE procedure dbo.USP_DATAFORMTEMPLATE_VIEW_DAILYSALESPATRONMEMBERSHIPS
(
@ID uniqueidentifier,
@DATALOADED bit = 0 output,
@MEMBERSHIPS xml = null output
)
as
set nocount on;
declare @CLIENTCURRENTDATE date = dbo.UFN_TIMEZONEENTRY_GETSYSTEMDEFAULTDATEFROMUTC(getutcdate());
set @DATALOADED = 1;
set @MEMBERSHIPS = (
select
[MEMBERSHIP].[ID] as [ID],
MEMBERSHIPPROGRAM.NAME + ' - ' +
MEMBERSHIPLEVEL.NAME +
(case
when [MEMBERSHIP].[EXPIRATIONDATE] is null then
''
else
' (' + dbo.UFN_MEMBERSHIPLEVELTERM_GETVALUE([MEMBERSHIP].[MEMBERSHIPLEVELTERMID]) + ')'
end) +
(case
when [MEMBERSHIP].[MEMBERSHIPLEVELTYPECODEID] is null then
''
else
': ' + dbo.UFN_MEMBERSHIPLEVELTYPECODE_GETDESCRIPTION([MEMBERSHIP].[MEMBERSHIPLEVELTYPECODEID])
end)
as [DESCRIPTION],
case
when [MEMBERSHIP].[STATUSCODE] = 1 then [MT].[TRANSACTIONDATE]
else [MEMBERSHIP].[EXPIRATIONDATE]
end [MEMBERSHIPEXPIRATION],
case when @CLIENTCURRENTDATE > cast([MEMBERSHIP].[EXPIRATIONDATE] as date) then 1
else 0
end [ISLAPSED],
case
when cast(dateadd(month, [MEMBERSHIPLEVEL].[AFTEREXPIRATION], [MEMBERSHIP].[EXPIRATIONDATE]) as date) <= @CLIENTCURRENTDATE then 0 --Rejoin
when MEMBERSHIP.STATUSCODE = 1 then 0 --Rejoin
else 1 --Renew
end RENEWSTATUS,
(
select
CONSTITUENT.NAME
from dbo.MEMBER
inner join dbo.CONSTITUENT on MEMBER.CONSTITUENTID = CONSTITUENT.ID
where MEMBERSHIPID = MEMBERSHIP.ID
and ISDROPPED = 0
order by MEMBER.ISPRIMARY desc
for xml raw('ITEM'),type,elements, binary base64
) as OTHERMEMBERS,
(
select ID
from dbo.MEMBERSHIPLEVEL as SUBMEMBERSHIPLEVEL
where SUBMEMBERSHIPLEVEL.MEMBERSHIPPROGRAMID = MEMBERSHIPPROGRAM.ID
and SUBMEMBERSHIPLEVEL.SEQUENCE = MEMBERSHIPLEVEL.SEQUENCE + 1
) UPGRADELEVELID,
(
select TERM.ID
from dbo.MEMBERSHIPLEVEL as SUBMEMBERSHIPLEVEL
inner join dbo.MEMBERSHIPLEVELTERM TERM on TERM.LEVELID = SUBMEMBERSHIPLEVEL.ID
where SUBMEMBERSHIPLEVEL.MEMBERSHIPPROGRAMID = MEMBERSHIPPROGRAM.ID
and SUBMEMBERSHIPLEVEL.SEQUENCE = MEMBERSHIPLEVEL.SEQUENCE + 1
and TERM.SEQUENCE = MEMBERSHIPLEVELTERM.SEQUENCE + 1
) UPGRADETERMID,
MEMBER.ID as MEMBERID,
[MEMBERSHIPLEVEL].[ISACTIVE] as [MEMBERSHIPLEVELACTIVE],
[MEMBERSHIPPROGRAM].[PROGRAMTYPECODE] as PROGRAMTYPECODE,
[MEMBERSHIPPROGRAM].[PROGRAMBASEDONCODE] as PROGRAMBASEDONCODE,
[MEMBERSHIPPROGRAM].[ONEPAYMENTEACHTERM] as PROGRAMONEPAYMENTEACHTERM,
[MEMBERSHIP].[STATUSCODE] as MEMBERSHIPSTATUSCODE,
MEMBERSHIPPROGRAM.ISACTIVE as MEMBERSHIPPROGRAMISACTIVE,
MEMBERSHIPLEVELTERM.AMOUNT as TERMAMOUNT,
MEMBERSHIPLEVELTERM.BASECURRENCYID as TERMBASECURRENCYID,
MEMBERSHIPLEVELTERM.RECURRINGPAYMENTOPTION,
[MEMBERSHIP].NUMBEROFCHILDREN,
(
select
ADDON.NAME,
MEMBERSHIPADDON.QUANTITY - MEMBERSHIPADDON.NUMCANCELLED as QUANTITY
from MEMBERSHIPADDON
inner join ADDON on MEMBERSHIPADDON.ADDONID = ADDON.ID
where MEMBERSHIPADDON.MEMBERSHIPID = MEMBERSHIP.ID
and MEMBERSHIPADDON.QUANTITY - MEMBERSHIPADDON.NUMCANCELLED > 0
and MEMBERSHIPADDON.MEMBERSHIPTRANSACTIONID = dbo.UFN_MEMBERSHIP_GETLASTMEMBERSHIPTRANSACTIONID(MEMBERSHIP.ID) -- Omit addons on previous transactions
order by ADDON.NAME
for xml raw('ITEM'),type,elements, binary base64
) as ADDONS
from dbo.[MEMBER]
inner join dbo.[MEMBERSHIP] on [MEMBER].[MEMBERSHIPID] = [MEMBERSHIP].[ID]
inner join dbo.MEMBERSHIPPROGRAM on MEMBERSHIP.MEMBERSHIPPROGRAMID = MEMBERSHIPPROGRAM.ID
inner join dbo.MEMBERSHIPLEVEL on MEMBERSHIP.MEMBERSHIPLEVELID = MEMBERSHIPLEVEL.ID
inner join dbo.MEMBERSHIPLEVELTERM on MEMBERSHIP.MEMBERSHIPLEVELTERMID = MEMBERSHIPLEVELTERM.ID
left join dbo.[MEMBERSHIPTRANSACTION] [MT] on ([MEMBERSHIP].[ID] = [MT].[MEMBERSHIPID] and [MT].[ACTIONCODE] in (4,6)) and ([MT].[ID] in (select top 1 [ID] from dbo.[MEMBERSHIPTRANSACTION] [MT2] where [MT2].[ACTIONCODE] in (4,6) and [MT2].[MEMBERSHIPID] = [MEMBERSHIP].[ID] order by [MT2].[TRANSACTIONDATE] desc))
where
[MEMBER].[CONSTITUENTID] = @ID and
[MEMBER].[ISDROPPED] = 0 and
[MEMBERSHIP].[STATUSCODE] <> 2
order by
MEMBERSHIP.STATUSCODE asc, ISLAPSED asc, MEMBERSHIP.JOINDATE asc
for xml raw ('ITEM'), type, elements, root('MEMBERSHIPS'), BINARY BASE64
);
return 0;