USP_DATALIST_SALESORDERTICKETS2
Parameters
Parameter | Parameter Type | Mode | Description |
---|---|---|---|
@CONTEXTID | uniqueidentifier | IN |
Definition
Copy
CREATE procedure dbo.USP_DATALIST_SALESORDERTICKETS2
(
@CONTEXTID uniqueidentifier
)
as
declare @FEESANDDISCOUNTS table (
SALESORDERITEMID uniqueidentifier,
FEES money,
DISCOUNTS money
);
insert into @FEESANDDISCOUNTS
select
SALESORDERITEM.ID,
(
select coalesce(sum(FEESALESORDERITEM.TOTAL),0.0)
from dbo.SALESORDERITEM as FEESALESORDERITEM
inner join dbo.SALESORDERITEMFEE on FEESALESORDERITEM.ID = SALESORDERITEMFEE.ID
where SALESORDERITEMFEE.SALESORDERITEMID = SALESORDERITEM.ID
) FEES,
(
select coalesce(sum(AMOUNT),0.0)
from dbo.SALESORDERITEMITEMDISCOUNT
where SALESORDERITEMID = SALESORDERITEM.ID
) DISCOUNTS
from dbo.SALESORDERITEM
where SALESORDERITEM.SALESORDERID = @CONTEXTID;
declare @TICKETCOMBINATION table (
SALESORDERID uniqueidentifier,
TICKETCOMBINATIONID uniqueidentifier,
PRICETYPECODEID uniqueidentifier,
SALESORDERTICKETCOMBINATIONID uniqueidentifier
);
insert into @TICKETCOMBINATION
(SALESORDERID, TICKETCOMBINATIONID, PRICETYPECODEID)
select distinct
SALESORDERITEM.SALESORDERID, SALESORDERITEMTICKETCOMBINATION.TICKETCOMBINATIONID, SALESORDERITEMTICKET.PRICETYPECODEID
from dbo.SALESORDERITEM
inner join dbo.SALESORDERITEMTICKET on SALESORDERITEM.ID = SALESORDERITEMTICKET.ID
inner join dbo.SALESORDERITEMTICKETCOMBINATION on SALESORDERITEMTICKET.ID = SALESORDERITEMTICKETCOMBINATION.ID
where SALESORDERITEM.SALESORDERID = @CONTEXTID;
update @TICKETCOMBINATION set SALESORDERTICKETCOMBINATIONID = newid();
select
TICKETS.TICKETCOMBINATIONID,
TICKETS.ID,
TICKETS.DESCRIPTION,
TICKETS.STARTDATE,
TICKETS.STARTTIME,
TICKETS.LOCATION,
TICKETS.QUANTITY,
TICKETS.PRICE,
TICKETS.DISCOUNTS,
TICKETS.FEES,
TICKETS.TOTAL,
TICKETS.EVENTID,
TICKETS.PROGRAMID,
TICKETS.PRICETYPECODEID,
case TICKETS.PRICINGSTRUCTURECODE
when 2 then 1 -- when structure is override rate
else 0
end as ISPRICEOVERRIDDEN,
TICKETS.ORDERDISCOUNT,
case
when exists(
select top 1 RESCHEDULETICKETSHISTORY.ID
from dbo.RESCHEDULETICKETSHISTORY
where RESCHEDULETICKETSHISTORY.SALESORDERITEMTICKETID = TICKETS.ID
)
then 1
else 0
end ISRESCHEDULED,
[NAME],
[COMBINATIONID]
from (
--Tickets
select
TICKETCOMBINATION.SALESORDERTICKETCOMBINATIONID as TICKETCOMBINATIONID,
SALESORDERITEM.ID,
SALESORDERITEM.DESCRIPTION,
EVENT.STARTDATE,
EVENT.STARTTIME,
dbo.UFN_EVENT_GETLOCATIONNAME(EVENT.ID) as LOCATION,
SALESORDERITEM.QUANTITY,
SALESORDERITEM.PRICE,
FEESANDDISCOUNTS.DISCOUNTS,
FEESANDDISCOUNTS.FEES,
SALESORDERITEM.TOTAL + FEESANDDISCOUNTS.FEES - FEESANDDISCOUNTS.DISCOUNTS as TOTAL,
EVENT.ID as EVENTID,
PROGRAM.ID as PROGRAMID,
SALESORDERITEMTICKET.PRICETYPECODEID,
SALESORDERITEM.DATEADDED,
SALESORDERITEM.PRICINGSTRUCTURECODE,
(
select coalesce(sum(AMOUNT),0)
from dbo.SALESORDERITEMORDERDISCOUNTDETAIL
where SALESORDERITEMID = SALESORDERITEM.ID
) as ORDERDISCOUNT, --Only calculated here for performance reasons (and not on the other unioned pieces) since this value is only one used online
isnull([EVENT].[NAME], PROGRAM.NAME) as NAME,
[SALESORDERITEMTICKETCOMBINATION].[COMBINATIONID]
from dbo.SALESORDERITEM
inner join @FEESANDDISCOUNTS as FEESANDDISCOUNTS on SALESORDERITEM.ID = FEESANDDISCOUNTS.SALESORDERITEMID
inner join dbo.SALESORDERITEMTICKET on SALESORDERITEM.ID = SALESORDERITEMTICKET.ID
inner join dbo.PRICETYPECODE on SALESORDERITEMTICKET.PRICETYPECODEID = PRICETYPECODE.ID
left join dbo.SALESORDERITEMTICKETCOMBINATION on SALESORDERITEMTICKET.ID = SALESORDERITEMTICKETCOMBINATION.ID
left join @TICKETCOMBINATION as TICKETCOMBINATION on SALESORDERITEM.SALESORDERID = TICKETCOMBINATION.SALESORDERID
and SALESORDERITEMTICKETCOMBINATION.TICKETCOMBINATIONID = TICKETCOMBINATION.TICKETCOMBINATIONID
and SALESORDERITEMTICKET.PRICETYPECODEID = TICKETCOMBINATION.PRICETYPECODEID
left join dbo.EVENT on SALESORDERITEMTICKET.EVENTID = EVENT.ID
left join dbo.PROGRAM on SALESORDERITEMTICKET.PROGRAMID = PROGRAM.ID
union all
-- Combination tickets
select distinct
null,
TICKETCOMBINATION.SALESORDERTICKETCOMBINATIONID,
COMBINATION.NAME + ' - ' + PRICETYPECODE.DESCRIPTION as DESCRIPTION,
null STARTDATE,
null STARTTIME,
null LOCATION,
SALESORDERITEM.QUANTITY,
dbo.UFN_SALESORDER_GETTICKETCOMBINATIONPRICE(SALESORDERITEM.ID),
0,
dbo.UFN_SALESORDER_GETTICKETCOMBINATIONFEES(SALESORDERITEM.ID),
SALESORDERITEM.QUANTITY * dbo.UFN_SALESORDER_GETTICKETCOMBINATIONPRICE(SALESORDERITEM.ID) + dbo.UFN_SALESORDER_GETTICKETCOMBINATIONFEES(SALESORDERITEM.ID),
null,
null,
SALESORDERITEMTICKET.PRICETYPECODEID,
SALESORDERITEM.DATEADDED,
SALESORDERITEM.PRICINGSTRUCTURECODE,
0 as ORDERDISCOUNT,
COMBINATION.NAME,
COMBINATION.ID as COMBINATIONID
from dbo.SALESORDERITEM
inner join @FEESANDDISCOUNTS as FEESANDDISCOUNTS on SALESORDERITEM.ID = FEESANDDISCOUNTS.SALESORDERITEMID
inner join dbo.SALESORDERITEMTICKET on SALESORDERITEM.ID = SALESORDERITEMTICKET.ID
inner join dbo.SALESORDERITEMTICKETCOMBINATION on SALESORDERITEMTICKET.ID = SALESORDERITEMTICKETCOMBINATION.ID
inner join @TICKETCOMBINATION as TICKETCOMBINATION on SALESORDERITEM.SALESORDERID = TICKETCOMBINATION.SALESORDERID
and SALESORDERITEMTICKETCOMBINATION.TICKETCOMBINATIONID = TICKETCOMBINATION.TICKETCOMBINATIONID
and SALESORDERITEMTICKET.PRICETYPECODEID = TICKETCOMBINATION.PRICETYPECODEID
inner join dbo.COMBINATION on SALESORDERITEMTICKETCOMBINATION.COMBINATIONID = COMBINATION.ID
inner join dbo.COMBINATIONPRICETYPE on COMBINATIONPRICETYPE.PRICETYPECODEID = SALESORDERITEMTICKET.PRICETYPECODEID
and COMBINATION.ID = COMBINATIONPRICETYPE.COMBINATIONID
inner join dbo.PRICETYPECODE on SALESORDERITEMTICKET.PRICETYPECODEID = PRICETYPECODE.ID
where SALESORDERITEM.SALESORDERID = @CONTEXTID
) TICKETS
order by TICKETS.DATEADDED, TICKETS.ID;