USP_DATAFORMTEMPLATE_VIEW_DAILYSALESORDER_2
The load procedure used by the view dataform template "Daily Sales Order View Data Form 2"
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. |
@ITEMS | xml | INOUT | Items |
@SUBTOTAL | money | INOUT | Subtotal |
@TAXES | money | INOUT | Taxes |
@TOTAL | money | INOUT | Total |
@TENDERED | money | INOUT | Tendered |
@CHANGEDUE | money | INOUT | Change due |
@BALANCE | money | INOUT | Balance |
@SALESORDERID | uniqueidentifier | INOUT | ID |
@AVAILABLEPAYMENTMETHODS | xml | INOUT | Payment Types |
@CONSTITUENTID | uniqueidentifier | INOUT | Patron |
@ORDERNUMBER | nvarchar(10) | INOUT | ORDERNUMBER |
@MEMBERID | uniqueidentifier | INOUT | MEMBERID |
@QUICKBUTTONCONTEXTID | uniqueidentifier | INOUT | QUICKBUTTONCONTEXTID |
@PATRONMEMBERSHIPCOUNT | int | INOUT | PATRONMEMBERSHIPCOUNT |
@MEMBERSHIPID | uniqueidentifier | INOUT | |
@ISTAXEXEMPT | bit | INOUT |
Definition
Copy
CREATE procedure dbo.USP_DATAFORMTEMPLATE_VIEW_DAILYSALESORDER_2
(
@ID uniqueidentifier,
@DATALOADED bit = 0 output,
@ITEMS xml = null output,
@SUBTOTAL money = null output,
@TAXES money = null output,
@TOTAL money = null output,
@TENDERED money = null output,
@CHANGEDUE money = null output,
@BALANCE money = null output,
@SALESORDERID uniqueidentifier = null output,
@AVAILABLEPAYMENTMETHODS xml = null output,
@CONSTITUENTID uniqueidentifier = null output,
@ORDERNUMBER nvarchar(10) = null output,
@MEMBERID uniqueidentifier = null output,
@QUICKBUTTONCONTEXTID uniqueidentifier = null output,
@PATRONMEMBERSHIPCOUNT integer = null output,
@MEMBERSHIPID uniqueidentifier = null output,
@ISTAXEXEMPT bit = null output
)
as
set nocount on;
declare @SALESMETHODID uniqueidentifier;
select
@DATALOADED = 1,
@SALESORDERID = @ID,
@CONSTITUENTID = CONSTITUENTID,
@ORDERNUMBER = SEQUENCEID,
@SALESMETHODID = dbo.UFN_SALESMETHOD_GETIDFROMTYPECODE(SALESMETHODTYPECODE)
from dbo.SALESORDER
where ID = @ID;
-- Order same as itemized receipt
-- 0 - Ticket
-- 10 - Combination
-- 20 - Event Registration
-- 30 - Membership
-- 40 - Merchandise
-- 50 - Donation
-- 60 - Discounts
-- 70 - Fees
-- 80 - Taxes
-- 85 - Delivery method
-- 90 - Payments
set @ITEMS =
(select ID, QUANTITY, DESCRIPTION, TOTAL, TYPECODE, SALESORDERITEMTYPECODE, PAYMENTID, DISCOUNTITEMID, EVENTID, REGISTRANTID, TICKETCOMBINATIONID, PRICETYPE, PRICETYPECODEID, PROGRAMNAME, TICKETSAPPLIED
from (
select
[SALESORDERITEM].[ID],
case [SALESORDERITEM].[TYPECODE]
when 6 then 0
else [SALESORDERITEM].[QUANTITY]
end as [QUANTITY],
case
when [SALESORDERITEMTICKETCOMBINATION].[TICKETCOMBINATIONID] is not null then
case
when [PROGRAM].[ISDAILYADMISSION] = 1 then [PROGRAM].[NAME]
else [EVENT].[NAME] + ' - ' + coalesce(' (' + convert(nvarchar(10), [EVENT].[STARTDATE], 101) + ' - ' + dbo.UFN_HOURMINUTE_DISPLAYTIME([EVENT].[STARTTIME]) + ')','')
end
when [SALESORDERITEM].[TYPECODE] = 0 then [SALESORDERITEM].[DESCRIPTION] + coalesce(' (' + convert(nvarchar(10), [EVENT].[STARTDATE], 101) + ' - ' + dbo.UFN_HOURMINUTE_DISPLAYTIME([EVENT].[STARTTIME]) + ')','')
when [SALESORDERITEM].[TYPECODE] = 6 then REGISTRANTNAMEFORMAT.NAME + ' - ' + [SALESORDERITEM].[DESCRIPTION]
else [SALESORDERITEM].[DESCRIPTION]
end as [DESCRIPTION],
case
when TYPECODE = 1 then -- membership
[SALESORDERITEM].[TOTAL] + (
select isnull(sum(ADDONITEMS.TOTAL), 0)
from dbo.SALESORDERITEM ADDONITEMS
inner join dbo.SALESORDERITEMMEMBERSHIPADDON SOIMA on ADDONITEMS.ID = SOIMA.ID
where ADDONITEMS.TYPECODE = 16 and SOIMA.SALESORDERITEMMEMBERSHIPID = SALESORDERITEM.ID
)
else
[SALESORDERITEM].[TOTAL]
end as [TOTAL],
0 TYPECODE,
case
when exists(select 1 from dbo.[SALESORDERITEMTICKETREGISTRANT] as [SOITR] where [SOITR].[SALESORDERITEMTICKETID] = [SALESORDERITEMTICKET].[ID]) then 254
when [SALESORDERITEMTICKETCOMBINATION].[TICKETCOMBINATIONID] is not null then 253
when [SALESORDERITEM].[TYPECODE] = 1 then (select [TYPECODE] from dbo.[SALESORDERITEMMEMBERSHIP] where [ID] = [SALESORDERITEM].[ID])
else [SALESORDERITEM].[TYPECODE]
end as [SALESORDERITEMTYPECODE],
null as [PAYMENTID],
null as [DISCOUNTITEMID],
[SALESORDERITEMTICKET].[EVENTID],
[REGISTRANT].[ID] as [REGISTRANTID],
[SALESORDERITEMTICKETCOMBINATION].[TICKETCOMBINATIONID],
PRICETYPECODE.DESCRIPTION as [PRICETYPE],
[SALESORDERITEMTICKET].[PRICETYPECODEID],
[COMBINATION].[NAME] as [PROGRAMNAME], --Only used for combos right now
0 as [TICKETSAPPLIED],
--below fields are used for sorting
case
when TYPECODE = 0 then --ticket
0
when TYPECODE = 2 then --donation
50
when TYPECODE = 6 then --event registration
20
else
0 --should not occur
end as [ORDERITEMTYPE],
0 as [SUBORDERITEMTYPE],
case
when [SALESORDERITEMTICKETCOMBINATION].[TICKETCOMBINATIONID] is not null then [COMBINATION].[NAME]
when [SALESORDERITEM].[TYPECODE] = 0 then [SALESORDERITEM].[DESCRIPTION] + coalesce(' (' + convert(nvarchar(10), [EVENT].[STARTDATE], 101) + ' - ' + dbo.UFN_HOURMINUTE_DISPLAYTIME([EVENT].[STARTTIME]) + ')','')
when [SALESORDERITEM].[TYPECODE] = 6 then REGISTRANTNAMEFORMAT.NAME + ' - ' + [SALESORDERITEM].[DESCRIPTION]
else [SALESORDERITEM].[DESCRIPTION]
end as [ORDERSORTFIELD1],
case
when [SALESORDERITEMTICKETCOMBINATION].[TICKETCOMBINATIONID] is not null then
case
when [PROGRAM].[ISDAILYADMISSION] = 1 then [PROGRAM].[NAME]
else [EVENT].[NAME] + ' - ' + coalesce(' (' + convert(nvarchar(10), [EVENT].[STARTDATE], 101) + ' - ' + dbo.UFN_HOURMINUTE_DISPLAYTIME([EVENT].[STARTTIME]) + ')','')
end
else cast([SALESORDERITEM].[ID] as nvarchar(36))
end as [ORDERSORTFIELD2]
from dbo.[SALESORDERITEM]
left join dbo.[SALESORDERITEMTICKET]
on [SALESORDERITEM].[ID] = [SALESORDERITEMTICKET].[ID]
left join dbo.[SALESORDERITEMEVENTREGISTRATION]
on [SALESORDERITEM].[ID] = [SALESORDERITEMEVENTREGISTRATION].[ID]
left join dbo.[REGISTRANT]
on [SALESORDERITEMEVENTREGISTRATION].[REGISTRANTID] = [REGISTRANT].[ID]
left join dbo.[SALESORDERITEMTICKETCOMBINATION]
on [SALESORDERITEMTICKET].[ID] = [SALESORDERITEMTICKETCOMBINATION].[ID]
left join dbo.[COMBINATION]
on [SALESORDERITEMTICKETCOMBINATION].[COMBINATIONID] = [COMBINATION].[ID]
left join dbo.[EVENT]
on [SALESORDERITEMTICKET].[EVENTID] = [EVENT].[ID]
left join dbo.[PROGRAM]
on [SALESORDERITEMTICKET].[PROGRAMID] = [PROGRAM].[ID]
left join dbo.PRICETYPECODE
on PRICETYPECODE.ID = SALESORDERITEMTICKET.PRICETYPECODEID
outer apply
dbo.UFN_CONSTITUENT_DISPLAYNAME(REGISTRANT.CONSTITUENTID) as REGISTRANTNAMEFORMAT
where [SALESORDERITEM].[SALESORDERID] = @ID
and [SALESORDERITEM].[TYPECODE] in (0,2,6)
union all
-- Membership
select
[SALESORDERITEM].[ID],
[SALESORDERITEM].[QUANTITY],
[SALESORDERITEM].[DESCRIPTION],
[SALESORDERITEM].[TOTAL],
0 TYPECODE,
[SALESORDERITEM].[TYPECODE] as [SALESORDERITEMTYPECODE],
null as [PAYMENTID],
null as [DISCOUNTITEMID],
null as [EVENTID],
null as [REGISTRANTID],
null as [TICKETCOMBINATIONID],
null as [PRICETYPE],
null [PRICETYPECODEID],
null as [PROGRAMNAME],
case
when exists (select 1 from dbo.SALESORDERITEMMEMBERSHIPITEMPROMOTION where SALESORDERITEMID = SALESORDERITEM.ID and MEMBERSHIPPROMOID is null) then
1
else
0
end as [TICKETSAPPLIED], --only used for memberships right now
--below fields are used for sorting
30 [ORDERITEMTYPE],
[SALESORDERITEM].[TYPECODE] as [SUBORDERITEMTYPE],
case
when [SALESORDERITEM].[TYPECODE] = 1 then cast([SALESORDERITEM].[ID] as nvarchar(36))
else cast([SALESORDERITEMMEMBERSHIPADDON].[SALESORDERITEMMEMBERSHIPID] as nvarchar(36))
end as [ORDERSORTFIELD1],
'' as [ORDERSORTFIELD2]
from dbo.[SALESORDERITEM]
left join dbo.[SALESORDERITEMMEMBERSHIP]
on [SALESORDERITEM].[ID] = [SALESORDERITEMMEMBERSHIP].[ID]
left join dbo.[SALESORDERITEMMEMBERSHIPADDON]
on [SALESORDERITEM].[ID] = [SALESORDERITEMMEMBERSHIPADDON].[ID]
where [SALESORDERITEM].[SALESORDERID] = @ID
and [SALESORDERITEM].[TYPECODE] in (1, 16)
union all
-- Merchandise
select
[SOI].[ID],
[SOI].[QUANTITY],
[MPI].[ITEMDETAILS],
[SOI].[TOTAL],
9 as TYPECODE,
[SOI].[TYPECODE] as [SALESORDERITEMTYPECODE],
null as [PAYMENTID],
null as [DISCOUNTITEMID],
null as [EVENTID],
null as [REGISTRANTID],
null as [TICKETCOMBINATIONID],
null as [PRICETYPE],
null as [PRICETYPECODEID],
null as [PROGRAMNAME],
0 as [TICKETSAPPLIED],
40 as [ORDERITEMTYPE],
0 as [SUBORDERITEMTYPE],
null as [ORDERSORTFIELD1],
null as [ORDERSORTFIELD2]
from dbo.SALESORDERITEM SOI
inner join dbo.SALESORDERITEMMERCHANDISE SOIM on SOIM.ID = SOI.ID
inner join dbo.MERCHANDISEPRODUCTINSTANCE MPI on SOIM.MERCHANDISEPRODUCTINSTANCEID = MPI.ID
where SOI.SALESORDERID = @ID
union all
select
[SALESORDERITEMITEMDISCOUNT].[DISCOUNTID] as [ID],
case when [DISCOUNT].[DISCOUNTTYPECODE] = 2 then
null
else
[LIMIT].[NUMBEROFDISCOUNTSPERORDER]
end as [QUANTITY],
[DISCOUNTNAME] as [DESCRIPTION],
-SUM([SALESORDERITEMITEMDISCOUNT].[AMOUNT]) AS [TOTAL],
1 [TYPECODE],
null as [SALESORDERITEMTYPECODE],
null as [PAYMENTID],
[SALESORDERMANUALDISCOUNT].[ID] as [DISCOUNTITEMID],
null as [EVENTID],
null as [REGISTRANTID],
null as [TICKETCOMBINATIONID],
null as [PRICETYPE],
null as [PRICETYPECODEID],
null as [PROGRAMNAME],
0 as [TICKETSAPPLIED],
60 as [ORDERITEMTYPE],
0 as [SUBORDERITEMTYPE],
null as [ORDERSORTFIELD1],
null as [ORDERSORTFIELD2]
from dbo.[SALESORDERITEMITEMDISCOUNT]
inner join dbo.[SALESORDERITEM] on
[SALESORDERITEMITEMDISCOUNT].[SALESORDERITEMID] = [SALESORDERITEM].[ID]
inner join dbo.DISCOUNT on
[DISCOUNT].[ID] = [SALESORDERITEMITEMDISCOUNT].[DISCOUNTID]
left join dbo.[SALESORDERDISCOUNTLIMITOVERRIDE] [LIMIT] on
[LIMIT].[DISCOUNTID] = [SALESORDERITEMITEMDISCOUNT].[DISCOUNTID] and
[LIMIT].[SALESORDERID] = @ID
left join dbo.[SALESORDERMANUALDISCOUNT] on
[SALESORDERMANUALDISCOUNT].[DISCOUNTID] = [SALESORDERITEMITEMDISCOUNT].[DISCOUNTID] and
[SALESORDERMANUALDISCOUNT].[SALESORDERID] = [SALESORDERITEM].[SALESORDERID]
where SALESORDERITEM.SALESORDERID = @ID
group by [SALESORDERITEMITEMDISCOUNT].[DISCOUNTID], [DISCOUNTNAME], [LIMIT].[NUMBEROFDISCOUNTSPERORDER], [SALESORDERMANUALDISCOUNT].[ID], [DISCOUNT].[DISCOUNTTYPECODE]
union all
--applied tickets
select
[SALESORDERITEMMEMBERSHIPITEMPROMOTION].[ID] AS [ID],
null as [QUANTITY],
[PROMOTIONNAME] as [DESCRIPTION],
-[AMOUNT] AS [TOTAL],
case
when SALESORDERITEMMEMBERSHIPITEMPROMOTION.MEMBERSHIPPROMOID is null then 7
else 5
end as [TYPECODE],
252 as [SALESORDERITEMTYPECODE],
null as [PAYMENTID],
[SALESORDERITEMMEMBERSHIPITEMPROMOTION].[SALESORDERITEMID] as [DISCOUNTITEMID],
null as [EVENTID],
null as [REGISTRANTID],
null as [TICKETCOMBINATIONID],
null as [PRICETYPE],
null as [PRICETYPECODEID],
null as [PROGRAMNAME],
0 as [TICKETSAPPLIED],
30 as [ORDERITEMTYPE],
60 as [SUBORDERITEMTYPE],
[SALESORDERITEM].[DESCRIPTION] as [ORDERSORTFIELD1],
cast([SALESORDERITEM].[ID] as nvarchar(36)) as [ORDERSORTFIELD2]
from dbo.[SALESORDERITEMMEMBERSHIPITEMPROMOTION]
inner join dbo.[SALESORDERITEM] on
[SALESORDERITEMMEMBERSHIPITEMPROMOTION].[SALESORDERITEMID] = [SALESORDERITEM].[ID]
where SALESORDERITEM.SALESORDERID = @ID
union all
select
[SALESORDERITEMORDERDISCOUNT].[DISCOUNTID],
null as [QUANTITY],
[DESCRIPTION] as [DESCRIPTION],
-[TOTAL] AS [TOTAL],
case
when [SALESORDERITEMORDERDISCOUNT].[DISCOUNTID] is null then
4
else
1
end as TYPECODE,
null as [SALESORDERITEMTYPECODE],
null as [PAYMENTID],
case
when [SALESORDERITEMORDERDISCOUNT].[DISCOUNTID] is null then
[SALESORDERITEM].ID
else
[SALESORDERMANUALDISCOUNT].[ID]
end as [DISCOUNTITEMID],
null as [EVENTID],
null as [REGISTRANTID],
null as [TICKETCOMBINATIONID],
null as [PRICETYPE],
null as [PRICETYPECODEID],
null as [PROGRAMNAME],
0 as [TICKETSAPPLIED],
60 as [ORDERITEMTYPE],
0 as [SUBORDERITEMTYPE],
null as [ORDERSORTFIELD1],
null as [ORDERSORTFIELD2]
from dbo.[SALESORDERITEM]
inner join dbo.[SALESORDERITEMORDERDISCOUNT] on
[SALESORDERITEMORDERDISCOUNT].[ID] = [SALESORDERITEM].[ID]
left join dbo.[SALESORDERMANUALDISCOUNT] on
[SALESORDERMANUALDISCOUNT].[DISCOUNTID] = [SALESORDERITEMORDERDISCOUNT].[DISCOUNTID] and
[SALESORDERMANUALDISCOUNT].[SALESORDERID] = [SALESORDERITEM].[SALESORDERID]
where [SALESORDERITEM].[SALESORDERID] = @ID
union all
--Membership Promos
select
[SALESORDERITEMMEMBERSHIPPROMO].[MEMBERSHIPPROMOID],
null as [QUANTITY],
[DESCRIPTION] as [DESCRIPTION],
-[TOTAL] AS [TOTAL],
5 TYPECODE,
SALESORDERITEM.TYPECODE as [SALESORDERITEMTYPECODE],
null as [PAYMENTID],
[SALESORDERITEMMEMBERSHIPPROMO].[ID] as [DISCOUNTITEMID],
null as [EVENTID],
null as [REGISTRANTID],
null as [TICKETCOMBINATIONID],
null as [PRICETYPE],
null as [PRICETYPECODEID],
null as [PROGRAMNAME],
0 as [TICKETSAPPLIED],
60 as [ORDERITEMTYPE],
0 as [SUBORDERITEMTYPE] ,
null as [ORDERSORTFIELD1],
null as [ORDERSORTFIELD2]
from dbo.[SALESORDERITEM]
inner join dbo.[SALESORDERITEMMEMBERSHIPPROMO] on
[SALESORDERITEMMEMBERSHIPPROMO].[ID] = [SALESORDERITEM].[ID]
where
[SALESORDERITEM].[SALESORDERID] = @ID and
[SALESORDERITEMMEMBERSHIPPROMO].[INUSE] = 1
union all
select
[SALESORDERITEMFEE].[FEEID],
1,
[SALESORDERITEM].[DESCRIPTION],
sum([TOTAL]) as [TOTAL],
2 TYPECODE,
null as [SALESORDERITEMTYPECODE],
null as [PAYMENTID],
null as [DISCOUNTITEMID],
null as [EVENTID],
null as [REGISTRANTID],
null as [TICKETCOMBINATIONID],
null as [PRICETYPE],
null as [PRICETYPECODEID],
null as [PROGRAMNAME],
0 as [TICKETSAPPLIED],
70 as [ORDERITEMTYPE],
0 as [SUBORDERITEMTYPE],
null as [ORDERSORTFIELD1],
null as [ORDERSORTFIELD2]
from dbo.[SALESORDERITEM]
inner join dbo.SALESORDERITEMFEE on SALESORDERITEM.ID = SALESORDERITEMFEE.ID
where SALESORDERID = @ID
and SALESORDERITEM.TYPECODE = 3
group by SALESORDERITEMFEE.FEEID, SALESORDERITEM.DESCRIPTION
union all
select
SALESORDERPAYMENT.PAYMENTID AS [ID],
1 as [QUANTITY],
case REVENUEPAYMENTMETHOD.PAYMENTMETHODCODE
when 2 then
dbo.UFN_CREDITTYPECODE_GETDESCRIPTION(CREDITCARDPAYMENTMETHODDETAIL.CREDITTYPECODEID) + ': ' + CREDITCARDPAYMENTMETHODDETAIL.CREDITCARDPARTIALNUMBER + ' - ' + CREDITCARDPAYMENTMETHODDETAIL.AUTHORIZATIONCODE
when 10 then
dbo.UFN_OTHERPAYMENTMETHODCODE_GETDESCRIPTION(OTHERPAYMENTMETHODDETAIL.OTHERPAYMENTMETHODCODEID)
else
REVENUEPAYMENTMETHOD.PAYMENTMETHOD
end as [DESCRIPTION],
-SALESORDERPAYMENT.AMOUNTTENDERED AS [TOTAL],
3 TYPECODE,
null as [SALESORDERITEMTYPECODE],
SALESORDERPAYMENT.ID as [PAYMENTID],
null as [DISCOUNTITEMID],
null as [EVENTID],
null as [REGISTRANTID],
null as [TICKETCOMBINATIONID],
null as [PRICETYPE],
null as [PRICETYPECODEID],
null as [PROGRAMNAME],
0 as [TICKETSAPPLIED],
80 as [ORDERITEMTYPE],
0 as [SUBORDERITEMTYPE],
null as [ORDERSORTFIELD1],
null as [ORDERSORTFIELD2]
from dbo.SALESORDERPAYMENT
inner join dbo.REVENUEPAYMENTMETHOD on SALESORDERPAYMENT.PAYMENTID = REVENUEPAYMENTMETHOD.REVENUEID
left join dbo.CREDITCARDPAYMENTMETHODDETAIL on REVENUEPAYMENTMETHOD.ID = CREDITCARDPAYMENTMETHODDETAIL.ID
left join dbo.OTHERPAYMENTMETHODDETAIL on REVENUEPAYMENTMETHOD.ID = OTHERPAYMENTMETHODDETAIL.ID
where SALESORDERPAYMENT.SALESORDERID = @ID
union all
--Delivery method
select
[SALESORDER].[DELIVERYMETHODID] as [ID],
0 as [QUANTITY],
'Delivery method - ' + dbo.UFN_DELIVERYMETHOD_GETNAME([SALESORDER].[DELIVERYMETHODID]) as [DESCRIPTION],
0 as [TOTAL],
20 as [TYPECODE],
null as [SALESORDERITEMTYPECODE],
null as [PAYMENTID],
null as [DISCOUNTITEMID],
null as [EVENTID],
null as [REGISTRANTID],
null as [TICKETCOMBINATIONID],
null as [PRICETYPE],
null as [PRICETYPECODEID],
null as [PROGRAMNAME],
0 as [TICKETSAPPLIED],
85 as [ORDERITEMTYPE],
0 as [SUBORDERITEMTYPE],
null as [ORDERSORTFIELD1],
null as [ORDERSORTFIELD2]
from dbo.[SALESORDER]
where [SALESORDER].[ID] = @ID
and [SALESORDER].[SALESMETHODTYPECODE] in (1, 2) --Advanced, Online Sales
) as DETAILS
order by ORDERITEMTYPE, coalesce([ORDERSORTFIELD1], [DESCRIPTION]), coalesce([ORDERSORTFIELD2], cast([ID] as nvarchar(36))), SUBORDERITEMTYPE
for xml raw ('ITEM'), type, elements, root('ITEMS'), BINARY BASE64
);
select
@SUBTOTAL = SUBTOTAL,
@TOTAL = TOTAL,
@TAXES = TAXES,
@TENDERED = AMOUNTTENDERED,
@CHANGEDUE = CHANGEDUE,
@BALANCE = BALANCE
from
dbo.UFN_SALESORDER_TOTALS(@ID);
-- This code is reused by the advance sales view form.
-- Makes sure that it doesn't hardcode the sales method.
set @AVAILABLEPAYMENTMETHODS = (
select PAYTYPES.PAYMENTTYPECODE
from dbo.UFN_SALESMETHODPAYMENTMETHOD_GETPAYMENTTYPES(@SALESMETHODID) PAYTYPES
for xml raw ('ITEM'), type, elements, root('AVAILABLEPAYMENTMETHODS'), BINARY BASE64
);
select top(1)
@MEMBERID = MEMBER.ID,
@PATRONMEMBERSHIPCOUNT = (
select count(*)
from dbo.MEMBER
where CONSTITUENTID = @CONSTITUENTID
and ISDROPPED = 0
),
@MEMBERSHIPID = MEMBERSHIP.ID
from dbo.MEMBER
inner join dbo.MEMBERSHIP
on MEMBER.MEMBERSHIPID = MEMBERSHIP.ID
inner join dbo.MEMBERSHIPLEVEL
on MEMBERSHIP.MEMBERSHIPLEVELID = MEMBERSHIPLEVEL.ID
inner join dbo.MEMBERSHIPPROGRAM
on MEMBERSHIPLEVEL.MEMBERSHIPPROGRAMID = MEMBERSHIPPROGRAM.ID
where
MEMBER.CONSTITUENTID = @CONSTITUENTID and
MEMBER.ISDROPPED = 0 and
getdate() <= dateadd(month, MEMBERSHIPLEVEL.AFTEREXPIRATION, MEMBERSHIP.EXPIRATIONDATE) and
MEMBERSHIP.STATUSCODE = 0
order by
MEMBERSHIPPROGRAM.ALLOWMULTIPLEMEMBERSHIPS asc;
set @ISTAXEXEMPT = dbo.UFN_SALESORDER_ISTAXEXEMPT(@ID);
return 0;