USP_DATAFORMTEMPLATE_VIEW_DAILYSALEITEMBUTTONS
The load procedure used by the view dataform template "Daily Sale Item Buttons"
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. |
@DAILYADMISSIONBUTTONS | xml | INOUT | DAILYADMISSIONBUTTONS |
@MEMBERSHIPBUTTONS | xml | INOUT | MEMBERSHIPBUTTONS |
@MEMBERSHIPRENEWBUTTONS | xml | INOUT | MEMBERSHIPRENEWBUTTONS |
@DISCOUNTBUTTONS | xml | INOUT | DISCOUNTBUTTONS |
@DONATIONBUTTONS | xml | INOUT | DONATIONBUTTONS |
@SCHEDULEDPROGRAMBUTTONS | xml | INOUT | SCHEDULEDPROGRAMBUTTONS |
@HASCONFIGUREDDISCOUNTS | bit | INOUT | System has configured discounts |
@HASCONFIGUREDSCHEDULEDPROGRAMS | bit | INOUT | System has scheduled programs |
@EVENTREGISTRATIONBUTTONS | xml | INOUT | EVENTREGISTRATIONBUTTONS |
@HASCONFIGUREDEVENTREGISTRATIONS | bit | INOUT | System has scheduled programs |
@COMBINATIONBUTTONS | xml | INOUT | COMBINATIONBUTTONS |
@MEMBERSHIPPROMOBUTTONS | xml | INOUT | MEMBERSHIPPROMOBUTTONS |
@HASCONFIGUREDMERCHANDISE | bit | INOUT | System has configured merchandise |
@HASCONFIGUREDMEMBERSHIPS | bit | INOUT | System has configured memberships |
@HASMIDTERMUPGRADES | bit | INOUT | Patron has mid-term membership upgrade available |
@GENERICBUTTONS | xml | INOUT | GENERICBUTTONS |
Definition
Copy
CREATE procedure dbo.USP_DATAFORMTEMPLATE_VIEW_DAILYSALEITEMBUTTONS
(
@ID uniqueidentifier,
@DATALOADED bit = 0 output,
@DAILYADMISSIONBUTTONS xml = null output,
@MEMBERSHIPBUTTONS xml = null output,
@MEMBERSHIPRENEWBUTTONS xml = null output,
@DISCOUNTBUTTONS xml = null output,
@DONATIONBUTTONS xml = null output,
@SCHEDULEDPROGRAMBUTTONS xml = null output,
@HASCONFIGUREDDISCOUNTS bit = null output,
@HASCONFIGUREDSCHEDULEDPROGRAMS bit = null output,
@EVENTREGISTRATIONBUTTONS xml = null output,
@HASCONFIGUREDEVENTREGISTRATIONS bit = null output,
@COMBINATIONBUTTONS xml = null output,
@MEMBERSHIPPROMOBUTTONS xml = null output,
@HASCONFIGUREDMERCHANDISE bit = null output,
@HASCONFIGUREDMEMBERSHIPS bit = null output,
@HASMIDTERMUPGRADES bit = null output,
@GENERICBUTTONS xml = null output
)
as
set nocount on;
set @DATALOADED = 1;
declare @CURRENTDATETIME datetime = dbo.UFN_TIMEZONEENTRY_GETSYSTEMDEFAULTDATEFROMUTC(getutcdate());
declare @CURRENTDATE date = @CURRENTDATETIME;
declare @CURRENTDATETIMEOFFSET datetimeoffset;
set @CURRENTDATETIMEOFFSET = sysdatetimeoffset()
declare @CONSTITUENTID uniqueidentifier = (select [CONSTITUENTID] from dbo.[SALESORDER] where [ID] = @ID)
declare @SALESMETHODID uniqueidentifier
select @SALESMETHODID = [ID]
from dbo.[SALESMETHOD]
where [TYPECODE] = 0
set @DAILYADMISSIONBUTTONS = (
select
[DAILYSALEITEM].[ID] as [QUICKBUTTONID],
[DAILYSALEITEM].[TYPECODE] as [TYPECODE],
[PROGRAM].[ID] as [PROGRAMID],
[PROGRAM].[NAME] as [PROGRAMNAME],
[PRICETYPECODE].[ID] as [PRICETYPECODEID],
[PRICETYPECODE].[DESCRIPTION] as [PRICETYPE],
[PROGRAMPRICE].[FACEPRICE] as [FACEPRICE],
[DAILYSALEITEM].[DESCRIPTIONFIELD1TYPECODE] as [LINE1TYPECODE],
[DAILYSALEITEM].[DESCRIPTIONFIELD2TYPECODE] as [LINE2TYPECODE],
[DAILYSALEITEM].[DESCRIPTIONFIELD3TYPECODE] as [LINE3TYPECODE],
[DAILYSALEITEM].[DESCRIPTIONFIELD1] as [LINE1DESCRIPTION],
[DAILYSALEITEM].[DESCRIPTIONFIELD2] as [LINE2DESCRIPTION],
[DAILYSALEITEM].[DESCRIPTIONFIELD3] as [LINE3DESCRIPTION],
[DAILYSALEITEM].[BUTTONORDER]
from dbo.[DAILYSALEITEM]
inner join dbo.[DAILYSALEITEMPROGRAM]
on [DAILYSALEITEM].[ID] = [DAILYSALEITEMPROGRAM].[ID]
inner join dbo.[PROGRAM]
on [DAILYSALEITEMPROGRAM].[PROGRAMID] = [PROGRAM].[ID]
inner join dbo.[PRICETYPECODE]
on [DAILYSALEITEMPROGRAM].[PRICETYPECODEID] = [PRICETYPECODE].[ID]
inner join dbo.[PROGRAMPRICE]
on
[PROGRAM].[ID] = [PROGRAMPRICE].[PROGRAMID] and
[DAILYSALEITEMPROGRAM].[PRICETYPECODEID] = [PROGRAMPRICE].[PRICETYPECODEID]
where
[DAILYSALEITEM].[ISACTIVE] = 1 and
[DAILYSALEITEMPROGRAM].[ISDAILYADMISSION] = 1 and
[PROGRAM].[ISACTIVE] = 1 and
--Program is valid for sales method
exists (
select 1
from dbo.[PROGRAMSALESMETHOD]
inner join dbo.[SALESMETHOD]
on [PROGRAMSALESMETHOD].[SALESMETHODID] = [SALESMETHOD].[ID]
where
[PROGRAMSALESMETHOD].[PROGRAMID] = [PROGRAM].[ID] and
[SALESMETHOD].[TYPECODE] = 0
) and
--Price type is valid for daily sales
not exists (
select 1
from dbo.[SALESMETHODEXCLUDEDPRICETYPE]
inner join dbo.[SALESMETHOD]
on [SALESMETHODEXCLUDEDPRICETYPE].[SALESMETHODID] = [SALESMETHOD].[ID]
where
[SALESMETHOD].[TYPECODE] = 0 and
[SALESMETHODEXCLUDEDPRICETYPE].[PRICETYPECODEID] = [PRICETYPECODE].[ID]
)
for xml raw ('ITEM'), type, elements, root('DAILYADMISSIONBUTTONS'), BINARY BASE64
)
set @MEMBERSHIPBUTTONS = (
select
[DAILYSALEITEM].[ID] as [QUICKBUTTONID],
[DAILYSALEITEM].[TYPECODE] as [TYPECODE],
coalesce(( --Automatically load pending membership if member has one
select top 1 [MEMBERSHIP].[ID]
from dbo.[MEMBER]
inner join dbo.[MEMBERSHIP]
on [MEMBER].[MEMBERSHIPID] = [MEMBERSHIP].[ID]
where
[MEMBERSHIP].[MEMBERSHIPPROGRAMID] = [MEMBERSHIPPROGRAM].[ID] and
[MEMBER].[CONSTITUENTID] = @CONSTITUENTID and
[MEMBERSHIP].[STATUSCODE] = 2
),'00000000-0000-0000-0000-000000000000') as [INITIALMEMBERSHIPID],
[MEMBERSHIPPROGRAM].[ID] as [MEMBERSHIPPROGRAMID],
[MEMBERSHIPPROGRAM].[NAME] as [MEMBERSHIPPROGRAMNAME],
[MEMBERSHIPLEVELTERM].[AMOUNT] as [FACEPRICE],
[MEMBERSHIPLEVEL].[NAME] as [MEMBERSHIPLEVELNAME],
[MEMBERSHIPLEVEL].[ID] as [MEMBERSHIPLEVELID],
[MEMBERSHIPLEVELTERM].[TERM] as [MEMBERSHIPLEVELTERMNAME],
[MEMBERSHIPLEVELTERM].[ID] as [MEMBERSHIPLEVELTERMID],
coalesce([MEMBERSHIPLEVELTYPECODE].[DESCRIPTION],'') as [MEMBERSHIPLEVELTYPECODENAME],
coalesce([MEMBERSHIPLEVELTYPECODE].[ID],'00000000-0000-0000-0000-000000000000') as [MEMBERSHIPLEVELTYPECODEID],
[DAILYSALEITEM].[DESCRIPTIONFIELD1TYPECODE] as [LINE1TYPECODE],
[DAILYSALEITEM].[DESCRIPTIONFIELD2TYPECODE] as [LINE2TYPECODE],
[DAILYSALEITEM].[DESCRIPTIONFIELD3TYPECODE] as [LINE3TYPECODE],
[DAILYSALEITEM].[DESCRIPTIONFIELD1] as [LINE1DESCRIPTION],
[DAILYSALEITEM].[DESCRIPTIONFIELD2] as [LINE2DESCRIPTION],
[DAILYSALEITEM].[DESCRIPTIONFIELD3] as [LINE3DESCRIPTION],
[DAILYSALEITEM].[BUTTONORDER]
from dbo.[DAILYSALEITEM]
inner join dbo.[DAILYSALEITEMMEMBERSHIP]
on [DAILYSALEITEM].[ID] = [DAILYSALEITEMMEMBERSHIP].[ID]
inner join dbo.[MEMBERSHIPPROGRAM]
on [DAILYSALEITEMMEMBERSHIP].[MEMBERSHIPPROGRAMID] = [MEMBERSHIPPROGRAM].[ID]
inner join dbo.[MEMBERSHIPLEVEL]
on [DAILYSALEITEMMEMBERSHIP].[MEMBERSHIPLEVELID] = [MEMBERSHIPLEVEL].[ID]
inner join dbo.[MEMBERSHIPLEVELTERM]
on [DAILYSALEITEMMEMBERSHIP].[MEMBERSHIPLEVELTERMID] = [MEMBERSHIPLEVELTERM].[ID]
left join dbo.[MEMBERSHIPLEVELTYPECODE]
on [DAILYSALEITEMMEMBERSHIP].[MEMBERSHIPLEVELTYPECODEID] = [MEMBERSHIPLEVELTYPECODE].[ID]
where
[DAILYSALEITEM].[ISACTIVE] = 1 and
[MEMBERSHIPPROGRAM].[ISACTIVE] = 1 and
[MEMBERSHIPLEVEL].[ISACTIVE] = 1 and
--Check that the membership program does allow multiple memberships if the member already has an active membership for that program
not exists (
select 1
from dbo.[MEMBER]
inner join dbo.[MEMBERSHIP]
on [MEMBER].[MEMBERSHIPID] = [MEMBERSHIP].[ID]
where
[MEMBER].[CONSTITUENTID] = @CONSTITUENTID and
[MEMBERSHIPPROGRAM].[ALLOWMULTIPLEMEMBERSHIPS] = 0 and
[MEMBERSHIP].[MEMBERSHIPPROGRAMID] = [MEMBERSHIPPROGRAM].[ID] and
[MEMBER].[ISDROPPED] = 0 and
[MEMBERSHIP].[STATUSCODE] in (0,1)
)
for xml raw ('ITEM'), type, elements, root('MEMBERSHIPBUTTONS'), BINARY BASE64
)
declare @MEMBERSHIPRENEWBUTTONORDER int
select
@MEMBERSHIPRENEWBUTTONORDER = [BUTTONORDER]
from dbo.[DAILYSALESGENERICACTION]
where [TYPECODE] = 7
and [ISACTIVE] = 1
declare @MEMBERSHIPRENEWBUTTONTABLE table (
[TYPECODE] int,
[MEMBERSHIPID] uniqueidentifier,
[NUMBEROFCHILDREN] int,
[COMMENTS] nvarchar(255),
[MEMBERSHIPPROGRAMID] uniqueidentifier,
[MEMBERSHIPPROGRAMNAME] nvarchar(100),
[FACEPRICE] money,
[MEMBERSHIPLEVELNAME] nvarchar(100),
[MEMBERSHIPLEVELID] uniqueidentifier,
[MEMBERSHIPLEVELTERMNAME] nvarchar(100),
[MEMBERSHIPLEVELTERMID] uniqueidentifier,
[MEMBERSHIPLEVELTYPECODENAME] nvarchar(100),
[MEMBERSHIPLEVELTYPECODEID] uniqueidentifier,
[EXPIRATIONDATE] datetime,
[CURRENTEXPIRATIONDATE] datetime,
[RENEWTYPECODE] int,
[SORTORDER] int,
[INRENEWWINDOW] bit,
[BUTTONORDER] int,
[AFTEREXPIRATION] int
)
if @MEMBERSHIPRENEWBUTTONORDER is not null
begin
insert into @MEMBERSHIPRENEWBUTTONTABLE
(
[TYPECODE],
[MEMBERSHIPID],
[NUMBEROFCHILDREN],
[COMMENTS],
[MEMBERSHIPPROGRAMID],
[MEMBERSHIPPROGRAMNAME],
[FACEPRICE],
[MEMBERSHIPLEVELNAME],
[MEMBERSHIPLEVELID],
[MEMBERSHIPLEVELTERMNAME],
[MEMBERSHIPLEVELTERMID],
[MEMBERSHIPLEVELTYPECODENAME],
[MEMBERSHIPLEVELTYPECODEID],
[EXPIRATIONDATE],
[CURRENTEXPIRATIONDATE],
[RENEWTYPECODE],
[SORTORDER],
[INRENEWWINDOW],
[BUTTONORDER],
[AFTEREXPIRATION]
)
select
2 as [TYPECODE],
[MEMBERSHIP].[ID] as [MEMBERSHIPID],
[MEMBERSHIP].[NUMBEROFCHILDREN],
[MEMBERSHIP].[COMMENTS],
[MEMBERSHIPPROGRAM].[ID] as [MEMBERSHIPPROGRAMID],
[MEMBERSHIPPROGRAM].[NAME] as [MEMBERSHIPPROGRAMNAME],
[RENEWOPTIONS].[FACEPRICE],
[RENEWOPTIONS].[MEMBERSHIPLEVELNAME],
[RENEWOPTIONS].[MEMBERSHIPLEVELID],
[RENEWOPTIONS].[MEMBERSHIPLEVELTERMNAME],
[RENEWOPTIONS].[MEMBERSHIPLEVELTERMID],
dbo.UFN_MEMBERSHIPLEVELTYPECODE_GETDESCRIPTION([RENEWOPTIONS].[MEMBERSHIPLEVELTYPECODEID]) as [MEMBERSHIPLEVELTYPECODENAME],
[RENEWOPTIONS].[MEMBERSHIPLEVELTYPECODEID],
[RENEWOPTIONS].[EXPIRATIONDATE],
case [MEMBERSHIP].[STATUSCODE]
when 1 then coalesce((
select top 1 [MEMBERSHIPTRANSACTION].[TRANSACTIONDATE]
from dbo.[MEMBERSHIPTRANSACTION]
where
[MEMBERSHIPTRANSACTION].[MEMBERSHIPID] = [MEMBERSHIP].[ID] and
[MEMBERSHIPTRANSACTION].[ACTIONCODE] = 4
order by [MEMBERSHIPTRANSACTION].[DATEADDED] desc
), [MEMBERSHIP].[EXPIRATIONDATE]
)
else [MEMBERSHIP].[EXPIRATIONDATE]
end as [CURRENTEXPIRATIONDATE],
[RENEWOPTIONS].[RENEWTYPECODE],
case [RENEWOPTIONS].[RENEWTYPECODE]
when 1 then 0
when 0 then 1
when 2 then 2
end as [SORTORDER],
case
when @CURRENTDATETIME > dateadd(month, -1 * [INITIALML].[BEFOREEXPIRATION], [MEMBERSHIP].[EXPIRATIONDATE]) and @CURRENTDATETIME < dateadd(month, [INITIALML].[AFTEREXPIRATION], [MEMBERSHIP].[EXPIRATIONDATE]) then 1
else 0
end as [INRENEWWINDOW],
@MEMBERSHIPRENEWBUTTONORDER as [BUTTONORDER],
[INITIALML].[AFTEREXPIRATION]
from dbo.[MEMBER]
inner join dbo.[MEMBERSHIP]
on [MEMBER].[MEMBERSHIPID] = [MEMBERSHIP].[ID] and [MEMBER].[ISDROPPED] = 0
inner join dbo.[MEMBERSHIPPROGRAM]
on [MEMBERSHIP].[MEMBERSHIPPROGRAMID] = [MEMBERSHIPPROGRAM].[ID]
inner join dbo.[MEMBERSHIPLEVEL] as [INITIALML]
on [MEMBERSHIP].[MEMBERSHIPLEVELID] = [INITIALML].[ID]
--Get the valid renew/upgrade membership levels
cross apply (
select
[MEMBERSHIPLEVEL].[ID] as [MEMBERSHIPLEVELID],
[MEMBERSHIPLEVEL].[NAME] as [MEMBERSHIPLEVELNAME],
[MEMBERSHIPLEVELTERM].[ID] as [MEMBERSHIPLEVELTERMID],
[MEMBERSHIPLEVELTERM].[TERM] as [MEMBERSHIPLEVELTERMNAME],
[MEMBERSHIPLEVELTERM].[AMOUNT] as [FACEPRICE],
[RENEWTYPE].[RENEWTYPECODE] as [RENEWTYPECODE],
case
when [MEMBERSHIP].[STATUSCODE] = 0 and dateadd(month, [INITIALML].[AFTEREXPIRATION], [MEMBERSHIP].[EXPIRATIONDATE]) >= @CURRENTDATE then dbo.UFN_MEMBERSHIP_CALCULATEEXPIRATIONDATEBYLEVEL([MEMBERSHIPLEVEL].[ID], [MEMBERSHIPLEVELTERM].[ID], [MEMBERSHIP].[EXPIRATIONDATE])
else dbo.UFN_MEMBERSHIP_CALCULATEEXPIRATIONDATEBYLEVEL([MEMBERSHIPLEVEL].[ID], [MEMBERSHIPLEVELTERM].[ID], @CURRENTDATE)
end as [EXPIRATIONDATE],
(select [MEMBERSHIP].[MEMBERSHIPLEVELTYPECODEID] from dbo.[MEMBERSHIPLEVELTYPE] where [LEVELID] = [MEMBERSHIPLEVEL].[ID] and [LEVELTYPECODEID] = [MEMBERSHIP].[MEMBERSHIPLEVELTYPECODEID]) as [MEMBERSHIPLEVELTYPECODEID]
from dbo.[MEMBERSHIPLEVEL]
--Get the membership level term equivalent to the current membership level term
--If the upgrade membership level doesn't have an equivalent, we'll handle that on the form
left join dbo.[MEMBERSHIPLEVELTERM]
on
[MEMBERSHIPLEVEL].[ID] = [MEMBERSHIPLEVELTERM].[LEVELID] and
[MEMBERSHIPLEVELTERM].[TERMCODE] = (select [MLT].[TERMCODE] from dbo.[MEMBERSHIPLEVELTERM] as [MLT] where [MLT].[ID] = [MEMBERSHIP].[MEMBERSHIPLEVELTERMID])
cross apply (
select case
when [MEMBERSHIP].[STATUSCODE] = 1 or ([MEMBERSHIP].[MEMBERSHIPLEVELID] = [MEMBERSHIPLEVEL].[ID] and dateadd(month, [INITIALML].[AFTEREXPIRATION], [MEMBERSHIP].[EXPIRATIONDATE]) < @CURRENTDATETIME) then 1 --Rejoin
when [MEMBERSHIP].[MEMBERSHIPLEVELID] = [MEMBERSHIPLEVEL].[ID] then 0 --Renew
else 2 --Upgrade
end as [RENEWTYPECODE]
) as [RENEWTYPE]
where
[MEMBERSHIPLEVEL].[MEMBERSHIPPROGRAMID] = [MEMBERSHIP].[MEMBERSHIPPROGRAMID] and
(
[MEMBERSHIPLEVEL].[ID] = [MEMBERSHIP].[MEMBERSHIPLEVELID] or
--Include the membership level that is one greater than the current one for Upgrade (if it's not a rejoin)
(
[RENEWTYPE].[RENEWTYPECODE] = 2 and
[MEMBERSHIPLEVEL].[ID] = (select top(1) ID
from dbo.MEMBERSHIPLEVEL MASTERML
where MASTERML.SEQUENCE > INITIALML.SEQUENCE
and MASTERML.MEMBERSHIPPROGRAMID = INITIALML.MEMBERSHIPPROGRAMID
and MASTERML.ISACTIVE = 1
and MASTERML.[CHILDRENALLOWED] >= [MEMBERSHIP].[NUMBEROFCHILDREN]
and --Level allows the number of members in the membership
(
(
select count(1)
from dbo.[MEMBER]
where
[MEMBER].[MEMBERSHIPID] = [MEMBERSHIP].[ID]
and [MEMBER].[ISDROPPED] = 0
) <= MASTERML.[MEMBERSALLOWED] or
MASTERML.[MEMBERSALLOWED] = 0
)
and --Level allows for the number of membership cards in the membership
(
(
select count(1)
from dbo.[MEMBERSHIPCARD]
inner join dbo.[MEMBER]
on [MEMBERSHIPCARD].[MEMBERID] = [MEMBER].[ID]
where
[MEMBER].[MEMBERSHIPID] = [MEMBERSHIP].[ID] and
[MEMBERSHIPCARD].[STATUSCODE] <> 2
) <= MASTERML.[CARDSALLOWED] --or
--MASTERML.[CARDSALLOWED] = 0
)
order by SEQUENCE asc)
)
) and
[MEMBERSHIPLEVEL].[ISACTIVE] = 1
) as [RENEWOPTIONS]
where
[MEMBER].[CONSTITUENTID] = @CONSTITUENTID and
[MEMBERSHIPPROGRAM].[ISACTIVE] = 1 and
[MEMBERSHIP].[STATUSCODE] in (0,1)
end
insert into @MEMBERSHIPRENEWBUTTONTABLE
(
[TYPECODE],
[MEMBERSHIPID],
[NUMBEROFCHILDREN],
[COMMENTS],
[MEMBERSHIPPROGRAMID],
[MEMBERSHIPPROGRAMNAME],
[FACEPRICE],
[MEMBERSHIPLEVELNAME],
[MEMBERSHIPLEVELID],
[MEMBERSHIPLEVELTERMNAME],
[MEMBERSHIPLEVELTERMID],
[MEMBERSHIPLEVELTYPECODENAME],
[MEMBERSHIPLEVELTYPECODEID],
[EXPIRATIONDATE],
[CURRENTEXPIRATIONDATE],
[RENEWTYPECODE],
[SORTORDER],
[INRENEWWINDOW],
[BUTTONORDER]
)
select
2 as [TYPECODE],
[MEMBERSHIP].[ID] as [MEMBERSHIPID],
[MEMBERSHIP].[NUMBEROFCHILDREN],
[MEMBERSHIP].[COMMENTS],
[MEMBERSHIPPROGRAM].[ID] as [MEMBERSHIPPROGRAMID],
[MEMBERSHIPPROGRAM].[NAME] as [MEMBERSHIPPROGRAMNAME],
dbo.UFN_MEMBERSHIP_GETMIDTERMUPGRADEPRICE([MEMBERSHIP].[ID], [MEMBERSHIPLEVEL].[ID]) as [FACEPRICE],
[MEMBERSHIPLEVEL].[NAME] as [MEMBERSHIPLEVELNAME],
[MEMBERSHIPLEVEL].[ID] as [MEMBERSHIPLEVELID],
[MEMBERSHIPLEVELTERM].[TERM] as [MEMBERSHIPLEVELTERMNAME],
[MEMBERSHIPLEVELTERM].[ID] as [MEMBERSHIPLEVELTERMID],
null as [MEMBERSHIPLEVELTYPECODENAME],
null as [MEMBERSHIPLEVELTYPECODEID],
[MEMBERSHIP].[EXPIRATIONDATE],
[MEMBERSHIP].[EXPIRATIONDATE] as [CURRENTEXPIRATIONDATE],
3 as [RENEWTYPECODE],
row_number() over (order by MEMBERSHIP.EXPIRATIONDATE asc, MEMBERSHIP.LOOKUPID asc, MEMBERSHIPLEVEL.SEQUENCE asc) + 2 as [SORTORDER],
case
when @CURRENTDATETIME > dateadd(month, -1 * [INITIALML].[BEFOREEXPIRATION], [MEMBERSHIP].[EXPIRATIONDATE]) and @CURRENTDATETIME < dateadd(month, [INITIALML].[AFTEREXPIRATION], [MEMBERSHIP].[EXPIRATIONDATE]) then 1
else 0
end as [INRENEWWINDOW],
@MEMBERSHIPRENEWBUTTONORDER as [BUTTONORDER]
from dbo.[MEMBER]
inner join dbo.[MEMBERSHIP]
on [MEMBER].[MEMBERSHIPID] = [MEMBERSHIP].[ID] and [MEMBER].[ISDROPPED] = 0
inner join dbo.[MEMBERSHIPPROGRAM]
on [MEMBERSHIP].[MEMBERSHIPPROGRAMID] = [MEMBERSHIPPROGRAM].[ID]
inner join dbo.[MEMBERSHIPLEVEL] as [INITIALML]
on [MEMBERSHIP].[MEMBERSHIPLEVELID] = [INITIALML].[ID]
inner join dbo.[MEMBERSHIPLEVEL]
on [MEMBERSHIPLEVEL].[MEMBERSHIPPROGRAMID] = [MEMBERSHIPPROGRAM].[ID]
inner join dbo.[MEMBERSHIPLEVELTERM]
on [MEMBERSHIPLEVEL].[ID] = [MEMBERSHIPLEVELTERM].[LEVELID] and
[MEMBERSHIPLEVELTERM].[TERMCODE] = (select [MLT].[TERMCODE] from dbo.[MEMBERSHIPLEVELTERM] as [MLT] where [MLT].[ID] = [MEMBERSHIP].[MEMBERSHIPLEVELTERMID])
where
[MEMBER].[CONSTITUENTID] = @CONSTITUENTID and
[MEMBERSHIPPROGRAM].[ISACTIVE] = 1 and
[MEMBERSHIP].[STATUSCODE] = 0 and
[MEMBERSHIP].[EXPIRATIONDATE] >= @CURRENTDATE and
[MEMBERSHIPLEVEL].[CHILDRENALLOWED] >= [MEMBERSHIP].[NUMBEROFCHILDREN] and
[MEMBERSHIPLEVEL].[ISACTIVE] = 1 and
--Level allows the number of members in the membership
(
(
select count(1)
from dbo.[MEMBER]
where
[MEMBER].[MEMBERSHIPID] = [MEMBERSHIP].[ID]
and [MEMBER].[ISDROPPED] = 0
) <= [MEMBERSHIPLEVEL].[MEMBERSALLOWED] or
[MEMBERSHIPLEVEL].[MEMBERSALLOWED] = 0
) and
--Level allows for the number of membership cards in the membership
(
(
select count(1)
from dbo.[MEMBERSHIPCARD]
inner join dbo.[MEMBER]
on [MEMBERSHIPCARD].[MEMBERID] = [MEMBER].[ID]
where
[MEMBER].[MEMBERSHIPID] = [MEMBERSHIP].[ID] and
[MEMBERSHIPCARD].[STATUSCODE] <> 2
) <= [MEMBERSHIPLEVEL].[CARDSALLOWED] --or
--[MEMBERSHIPLEVEL].[CARDSALLOWED] = 0
) and
[MEMBERSHIPLEVEL].[SEQUENCE] > [INITIALML].[SEQUENCE]
set @MEMBERSHIPRENEWBUTTONS = (
select *
from @MEMBERSHIPRENEWBUTTONTABLE
--Order by the membership that is nearest to leaving its renewal period
order by
[SORTORDER] asc,
datediff(day, @CURRENTDATE, dateadd(month, [AFTEREXPIRATION], [CURRENTEXPIRATIONDATE])) asc
for xml raw ('ITEM'), type, elements, root('MEMBERSHIPRENEWBUTTONS'), BINARY BASE64
)
set @DISCOUNTBUTTONS = (
select
[DAILYSALEITEM].[ID] as [QUICKBUTTONID],
[DAILYSALEITEM].[TYPECODE] as [TYPECODE],
[DISCOUNT].[ID] as [DISCOUNTID],
[DISCOUNT].[NAME] as [DISCOUNTNAME],
[DISCOUNT].[CALCULATIONTYPE] as [DISCOUNTCALCULATIONTYPE],
[DISCOUNT].[CALCULATIONTYPECODE] as [DISCOUNTCALCULATIONTYPECODE],
0 as [DISCOUNTVALUE], --Use min and max value now
[DAILYSALEITEM].[DESCRIPTIONFIELD1TYPECODE] as [LINE1TYPECODE],
[DAILYSALEITEM].[DESCRIPTIONFIELD2TYPECODE] as [LINE2TYPECODE],
[DAILYSALEITEM].[DESCRIPTIONFIELD3TYPECODE] as [LINE3TYPECODE],
[DAILYSALEITEM].[DESCRIPTIONFIELD1] as [LINE1DESCRIPTION],
[DAILYSALEITEM].[DESCRIPTIONFIELD2] as [LINE2DESCRIPTION],
[DAILYSALEITEM].[DESCRIPTIONFIELD3] as [LINE3DESCRIPTION],
[DAILYSALEITEMDISCOUNT].[DISCOUNTLIMITAPPLICATIONTYPECODE] as [DISCOUNTLIMITAPPLICATIONTYPECODE],
case [DISCOUNT].[APPLIESTOCODE]
when 1 then -- When item-level discount
case [DISCOUNT].[CALCULATIONTYPECODE]
when 1 then --percent
case [DISCOUNT].[DISCOUNTTYPECODE]
when 2 then
(select max([PERCENT]) from dbo.[GROUPSIZEDISCOUNT] where [GROUPSIZEDISCOUNT].[DISCOUNTID] = [DISCOUNT].[ID])
else
(select max([PERCENT])
from
(select [PERCENT] from dbo.[DISCOUNTPRICETYPE] where [DISCOUNTPRICETYPE].[DISCOUNTID] = [DISCOUNT].[ID]
union all
select [DISCOUNT].[MERCHANDISEPERCENT] as [PERCENT]) as [PERCENTS]
)
end
else --amount or specific value
case [DISCOUNT].[DISCOUNTTYPECODE]
when 2 then
(select max([AMOUNT]) from dbo.[GROUPSIZEDISCOUNT] where [GROUPSIZEDISCOUNT].[DISCOUNTID] = [DISCOUNT].[ID])
else
(select max([AMOUNT])
from
(select [AMOUNT] from dbo.[DISCOUNTPRICETYPE] where [DISCOUNTPRICETYPE].[DISCOUNTID] = [DISCOUNT].[ID]
union all
select [DISCOUNT].[MERCHANDISEAMOUNT] as [AMOUNT]) as [AMOUNTS]
)
end
end
else --When order-level discount
case [CALCULATIONTYPECODE]
when 0 then
[DISCOUNT].[AMOUNT]
else
[DISCOUNT].[PERCENT]
end
end DISCOUNTMAXVALUE,
case [DISCOUNT].[APPLIESTOCODE]
when 1 then -- When item-level discount
case [DISCOUNT].[CALCULATIONTYPECODE]
when 1 then --percent
case [DISCOUNT].[DISCOUNTTYPECODE]
when 2 then
(select min([PERCENT]) from dbo.[GROUPSIZEDISCOUNT] where [GROUPSIZEDISCOUNT].[DISCOUNTID] = [DISCOUNT].[ID])
else
(select min([PERCENT])
from
(select [PERCENT] from dbo.[DISCOUNTPRICETYPE] where [DISCOUNTPRICETYPE].[DISCOUNTID] = [DISCOUNT].[ID]
union all
select [DISCOUNT].[MERCHANDISEPERCENT] as [PERCENT]) as [PERCENTS]
where [PERCENT] > 0
)
end
else --amount or specific value
case [DISCOUNT].[DISCOUNTTYPECODE]
when 2 then
(select min([AMOUNT]) from dbo.[GROUPSIZEDISCOUNT] where [GROUPSIZEDISCOUNT].[DISCOUNTID] = [DISCOUNT].[ID])
else
(select min([AMOUNT])
from
(select [AMOUNT] from dbo.[DISCOUNTPRICETYPE] where [DISCOUNTPRICETYPE].[DISCOUNTID] = [DISCOUNT].[ID]
union all
select [DISCOUNT].[MERCHANDISEAMOUNT] as [AMOUNT]) as [AMOUNTS]
where [AMOUNT] > 0
)
end
end
else --When order-level discount
case [CALCULATIONTYPECODE]
when 0 then
[DISCOUNT].[AMOUNT]
else
[DISCOUNT].[PERCENT]
end
end DISCOUNTMINVALUE,
[dbo].[UFN_DISCOUNT_AVAILABLEFORORDER]([DISCOUNT].[ID], @ID) &
[dbo].[UFN_DISCOUNT_ELIGIBLEFORORDER]([DISCOUNT].[ID], @ID)
as [ISENABLED],
[DAILYSALEITEM].[BUTTONORDER]
from dbo.[DAILYSALEITEM]
inner join dbo.[DAILYSALEITEMDISCOUNT]
on [DAILYSALEITEM].[ID] = [DAILYSALEITEMDISCOUNT].[ID]
inner join dbo.[DISCOUNT]
on [DAILYSALEITEMDISCOUNT].[DISCOUNTID] = [DISCOUNT].[ID]
left join dbo.[DISCOUNTPRICETYPE]
on [DISCOUNT].[ID] = [DISCOUNTPRICETYPE].[ID]
where
[DAILYSALEITEM].[ISACTIVE] = 1 and
[DISCOUNT].[ISACTIVE] = 1 and
exists ( select [DISCOUNTAVAILABILITY].[ID]
from dbo.[DISCOUNTAVAILABILITY]
inner join dbo.[DISCOUNTAVAILABILITYSALESMETHOD]
on [DISCOUNTAVAILABILITYSALESMETHOD].[DISCOUNTAVAILABILITYID] = [DISCOUNTAVAILABILITY].[ID]
where [DISCOUNTAVAILABILITYSALESMETHOD].[SALESMETHODID] = @SALESMETHODID and
[DISCOUNTAVAILABILITY].[DISCOUNTID] = [DISCOUNT].[ID])
for xml raw ('ITEM'), type, elements, root('DISCOUNTBUTTONS'), BINARY BASE64
)
set @DONATIONBUTTONS = (
select
[DAILYSALEITEM].[ID] as [QUICKBUTTONID],
[DAILYSALEITEM].[TYPECODE] as [TYPECODE],
[DESIGNATION].[ID] as [DESIGNATIONID],
case [DESIGNATION].[VANITYNAME]
when '' then [DESIGNATION].[NAME]
else [DESIGNATION].[VANITYNAME]
end as [DESIGNATIONNAME],
[DAILYSALEITEMDONATION].[DEFAULTAMOUNT],
[DAILYSALEITEM].[DESCRIPTIONFIELD1TYPECODE] as [LINE1TYPECODE],
[DAILYSALEITEM].[DESCRIPTIONFIELD2TYPECODE] as [LINE2TYPECODE],
[DAILYSALEITEM].[DESCRIPTIONFIELD3TYPECODE] as [LINE3TYPECODE],
[DAILYSALEITEM].[DESCRIPTIONFIELD1] as [LINE1DESCRIPTION],
[DAILYSALEITEM].[DESCRIPTIONFIELD2] as [LINE2DESCRIPTION],
[DAILYSALEITEM].[DESCRIPTIONFIELD3] as [LINE3DESCRIPTION],
[DAILYSALEITEM].[BUTTONORDER]
from dbo.[DAILYSALEITEM]
inner join dbo.[DAILYSALEITEMDONATION]
on [DAILYSALEITEM].[ID] = [DAILYSALEITEMDONATION].[ID]
inner join dbo.[DESIGNATION]
on [DAILYSALEITEMDONATION].[DESIGNATIONID] = [DESIGNATION].[ID]
where
[DAILYSALEITEM].[ISACTIVE] = 1 and
[DESIGNATION].[ISACTIVE] = 1
for xml raw ('ITEM'), type, elements, root('DONATIONBUTTONS'), BINARY BASE64
)
set @SCHEDULEDPROGRAMBUTTONS = (
select
[QUICKBUTTONID],
[TYPECODE],
[PROGRAMID],
[PROGRAMNAME],
[PRICETYPECODEID],
[PRICETYPE],
[FACEPRICE],
[EVENTID],
[EVENTTIME],
[EVENTDATE],
[CAPACITY],
[EVENTLOCATION],
[ISONSALE],
[SCHEDULEOPTIONTYPECODE],
[LINE1TYPECODE],
[LINE2TYPECODE],
[LINE3TYPECODE],
[LINE1DESCRIPTION],
[LINE2DESCRIPTION],
[LINE3DESCRIPTION],
[ISPREREGISTERED],
[BUTTONORDER],
row_number() over(partition by BUTTONORDER order by [EVENTDATE], [EVENTTIME]) as BUTTONSUBORDER
from (
select
[DAILYSALEITEM].[ID] as [QUICKBUTTONID],
[DAILYSALEITEM].[TYPECODE] as [TYPECODE],
[PROGRAM].[ID] as [PROGRAMID],
[PROGRAM].[NAME] as [PROGRAMNAME],
[PRICETYPECODE].[ID] as [PRICETYPECODEID],
[PRICETYPECODE].[DESCRIPTION] as [PRICETYPE],
--[EVENTPRICE].[FACEPRICE] as [FACEPRICE],
EVENTAVAILABILITY.FACEPRICE as FACEPRICE,
[EVENT].[ID] as [EVENTID],
[EVENT].[STARTTIME] as [EVENTTIME],
@CURRENTDATE as [EVENTDATE],
[EVENTAVAILABILITY].[CAPACITY] as [CAPACITY],
EVENTAVAILABILITY.[LOCATION] as [EVENTLOCATION],
EVENTAVAILABILITY.[ISONSALE],
[DAILYSALEITEMPROGRAM].[SCHEDULEOPTIONTYPECODE],
[DAILYSALEITEM].[DESCRIPTIONFIELD1TYPECODE] as [LINE1TYPECODE],
[DAILYSALEITEM].[DESCRIPTIONFIELD2TYPECODE] as [LINE2TYPECODE],
[DAILYSALEITEM].[DESCRIPTIONFIELD3TYPECODE] as [LINE3TYPECODE],
[DAILYSALEITEM].[DESCRIPTIONFIELD1] as [LINE1DESCRIPTION],
[DAILYSALEITEM].[DESCRIPTIONFIELD2] as [LINE2DESCRIPTION],
[DAILYSALEITEM].[DESCRIPTIONFIELD3] as [LINE3DESCRIPTION],
[PROGRAM].[ISPREREGISTERED],
[DAILYSALEITEM].[BUTTONORDER]
from dbo.[DAILYSALEITEM] with (nolock)
inner join dbo.[DAILYSALEITEMPROGRAM] with (nolock)
on [DAILYSALEITEM].[ID] = [DAILYSALEITEMPROGRAM].[ID]
inner join dbo.[PROGRAM] with (nolock)
on [DAILYSALEITEMPROGRAM].[PROGRAMID] = [PROGRAM].[ID]
inner join dbo.[PRICETYPECODE] with (nolock)
on [DAILYSALEITEMPROGRAM].[PRICETYPECODEID] = [PRICETYPECODE].[ID]
inner join dbo.UFN_DAILYSALEITEM_EVENT_GETAVAILABILITY(@CURRENTDATETIMEOFFSET, @SALESMETHODID) EVENTAVAILABILITY
on [PROGRAM].ID = EVENTAVAILABILITY.PROGRAMID and
PRICETYPECODE.ID = EVENTAVAILABILITY.PRICETYPECODEID
inner join [EVENT] with (nolock) on
EVENTAVAILABILITY.EVENTID = [EVENT].ID
where
[DAILYSALEITEMPROGRAM].[SCHEDULEOPTIONTYPECODE] in (1, 2) and
[DAILYSALEITEM].[ISACTIVE] = 1 and
[PRICETYPECODE].[ACTIVE] = 1
union all
select
[DAILYSALEITEM].[ID] as [QUICKBUTTONID],
[DAILYSALEITEM].[TYPECODE] as [TYPECODE],
[PROGRAM].[ID] as [PROGRAMID],
[PROGRAM].[NAME] as [PROGRAMNAME],
[PRICETYPECODE].[ID] as [PRICETYPECODEID],
[PRICETYPECODE].[DESCRIPTION] as [PRICETYPE],
[PROGRAMPRICE].[FACEPRICE] as [FACEPRICE],
null as [EVENTID],
null as [EVENTTIME],
null as [EVENTDATE],
0 as [CAPACITY],
'' as [EVENTLOCATION],
1 as [ISONSALE],
[DAILYSALEITEMPROGRAM].[SCHEDULEOPTIONTYPECODE],
[DAILYSALEITEM].[DESCRIPTIONFIELD1TYPECODE] as [LINE1TYPECODE],
[DAILYSALEITEM].[DESCRIPTIONFIELD2TYPECODE] as [LINE2TYPECODE],
[DAILYSALEITEM].[DESCRIPTIONFIELD3TYPECODE] as [LINE3TYPECODE],
[DAILYSALEITEM].[DESCRIPTIONFIELD1] as [LINE1DESCRIPTION],
[DAILYSALEITEM].[DESCRIPTIONFIELD2] as [LINE2DESCRIPTION],
[DAILYSALEITEM].[DESCRIPTIONFIELD3] as [LINE3DESCRIPTION],
[PROGRAM].[ISPREREGISTERED],
[DAILYSALEITEM].[BUTTONORDER]
from dbo.[DAILYSALEITEM]
inner join dbo.[DAILYSALEITEMPROGRAM]
on [DAILYSALEITEM].[ID] = [DAILYSALEITEMPROGRAM].[ID]
inner join dbo.[PROGRAM]
on [DAILYSALEITEMPROGRAM].[PROGRAMID] = [PROGRAM].[ID]
inner join dbo.[PROGRAMPRICE]
on
[PROGRAM].[ID] = [PROGRAMPRICE].[PROGRAMID] and
[DAILYSALEITEMPROGRAM].[PRICETYPECODEID] = [PROGRAMPRICE].[PRICETYPECODEID]
left join dbo.[PRICETYPECODE]
on
[DAILYSALEITEMPROGRAM].[PRICETYPECODEID] = [PRICETYPECODE].[ID] and
--Price type is valid for daily sales
not exists (
select 1
from dbo.[SALESMETHODEXCLUDEDPRICETYPE]
inner join dbo.[SALESMETHOD]
on [SALESMETHODEXCLUDEDPRICETYPE].[SALESMETHODID] = [SALESMETHOD].[ID]
where
[SALESMETHOD].[TYPECODE] = 0 and
[SALESMETHODEXCLUDEDPRICETYPE].[PRICETYPECODEID] = [PRICETYPECODE].[ID]
)
where
[DAILYSALEITEMPROGRAM].[SCHEDULEOPTIONTYPECODE] = 3 and
[DAILYSALEITEM].[ISACTIVE] = 1 and
[PRICETYPECODE].[ACTIVE] = 1
) as [SCHEDULEDPROGRAMS]
for xml raw ('ITEM'), type, elements, root('SCHEDULEDPROGRAMBUTTONS'), BINARY BASE64
)
set @EVENTREGISTRATIONBUTTONS = (
select
[DAILYSALEITEM].[ID] as [QUICKBUTTONID],
[DAILYSALEITEM].[TYPECODE] as [TYPECODE],
[EVENT].[ID] as [EVENTID],
[EVENT].[NAME] as [EVENTNAME],
[EVENT].[CAPACITY] as [CAPACITY],
[EVENT].[STARTTIME] as [EVENTTIME],
[EVENT].[STARTDATE] as [EVENTDATE],
[EVENTPRICE].[NAME] as [EVENTPRICE],
[EVENTPRICE].[ID] as [EVENTPRICEID],
(select top 1 [EVENTLOCATION].[NAME] from dbo.[EVENTLOCATION] where [EVENTLOCATION].[ID] = [EVENT].[EVENTLOCATIONID]) as [EVENTLOCATION],
[DAILYSALEITEM].[DESCRIPTIONFIELD1TYPECODE] as [LINE1TYPECODE],
[DAILYSALEITEM].[DESCRIPTIONFIELD2TYPECODE] as [LINE2TYPECODE],
[DAILYSALEITEM].[DESCRIPTIONFIELD3TYPECODE] as [LINE3TYPECODE],
[DAILYSALEITEM].[DESCRIPTIONFIELD1] as [LINE1DESCRIPTION],
[DAILYSALEITEM].[DESCRIPTIONFIELD2] as [LINE2DESCRIPTION],
[DAILYSALEITEM].[DESCRIPTIONFIELD3] as [LINE3DESCRIPTION],
[DAILYSALEITEM].[BUTTONORDER]
from dbo.[DAILYSALEITEM]
inner join dbo.[DAILYSALEITEMEVENTREGISTRATION]
on [DAILYSALEITEM].[ID] = [DAILYSALEITEMEVENTREGISTRATION].[ID]
inner join dbo.[EVENT]
on [DAILYSALEITEMEVENTREGISTRATION].[EVENTID] = [EVENT].[ID]
inner join dbo.[EVENTPRICE]
on [DAILYSALEITEMEVENTREGISTRATION].[EVENTPRICEID] = [EVENTPRICE].[ID]
where [DAILYSALEITEM].[ISACTIVE] = 1 and [EVENT].[ISACTIVE] = 1
for xml raw ('ITEM'), type, elements, root('EVENTREGISTRATIONBUTTONS'), BINARY BASE64
)
set @COMBINATIONBUTTONS = (
select
[DAILYSALEITEM].[ID] as [QUICKBUTTONID],
[DAILYSALEITEM].[TYPECODE] as [TYPECODE],
[COMBINATION].[ID] as [COMBINATIONID],
[COMBINATION].[NAME] as [COMBINATIONNAME],
[PRICETYPECODE].[ID] as [PRICETYPECODEID],
[PRICETYPECODE].[DESCRIPTION] as [PRICETYPE],
case when dbo.UFN_COMBINATION_ELIGIBLEFORORDER([COMBINATION].[ID], @CONSTITUENTID) = 1 then 1 else 0 end as [CONSTITUENTELIGIBLE],
(
select sum([PROGRAMGROUPPRICE].[FACEPRICE])
from dbo.[PROGRAMGROUPPRICE]
inner join dbo.[PROGRAMGROUP]
on [PROGRAMGROUPPRICE].[PROGRAMGROUPID] = [PROGRAMGROUP].[ID]
where
[PROGRAMGROUP].[COMBINATIONID] = [COMBINATION].[ID] and
[PROGRAMGROUPPRICE].[COMBINATIONPRICETYPEID] = [COMBINATIONPRICETYPE].[ID]
) as [FACEPRICE],
[DAILYSALEITEM].[DESCRIPTIONFIELD1TYPECODE] as [LINE1TYPECODE],
[DAILYSALEITEM].[DESCRIPTIONFIELD2TYPECODE] as [LINE2TYPECODE],
[DAILYSALEITEM].[DESCRIPTIONFIELD3TYPECODE] as [LINE3TYPECODE],
[DAILYSALEITEM].[DESCRIPTIONFIELD1] as [LINE1DESCRIPTION],
[DAILYSALEITEM].[DESCRIPTIONFIELD2] as [LINE2DESCRIPTION],
[DAILYSALEITEM].[DESCRIPTIONFIELD3] as [LINE3DESCRIPTION],
[DAILYSALEITEM].[BUTTONORDER]
from dbo.[DAILYSALEITEM]
inner join dbo.[DAILYSALEITEMCOMBINATION]
on [DAILYSALEITEM].[ID] = [DAILYSALEITEMCOMBINATION].[ID]
inner join dbo.[COMBINATION]
on [DAILYSALEITEMCOMBINATION].[COMBINATIONID] = [COMBINATION].[ID]
inner join dbo.[COMBINATIONPRICETYPE]
on [COMBINATION].[ID] = [COMBINATIONPRICETYPE].[COMBINATIONID]
inner join dbo.[PRICETYPECODE]
on
[COMBINATIONPRICETYPE].[PRICETYPECODEID] = [PRICETYPECODE].[ID] and
[DAILYSALEITEMCOMBINATION].[PRICETYPECODEID] = [PRICETYPECODE].[ID]
where
[PRICETYPECODE].[ACTIVE] = 1 and
-- Combination level check
[COMBINATION].[ISACTIVE] = 1 and
dbo.UFN_COMBINATION_AVAILABLEFORORDER([COMBINATION].[ID], @SALESMETHODID) = 1 and
[DAILYSALEITEM].[ISACTIVE] = 1
for xml raw ('ITEM'), type, elements, root('COMBINATIONBUTTONS'), BINARY BASE64
)
set @MEMBERSHIPPROMOBUTTONS = (
select
[DAILYSALEITEM].[ID] as [QUICKBUTTONID],
[DAILYSALEITEM].[TYPECODE] as [TYPECODE],
[MEMBERSHIPPROMO].[ID] as [MEMBERSHIPPROMOID],
[MEMBERSHIPPROMO].[NAME] as [MEMBERSHIPPROMONAME],
case [MEMBERSHIPPROMO].[PROMOTIONTYPECODE]
when 0 then [MEMBERSHIPPROMO].[DISCOUNTCALCULATIONTYPE]
when 1 then [MEMBERSHIPPROMO].[EXTENSIONCALCULATIONTYPE]
end as [MEMBERSHIPPROMOCALCULATIONTYPE],
[MEMBERSHIPPROMO].[FORMATTEDVALUE] as [MEMBERSHIPPROMOVALUE],
[DAILYSALEITEM].[DESCRIPTIONFIELD1TYPECODE] as [LINE1TYPECODE],
[DAILYSALEITEM].[DESCRIPTIONFIELD2TYPECODE] as [LINE2TYPECODE],
[DAILYSALEITEM].[DESCRIPTIONFIELD3TYPECODE] as [LINE3TYPECODE],
[DAILYSALEITEM].[DESCRIPTIONFIELD1] as [LINE1DESCRIPTION],
[DAILYSALEITEM].[DESCRIPTIONFIELD2] as [LINE2DESCRIPTION],
[DAILYSALEITEM].[DESCRIPTIONFIELD3] as [LINE3DESCRIPTION],
[DAILYSALEITEM].[BUTTONORDER]
from dbo.[DAILYSALEITEM]
inner join dbo.[DAILYSALEITEMMEMBERSHIPPROMO]
on [DAILYSALEITEM].[ID] = [DAILYSALEITEMMEMBERSHIPPROMO].[ID]
inner join dbo.[MEMBERSHIPPROMO]
on [DAILYSALEITEMMEMBERSHIPPROMO].[MEMBERSHIPPROMOID] = [MEMBERSHIPPROMO].[ID]
where
[DAILYSALEITEM].[ISACTIVE] = 1 and
[MEMBERSHIPPROMO].[ISACTIVE] = 1
for xml raw ('ITEM'), type, elements, root('MEMBERSHIPPROMOBUTTONS'), BINARY BASE64
)
set @GENERICBUTTONS = (
select
[TYPECODE],
[BUTTONORDER]
from dbo.[DAILYSALESGENERICACTION]
for xml raw ('ITEM'), type, elements, root('GENERICBUTTONS'), BINARY BASE64
)
if (exists(select 1 from dbo.[DISCOUNT] where [APPLICATIONTYPECODE] <> 0) or exists(select 1 from dbo.[MEMBERSHIPPROMO] where [ISACTIVE] = 1)) and exists(select 1 from dbo.[DAILYSALESGENERICACTION] where TYPECODE = 3 and ISACTIVE = 1)
set @HASCONFIGUREDDISCOUNTS = 1
else
set @HASCONFIGUREDDISCOUNTS = 0;
if exists(
select 1
from dbo.[PROGRAM]
where
exists (
select 1
from dbo.[EVENT]
where
[EVENT].[PROGRAMID] = [PROGRAM].[ID] and
[EVENT].[STARTDATE] >= @CURRENTDATE
)
) and exists(select 1 from dbo.[DAILYSALESGENERICACTION] where TYPECODE = 1 and ISACTIVE = 1)
set @HASCONFIGUREDSCHEDULEDPROGRAMS = 1
else
set @HASCONFIGUREDSCHEDULEDPROGRAMS = 0
if exists(select 1 from dbo.[DAILYSALESGENERICACTION] where TYPECODE = 5 and ISACTIVE = 1)
set @HASCONFIGUREDEVENTREGISTRATIONS = 1
else
set @HASCONFIGUREDEVENTREGISTRATIONS = 0
if exists(select 1 from dbo.[DAILYSALESGENERICACTION] where TYPECODE = 2 and ISACTIVE = 1)
set @HASCONFIGUREDMEMBERSHIPS = 1
else
set @HASCONFIGUREDMEMBERSHIPS = 0
if exists(select 1 from dbo.[DAILYSALESGENERICACTION] where TYPECODE = 6 and ISACTIVE = 1) and exists(select 1 from dbo.MERCHANDISEPRODUCT where ISACTIVE = 1)
set @HASCONFIGUREDMERCHANDISE = 1
else
set @HASCONFIGUREDMERCHANDISE = 0
if exists(select 1 from dbo.[DAILYSALESGENERICACTION] where TYPECODE = 8 and ISACTIVE = 1) and dbo.UFN_SALESORDER_PATRONHASUPGRADE(@ID) = 1
set @HASMIDTERMUPGRADES = 1
else
set @HASMIDTERMUPGRADES = 0
return 0;