USP_DATAFORMTEMPLATE_VIEW_MEMBERSHIPPROGRAM_DATA
The load procedure used by the view dataform template "Web Forms Membership Program Data 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. |
@NAME | nvarchar(100) | INOUT | Membership program name |
@DESCRIPTION | nvarchar(255) | INOUT | Membership program description |
@ALLOWMULTIPLEMEMBERSHIPS | bit | INOUT | Program allows multiple memberships |
@ISACTIVE | bit | INOUT | Membership program is active |
@LEVELS | xml | INOUT | Membership program levels |
@PROGRAMTYPECODE | tinyint | INOUT | |
@PROGRAMBASEDONCODE | tinyint | INOUT | |
@ADDONS | xml | INOUT |
Definition
Copy
CREATE procedure dbo.USP_DATAFORMTEMPLATE_VIEW_MEMBERSHIPPROGRAM_DATA (
@ID uniqueidentifier,
@DATALOADED bit = 0 output,
@NAME nvarchar(100) = null output,
@DESCRIPTION nvarchar(255) = null output,
@ALLOWMULTIPLEMEMBERSHIPS bit = null output,
@ISACTIVE bit = null output,
@LEVELS xml = null output,
@PROGRAMTYPECODE tinyint = null output,
@PROGRAMBASEDONCODE tinyint = null output,
@ADDONS xml = null output
)
as
set nocount on;
set @DATALOADED = 0;
select
@DATALOADED = 1,
@NAME = [MEMBERSHIPPROGRAM].[NAME],
@DESCRIPTION = [MEMBERSHIPPROGRAM].[DESCRIPTION],
@ALLOWMULTIPLEMEMBERSHIPS = [MEMBERSHIPPROGRAM].[ALLOWMULTIPLEMEMBERSHIPS],
@ISACTIVE = [MEMBERSHIPPROGRAM].[ISACTIVE],
@PROGRAMTYPECODE = [MEMBERSHIPPROGRAM].[PROGRAMTYPECODE],
@PROGRAMBASEDONCODE = [MEMBERSHIPPROGRAM].[PROGRAMBASEDONCODE]
from dbo.[MEMBERSHIPPROGRAM] with (nolock)
where [ID] = @ID;
if @DATALOADED = 1
begin
set @LEVELS = (
select
[MEMBERSHIPLEVEL].[ID],
[MEMBERSHIPLEVEL].[NAME],
[MEMBERSHIPLEVEL].[DESCRIPTION],
[MEMBERSHIPLEVEL].[MEMBERSALLOWED],
[MEMBERSHIPLEVEL].[CHILDRENALLOWED],
[MEMBERSHIPLEVEL].[CARDSALLOWED],
[MEMBERSHIPLEVELTERM].[TERMS],
[MEMBERSHIPLEVELTYPE].[TYPES],
[MEMBERSHIPLEVEL].[ISACTIVE],
case when [MICROSITEMEMBERSHIPLEVEL].[ID] is not null then 1 else 0 end as [ISONLINE],
isnull([MEMBERSHIPLEVEL_MICROSITEEMAILTEMPLATE].[EMAILTEMPLATEID], [MEMBERSHIPPROGRAM_MICROSITEEMAILTEMPLATE].[EMAILTEMPLATEID]) as ACKNOWLEDGEMENTEMAILTEMPLATEID
from dbo.[MEMBERSHIPLEVEL] with (nolock)
left join dbo.[MICROSITEMEMBERSHIPLEVEL] with (nolock)
on [MEMBERSHIPLEVEL].[ID] = [MICROSITEMEMBERSHIPLEVEL].[ID]
left join dbo.[MEMBERSHIPLEVEL_MICROSITEEMAILTEMPLATE] on
([MEMBERSHIPLEVEL].[ID] = [MEMBERSHIPLEVEL_MICROSITEEMAILTEMPLATE].[MEMBERSHIPLEVELID]) and ([MEMBERSHIPLEVEL_MICROSITEEMAILTEMPLATE].[ACTIVE] = 1)
left join dbo.[MEMBERSHIPPROGRAM_MICROSITEEMAILTEMPLATE] on
([MEMBERSHIPLEVEL].[MEMBERSHIPPROGRAMID] = [MEMBERSHIPPROGRAM_MICROSITEEMAILTEMPLATE].[MEMBERSHIPPROGRAMID]) and ([MEMBERSHIPPROGRAM_MICROSITEEMAILTEMPLATE].[ACTIVE] = 1)
cross apply ( --Don't show levels without terms
select (
select
[MEMBERSHIPLEVELTERM].[ID],
cast([MEMBERSHIPLEVELTERM].[TERMTIMELENGTH] as nvarchar(5)) + ' ' +
case [MEMBERSHIPLEVELTERM].[TERMLENGTHCODE]
when 0 then--months
case [MEMBERSHIPLEVELTERM].[TERMTIMELENGTH] when 1 then 'month' else 'months' end
when 1 then--years
case [MEMBERSHIPLEVELTERM].[TERMTIMELENGTH] when 1 then 'year' else 'years' end
end as [TERM],
[MEMBERSHIPLEVELTERM].[AMOUNT]
from dbo.[MEMBERSHIPLEVELTERM] with (nolock)
where [LEVELID] = [MEMBERSHIPLEVEL].[ID]
and [MEMBERSHIPLEVELTERM].[ISACTIVE] = 1 --excluding inactive level-term combinations, rather than adding ISACTIVE to the result and filtering in the calling code
order by [MEMBERSHIPLEVELTERM].[SEQUENCE] asc
for xml raw('ITEM'),type,elements,binary base64
) as [TERMS]
) as [MEMBERSHIPLEVELTERM]
outer apply ( --Levels don't need to have types
select (
select
[MEMBERSHIPLEVELTYPE].[ID],
[MEMBERSHIPLEVELTYPECODE].[ID] as [TYPECODEID],
[MEMBERSHIPLEVELTYPECODE].[DESCRIPTION]
from dbo.[MEMBERSHIPLEVELTYPE]
inner join dbo.[MEMBERSHIPLEVELTYPECODE] with (nolock)
on [MEMBERSHIPLEVELTYPE].[LEVELTYPECODEID] = [MEMBERSHIPLEVELTYPECODE].[ID]
where
[MEMBERSHIPLEVELTYPE].[LEVELID] = [MEMBERSHIPLEVEL].[ID] and
[MEMBERSHIPLEVELTYPECODE].[ACTIVE] = 1
order by [MEMBERSHIPLEVELTYPE].[SEQUENCE] asc
for xml raw('ITEM'),type,elements,binary base64
) as [TYPES]
) as [MEMBERSHIPLEVELTYPE]
where
[MEMBERSHIPLEVEL].[MEMBERSHIPPROGRAMID] = @ID and
[MEMBERSHIPLEVEL].[ISACTIVE] = 1
order by [MEMBERSHIPLEVEL].[SEQUENCE] asc
for xml raw('ITEM'),type,elements,root('LEVELS'),binary base64
)
set @ADDONS = (
select
a.ID,
a.NAME,
mpa.[DESCRIPTION],
mpa.PRICE,
mpa.MULTIPLEALLOWED,
a.ADDONTYPECODE as TYPECODE,
a.ADDONTYPE as TYPE
--mpa.TRANSACTIONPRICE,
--mpa.ORGANIZATIONPRICE,
--mpa.BASECURRENCYID,
--mpa.TRANSACTIONCURRENCYID,
--mpa.BASEEXCHANGERATEID,
--mpa.ORGANIZATIONEXCHANGERATEID
from [dbo].[MEMBERSHIPPROGRAMADDON] as mpa
inner join [dbo].[ADDON] as a
on mpa.ADDONID = a.ID
where [MEMBERSHIPPROGRAMID] = @ID
for xml raw('ITEM'),type,elements,root('ADDONS'),binary base64
)
end --if @DATALOADED = 1