USP_DATALIST_ORDERDETAILS
Returns the list of the order item details.
Parameters
Parameter | Parameter Type | Mode | Description |
---|---|---|---|
@CONTEXTID | uniqueidentifier | IN | Input parameter indicating the context ID for the data list. |
Definition
Copy
CREATE procedure dbo.USP_DATALIST_ORDERDETAILS(@CONTEXTID uniqueidentifier)
as
set nocount on;
declare @INDENT char(4)
set @INDENT = ' '
declare @ORDERSUBTOTAL money;
declare @ORDERTOTAL money;
declare @TOTALTAXES money;
declare @AMOUNTTENDERED money;
declare @CHANGEDUE money;
select
@ORDERSUBTOTAL = SUBTOTAL,
@ORDERTOTAL = TOTAL,
@TOTALTAXES = TAXES,
@AMOUNTTENDERED = AMOUNTTENDERED,
@CHANGEDUE = CHANGEDUE
from
dbo.UFN_SALESORDER_TOTALS(@CONTEXTID);
select ITEMID, ID, DESCRIPTION, QUANTITY, TOTAL, ITEMTYPE, ISPARENT, ISBOLD
from
(
-- Daily admission tickets
select
distinct [PROGRAM].[ID] as [ITEMID],
(select top 1 [SALESORDERITEM].[ID]
from dbo.[SALESORDERITEM]
inner join dbo.[SALESORDERITEMTICKET] on [SALESORDERITEM].[ID] = [SALESORDERITEMTICKET].[ID]
where [SALESORDERITEM].[SALESORDERID] = @CONTEXTID and [SALESORDERITEMTICKET].[PROGRAMID] = [PROGRAM].[ID]
) as [ID],
[PROGRAM].[NAME] as [DESCRIPTION],
null as [QUANTITY],
null as [TOTAL],
0 as [ITEMTYPE],
1 as [ISPARENT],
0 AS [ISBOLD]
from dbo.[PROGRAM]
inner join dbo.[SALESORDERITEMTICKET] on [SALESORDERITEMTICKET].[PROGRAMID] = [PROGRAM].[ID]
inner join dbo.[SALESORDERITEM] on [SALESORDERITEM].[ID] = [SALESORDERITEMTICKET].[ID]
where [SALESORDERITEM].[SALESORDERID] = @CONTEXTID and
[SALESORDERITEM].[QUANTITY] > 0 and
[PROGRAM].[ISDAILYADMISSION] = 1
union all
select
[PROGRAM].[ID] as [ITEMID],
[SALESORDERITEM].[ID],
(@INDENT + [PRICETYPECODE].[DESCRIPTION]) as [DESCRIPTION],
[SALESORDERITEM].[QUANTITY] as [QUANTITY],
[SALESORDERITEM].[PRICE] * [SALESORDERITEM].[QUANTITY] as [TOTAL],
0 as [ITEMTYPE],
0 as [ISPARENT],
0 AS [ISBOLD]
from dbo.[SALESORDERITEM]
inner join dbo.[SALESORDERITEMTICKET] on [SALESORDERITEM].[ID] = [SALESORDERITEMTICKET].[ID]
inner join dbo.[PRICETYPECODE] on [SALESORDERITEMTICKET].[PRICETYPECODEID] = [PRICETYPECODE].[ID]
inner join dbo.[PROGRAM] on [SALESORDERITEMTICKET].[PROGRAMID] = [PROGRAM].[ID]
where [SALESORDERITEM].[SALESORDERID] = @CONTEXTID and
[SALESORDERITEM].[QUANTITY] > 0 and
[PROGRAM].[ISDAILYADMISSION] = 1
-- Scheduled program tickets
union all
select
distinct [EVENT].[ID] as [ITEMID],
(select top 1 [SALESORDERITEM].[ID]
from dbo.[SALESORDERITEM]
inner join dbo.[SALESORDERITEMTICKET]
on [SALESORDERITEM].[ID] = [SALESORDERITEMTICKET].[ID]
where [SALESORDERITEM].[SALESORDERID] = @CONTEXTID and [SALESORDERITEMTICKET].[EVENTID] = [EVENT].ID
) as [ID],
[EVENT].[NAME] + ' (' + convert(nvarchar(10), [EVENT].[STARTDATE], 101) + ' - ' + dbo.UFN_HOURMINUTE_DISPLAYTIME([EVENT].[STARTTIME]) + ')' as [DESCRIPTION],
null as [QUANTITY],
null as [TOTAL],
2 as [ITEMTYPE],
1 as [ISPARENT],
0 AS [ISBOLD]
from dbo.[EVENT]
inner join dbo.[SALESORDERITEMTICKET] on [SALESORDERITEMTICKET].[EVENTID] = [EVENT].[ID]
inner join dbo.[SALESORDERITEM] on [SALESORDERITEM].[ID] = [SALESORDERITEMTICKET].[ID]
where [SALESORDERITEM].[SALESORDERID] = @CONTEXTID and
[SALESORDERITEM].[QUANTITY] > 0
union all
select
[EVENT].[ID] as [ITEMID],
[SALESORDERITEM].[ID],
(@INDENT + [PRICETYPECODE].[DESCRIPTION]) as [DESCRIPTION],
[SALESORDERITEM].[QUANTITY] as [QUANTITY],
[SALESORDERITEM].[PRICE] * [SALESORDERITEM].[QUANTITY] as [TOTAL],
2 as [ITEMTYPE],
0 as [ISPARENT],
0 AS [ISBOLD]
from dbo.[SALESORDERITEM]
inner join dbo.[SALESORDERITEMTICKET] on [SALESORDERITEM].[ID] = [SALESORDERITEMTICKET].[ID]
inner join dbo.[PRICETYPECODE] on [SALESORDERITEMTICKET].[PRICETYPECODEID] = [PRICETYPECODE].[ID]
inner join dbo.[EVENT] on [SALESORDERITEMTICKET].[EVENTID] = [EVENT].[ID]
where [SALESORDERITEM].[SALESORDERID] = @CONTEXTID and
[SALESORDERITEM].[QUANTITY] > 0
-- Memberships
union all
select
[SALESORDERITEMMEMBERSHIP].[MEMBERSHIPID] as [ITEMID],
[SALESORDERITEM].[ID] as [ID],
[MEMBERSHIPPROGRAM].[NAME] as [DESCRIPTION],
null as [QUANTITY],
null as [TOTAL],
3 as [ITEMTYPE],
1 as [ISPARENT],
0 AS [ISBOLD]
from dbo.[SALESORDER]
inner join dbo.[SALESORDERITEM] on [SALESORDER].[ID] = [SALESORDERITEM].[SALESORDERID]
inner join dbo.[SALESORDERITEMMEMBERSHIP] on [SALESORDERITEM].[ID] = [SALESORDERITEMMEMBERSHIP].[ID]
inner join dbo.[MEMBERSHIPPROGRAM] on [MEMBERSHIPPROGRAM].[ID] = [SALESORDERITEMMEMBERSHIP].[MEMBERSHIPPROGRAMID]
left join dbo.[MEMBERSHIP] on [SALESORDERITEMMEMBERSHIP].[MEMBERSHIPID] = [MEMBERSHIP].[ID]
where [SALESORDER].[ID] = @CONTEXTID
union all
select
[SALESORDERITEMMEMBERSHIP].[MEMBERSHIPID] as [ITEMID],
[SALESORDERITEM].[ID] as [ID],
(@INDENT + right([SALESORDERITEM].[DESCRIPTION], len([SALESORDERITEM].[DESCRIPTION]) - charindex('-', [SALESORDERITEM].[DESCRIPTION]) - 1)) as [DESCRIPTION],
null as [QUANTITY],
[SALESORDERITEM].[TOTAL],
3 as [ITEMTYPE],
0 as [ISPARENT],
0 AS [ISBOLD]
from dbo.[SALESORDER]
inner join dbo.[SALESORDERITEM] on [SALESORDER].[ID] = [SALESORDERITEM].[SALESORDERID]
inner join dbo.[SALESORDERITEMMEMBERSHIP] on [SALESORDERITEM].[ID] = [SALESORDERITEMMEMBERSHIP].[ID]
left join dbo.[MEMBERSHIP] on [SALESORDERITEMMEMBERSHIP].[MEMBERSHIPID] = [MEMBERSHIP].[ID]
where [SALESORDER].[ID] = @CONTEXTID
-- Event registrant
union all
select
[SALESORDERITEM].[ID] as [ITEMID],
[SALESORDERITEMEVENTREGISTRATION].[REGISTRANTID] as [ID],
[EVENT].[NAME] + ' (' + convert(nvarchar(10), [EVENT].[STARTDATE], 101) + ' - ' + dbo.UFN_HOURMINUTE_DISPLAYTIME([EVENT].[STARTTIME]) + ')' as [DESCRIPTION],
null as [QUANTITY],
null as [TOTAL],
4 as [ITEMTYPE],
1 as [ISPARENT],
0 AS [ISBOLD]
from dbo.[SALESORDERITEM]
inner join dbo.[SALESORDERITEMEVENTREGISTRATION] on [SALESORDERITEM].[ID] = [SALESORDERITEMEVENTREGISTRATION].[ID]
inner join dbo.[REGISTRANT] on [SALESORDERITEMEVENTREGISTRATION].[REGISTRANTID] = [REGISTRANT].[ID]
inner join dbo.[EVENT] on [REGISTRANT].[EVENTID] = [EVENT].[ID]
where [SALESORDERITEM].[SALESORDERID] = @CONTEXTID
union all
select
[SALESORDERITEM].[ID] as [ITEMID],
[SALESORDERITEMEVENTREGISTRATION].[REGISTRANTID] as [ID],
(@INDENT + [EVENTPRICE].[NAME]) as [DESCRIPTION],
[SALESORDERITEMEVENTREGISTRANTREGISTRATION].[QUANTITY],
[SALESORDERITEMEVENTREGISTRANTREGISTRATION].[AMOUNT] as [TOTAL],
4 as [ITEMTYPE],
0 as [ISPARENT],
0 AS [ISBOLD]
from dbo.[SALESORDERITEM]
inner join dbo.[SALESORDERITEMEVENTREGISTRATION] on [SALESORDERITEM].[ID] = [SALESORDERITEMEVENTREGISTRATION].[ID]
inner join dbo.[SALESORDERITEMEVENTREGISTRANTREGISTRATION] on [SALESORDERITEMEVENTREGISTRATION].[ID] = [SALESORDERITEMEVENTREGISTRANTREGISTRATION].[SALESORDERITEMEVENTREGISTRATIONID]
inner join dbo.[REGISTRANT] on [SALESORDERITEMEVENTREGISTRATION].[REGISTRANTID] = [REGISTRANT].[ID]
inner join dbo.[EVENT] on [REGISTRANT].[EVENTID] = [EVENT].[ID]
inner join dbo.[EVENTPRICE] on [SALESORDERITEMEVENTREGISTRANTREGISTRATION].[EVENTPRICEID] = [EVENTPRICE].[ID]
where [SALESORDERITEM].[SALESORDERID] = @CONTEXTID
-- Donations
union all
select
[SALESORDERITEM].[ID] as [ITEMID],
[SALESORDERITEM].[ID],
[SALESORDERITEM].[DESCRIPTION],
[SALESORDERITEM].[QUANTITY],
[SALESORDERITEM].[TOTAL],
5 as [ITEMTYPE],
1 as [ISPARENT],
0 AS [ISBOLD]
from dbo.[SALESORDERITEM]
inner join dbo.[SALESORDERITEMDONATION] on [SALESORDERITEM].[ID] = [SALESORDERITEMDONATION].[ID]
where [SALESORDERITEM].[SALESORDERID] = @CONTEXTID
-- Delivery method and fees
union all
select
[SALESORDER].[DELIVERYMETHODID] as [ITEMID],
[SALESORDER].[DELIVERYMETHODID] as [ID],
'Delivery method - ' + dbo.UFN_DELIVERYMETHOD_GETNAME([SALESORDER].[DELIVERYMETHODID]) as [DESCRIPTION],
null as [QUANTITY],
null as [TOTAL],
6 as [ITEMTYPE],
1 as [ISPARENT],
0 AS [ISBOLD]
from dbo.[SALESORDER]
where [SALESORDER].[ID] = @CONTEXTID
union all
select
[SALESORDER].[DELIVERYMETHODID] as [ITEMID],
[SALESORDERITEM].[ID],
(@INDENT + [SALESORDERITEM].[DESCRIPTION]) as [DESCRIPTION],
null as [QUANTITY],
[SALESORDERITEM].[TOTAL] as [TOTAL],
6 as [ITEMTYPE],
0 as [ISPARENT],
0 AS [ISBOLD]
from dbo.[SALESORDERITEM]
inner join dbo.[SALESORDERITEMFEE] on [SALESORDERITEM].[ID] = [SALESORDERITEMFEE].[ID]
inner join dbo.[SALESORDER] on [SALESORDER].[ID] = [SALESORDERITEM].[SALESORDERID]
where [SALESORDERITEM].[SALESORDERID] = @CONTEXTID and
[SALESORDERITEM].[TYPECODE] = 3 and
[SALESORDERITEMFEE].[APPLIESTOCODE] = 0 and
[SALESORDERITEMFEE].[TYPECODE] = 0
-- Fees
union all
select
[SALESORDERITEM].[ID] as [ITEMID],
[SALESORDERITEM].[ID],
[SALESORDERITEM].[DESCRIPTION] as [DESCRIPTION],
null as [QUANTITY],
[SALESORDERITEM].[TOTAL] as [TOTAL],
7 as [ITEMTYPE],
0 as [ISPARENT],
0 AS [ISBOLD]
from dbo.[SALESORDERITEM]
inner join dbo.[SALESORDERITEMFEE] on [SALESORDERITEM].[ID] = [SALESORDERITEMFEE].[ID]
where [SALESORDERITEM].[SALESORDERID] = @CONTEXTID and
[SALESORDERITEM].[TYPECODE] = 3 and
[SALESORDERITEMFEE].[APPLIESTOCODE] = 0 and
[SALESORDERITEMFEE].[TYPECODE] <> 0
-- Discounts
union all
select
[SALESORDERITEM].[ID] as [ITEMID],
[SALESORDERITEM].[ID],
[SALESORDERITEM].[DESCRIPTION],
null as [QUANTITY],
(-1 * [SALESORDERITEM].[TOTAL]) as [TOTAL],
8 as [ITEMTYPE],
1 as [ISPARENT],
0 AS [ISBOLD]
from dbo.[SALESORDERITEM]
where [SALESORDERITEM].[SALESORDERID] = @CONTEXTID and
[SALESORDERITEM].[TYPECODE] = 5
-- Subtotal
union all
select
null as [ITEMID],
@CONTEXTID as [ID],
'Subtotal' as [DESCRIPTION],
null as [QUANTITY],
@ORDERSUBTOTAL as [TOTAL],
9 as [ITEMTYPE],
1 as [ISPARENT],
1 AS [ISBOLD]
where @ORDERSUBTOTAL > 0
-- Taxes
union all
select
[SALESORDERITEM].[ID] as [ITEMID],
[SALESORDERITEM].[ID],
[SALESORDERITEM].[DESCRIPTION],
null as [QUANTITY],
[SALESORDERITEM].[TOTAL],
10 as [ITEMTYPE],
1 as [ISPARENT],
0 AS [ISBOLD]
from dbo.[SALESORDERITEM]
where [SALESORDERITEM].[SALESORDERID] = @CONTEXTID and
[SALESORDERITEM].[TYPECODE] = 4 and
[SALESORDERITEM].[TOTAL] > 0
-- Total
union all
select
null as [ITEMID],
@CONTEXTID as [ID],
'Total' as [DESCRIPTION],
null as [QUANTITY],
@ORDERTOTAL as [TOTAL],
11 as [ITEMTYPE],
1 as [ISPARENT],
1 AS [ISBOLD]
where @ORDERTOTAL > 0
-- White space
union all
select
null as [ITEMID],
@CONTEXTID as [ID],
null as [DESCRIPTION],
null as [QUANTITY],
null as [TOTAL],
12 as [ITEMTYPE],
1 as [ISPARENT],
0 AS [ISBOLD]
union all
select
null as [ITEMID],
@CONTEXTID as [ID],
null as [DESCRIPTION],
null as [QUANTITY],
null as [TOTAL],
12 as [ITEMTYPE],
1 as [ISPARENT],
0 AS [ISBOLD]
-- Payment label
union all
select
null as [ITEMID],
@CONTEXTID as [ID],
'Paid' as [DESCRIPTION],
null as [QUANTITY],
null as [TOTAL],
13 as [ITEMTYPE],
1 as [ISPARENT],
1 AS [ISBOLD]
-- Payments
union all
select
SALESORDERPAYMENT.ID as [ITEMID],
SALESORDERPAYMENT.ID as [ID],
--SALESORDERPAYMENT.PAYMENTID,
(@INDENT + case when REVENUEPAYMENTMETHOD.PAYMENTMETHODCODE = 0
then REVENUEPAYMENTMETHOD.PAYMENTMETHOD
when REVENUEPAYMENTMETHOD.PAYMENTMETHODCODE = 1
then (select 'Check: #' + CHECKNUMBER + ', ' + convert(nvarchar(20), dbo.UFN_DATE_FROMFUZZYDATE(CHECKDATE), 101)
from dbo.CHECKPAYMENTMETHODDETAIL
where ID = REVENUEPAYMENTMETHOD.ID)
when REVENUEPAYMENTMETHOD.PAYMENTMETHODCODE = 2
then (select dbo.UFN_CREDITTYPECODE_GETDESCRIPTION(CREDITTYPECODEID) + ': ' + CREDITCARDPAYMENTMETHODDETAIL.CREDITCARDPARTIALNUMBER
from dbo.CREDITCARDPAYMENTMETHODDETAIL
where ID = REVENUEPAYMENTMETHOD.ID)
when REVENUEPAYMENTMETHOD.PAYMENTMETHODCODE = 10
then REVENUEPAYMENTMETHOD.PAYMENTMETHOD + ': ' +
(select dbo.UFN_OTHERPAYMENTMETHODCODE_GETDESCRIPTION(OTHERPAYMENTMETHODCODEID)
from dbo.OTHERPAYMENTMETHODDETAIL
where ID = REVENUEPAYMENTMETHOD.ID)
end) as [DESCRIPTION],
null as [QUANTITY],
SALESORDERPAYMENT.AMOUNTTENDERED as [TOTAL],
14 as [ITEMTYPE],
0 as [ISPARENT],
0 AS [ISBOLD]
from dbo.REVENUE
inner join dbo.REVENUEPAYMENTMETHOD on REVENUE.ID = REVENUEPAYMENTMETHOD.REVENUEID
inner join dbo.SALESORDERPAYMENT on REVENUE.ID = SALESORDERPAYMENT.PAYMENTID
left join dbo.REVENUEPOSTED on REVENUEPOSTED.ID = REVENUE.ID
where SALESORDERPAYMENT.SALESORDERID = @CONTEXTID
-- Payment total label
union all
select
null as [ITEMID],
@CONTEXTID as [ID],
'Total Paid' as [DESCRIPTION],
null as [QUANTITY],
@AMOUNTTENDERED as [TOTAL],
15 as [ITEMTYPE],
1 as [ISPARENT],
1 AS [ISBOLD]
-- Change due label
union all
select
null as [ITEMID],
@CONTEXTID as [ID],
'Change Due' as [DESCRIPTION],
null as [QUANTITY],
@CHANGEDUE as [TOTAL],
16 as [ITEMTYPE],
1 as [ISPARENT],
0 AS [ISBOLD]
where @CHANGEDUE > 0
) as SALESORDERITEMS
order by ITEMTYPE asc, ITEMID asc, ISPARENT desc