USP_DATALIST_RESERVATION_FLATRATETICKETS
Lists the flat rate tickets on an order.
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_RESERVATION_FLATRATETICKETS
(
@CONTEXTID uniqueidentifier
)
as
declare @EXTRAFLATRATEPEOPLE table
(
EVENTID uniqueidentifier,
PROGRAMID uniqueidentifier,
PRICETYPEID uniqueidentifier,
ITINERARYID uniqueidentifier,
QUANTITY int
)
insert into @EXTRAFLATRATEPEOPLE (EVENTID, PROGRAMID, PRICETYPEID, ITINERARYID, QUANTITY)
select
EVENTID,
PROGRAMID,
PRICETYPEID,
EFRP.ITINERARYID,
QUANTITY
from dbo.UFN_RESERVATION_GETEXTRAFLATRATEPEOPLE(@CONTEXTID) as EFRP
inner join ITINERARYITEM on
ITINERARYITEM.ITINERARYID = EFRP.ITINERARYID
declare @GENERATEDITINERARYNAMES table
(
ID uniqueidentifier,
NAME nvarchar(256)
)
insert into @GENERATEDITINERARYNAMES (ID, NAME)
select
ID,
'Itinerary ' + cast(row_number() over (partition by RESERVATIONID order by DATEADDED) as nvarchar(10)) + ' (' + NAME + ')' as NAME
from dbo.ITINERARY
where RESERVATIONID = @CONTEXTID
declare @SHOWITINERARYNAME bit
select @SHOWITINERARYNAME = case count(ID)
when 1 then 0
else 1
end
from dbo.ITINERARY
where RESERVATIONID = @CONTEXTID
select
[ID],
[DESCRIPTION],
[STARTDATE],
[STARTTIME],
[LOCATION],
[QUANTITY],
[EVENTID],
[PROGRAMID],
[PRICETYPECODEID],
[ITINERARYNAME],
[PRICE]
from(
--Flat Rate Tickets
select
[SALESORDERITEM].[ID],
coalesce(EVENT.NAME, PROGRAM.NAME) as [DESCRIPTION],
[EVENT].[STARTDATE],
[EVENT].[STARTTIME],
dbo.UFN_EVENT_GETLOCATIONNAME([EVENT].[ID]) as [LOCATION],
[ITINERARYATTENDEE].[QUANTITY] - coalesce(EFRP.QUANTITY, 0) as [QUANTITY],
[EVENT].[ID] as [EVENTID],
[PROGRAM].[ID] as [PROGRAMID],
[SALESORDERITEMTICKET].[PRICETYPECODEID],
[SALESORDERITEM].[DATEADDED],
PRICETYPECODE.DESCRIPTION + case @SHOWITINERARYNAME when 1 then ' - ' + INAMES.NAME else '' end as [ITINERARYNAME],
null as PRICE
from dbo.[SALESORDERITEM]
inner join dbo.[SALESORDERITEMTICKET] on [SALESORDERITEM].[ID] = [SALESORDERITEMTICKET].[ID]
inner join dbo.[PRICETYPECODE] on [SALESORDERITEMTICKET].[PRICETYPECODEID] = [PRICETYPECODE].[ID]
inner join ITINERARYITEM on SALESORDERITEMTICKET.PROGRAMID = ITINERARYITEM.PROGRAMID or SALESORDERITEMTICKET.EVENTID = ITINERARYITEM.EVENTID
inner join ITINERARY on ITINERARYITEM.ITINERARYID = ITINERARY.ID
inner join @GENERATEDITINERARYNAMES INAMES on ITINERARY.ID = INAMES.ID
inner join ITINERARYATTENDEE on ITINERARY.ID = ITINERARYATTENDEE.ITINERARYID and SALESORDERITEMTICKET.PRICETYPECODEID = ITINERARYATTENDEE.PRICETYPECODEID
left join dbo.[EVENT] on [SALESORDERITEMTICKET].[EVENTID] = [EVENT].[ID]
left join dbo.[PROGRAM] on [SALESORDERITEMTICKET].[PROGRAMID] = [PROGRAM].[ID]
left join @EXTRAFLATRATEPEOPLE EFRP on PRICETYPECODE.ID = EFRP.PRICETYPEID and (EVENT.ID = EFRP.EVENTID or PROGRAM.ID = EFRP.PROGRAMID) and ITINERARY.ID = EFRP.ITINERARYID
where [SALESORDERITEM].[PRICINGSTRUCTURECODE] = 1
and [SALESORDERITEM].[SALESORDERID] = @CONTEXTID
union all
--Extra Tickets
select
[SALESORDERITEM].[ID],
coalesce(EVENT.NAME, PROGRAM.NAME) as [DESCRIPTION],
[EVENT].[STARTDATE],
[EVENT].[STARTTIME],
dbo.UFN_EVENT_GETLOCATIONNAME([EVENT].[ID]) as [LOCATION],
EFRP.QUANTITY as [QUANTITY],
[EVENT].[ID] as [EVENTID],
[PROGRAM].[ID] as [PROGRAMID],
[SALESORDERITEMTICKET].[PRICETYPECODEID],
[SALESORDERITEM].[DATEADDED],
'Additional ' + PRICETYPECODE.DESCRIPTION + case @SHOWITINERARYNAME when 1 then ' - ' + INAMES.NAME else '' end as [ITINERARYNAME],
SALESORDERITEM.PRICE as PRICE
from dbo.[SALESORDERITEM]
inner join dbo.[SALESORDERITEMTICKET] on [SALESORDERITEM].[ID] = [SALESORDERITEMTICKET].[ID]
inner join dbo.[PRICETYPECODE] on [SALESORDERITEMTICKET].[PRICETYPECODEID] = [PRICETYPECODE].[ID]
inner join ITINERARYITEM on SALESORDERITEMTICKET.PROGRAMID = ITINERARYITEM.PROGRAMID or SALESORDERITEMTICKET.EVENTID = ITINERARYITEM.EVENTID
inner join ITINERARY on ITINERARYITEM.ITINERARYID = ITINERARY.ID
inner join @GENERATEDITINERARYNAMES INAMES on ITINERARY.ID = INAMES.ID
inner join ITINERARYATTENDEE on ITINERARY.ID = ITINERARYATTENDEE.ITINERARYID and SALESORDERITEMTICKET.PRICETYPECODEID = ITINERARYATTENDEE.PRICETYPECODEID
left join dbo.[EVENT] on [SALESORDERITEMTICKET].[EVENTID] = [EVENT].[ID]
left join dbo.[PROGRAM] on [SALESORDERITEMTICKET].[PROGRAMID] = [PROGRAM].[ID]
inner join @EXTRAFLATRATEPEOPLE EFRP on PRICETYPECODE.ID = EFRP.PRICETYPEID and (EVENT.ID = EFRP.EVENTID or PROGRAM.ID = EFRP.PROGRAMID) and ITINERARY.ID = EFRP.ITINERARYID
where [SALESORDERITEM].[PRICINGSTRUCTURECODE] = 1
and [SALESORDERITEM].[SALESORDERID] = @CONTEXTID
) as [TICKETS]
where QUANTITY > 0
order by DATEADDED