USP_DATAFORMTEMPLATE_VIEW_SALESORDER_ONLINE_ETICKETS
Parameters
Parameter | Parameter Type | Mode | Description |
---|---|---|---|
@ID | uniqueidentifier | IN | |
@DATALOADED | bit | INOUT | |
@CURRENTAPPUSERID | uniqueidentifier | IN | |
@ORDERNUMBER | int | INOUT | |
@ORDERSTATUSCODE | tinyint | INOUT | |
@ORGANIZATIONNAME | nvarchar(100) | INOUT | |
@TICKETS | xml | INOUT |
Definition
Copy
CREATE procedure dbo.USP_DATAFORMTEMPLATE_VIEW_SALESORDER_ONLINE_ETICKETS
(
@ID uniqueidentifier,
@DATALOADED bit = 0 output,
@CURRENTAPPUSERID uniqueidentifier,
@ORDERNUMBER integer = null output,
@ORDERSTATUSCODE tinyint = null output,
@ORGANIZATIONNAME nvarchar(100) = null output,
@TICKETS xml = null output
)
as
set nocount on;
set @DATALOADED = 0;
declare @SALESMETHODTYPECODE tinyint = 0;
select
@DATALOADED = 1,
@ORDERNUMBER = SEQUENCEID,
@ORDERSTATUSCODE = STATUSCODE,
@SALESMETHODTYPECODE = SALESMETHODTYPECODE
from dbo.SALESORDER
where ID = @ID;
select top 1 @ORGANIZATIONNAME = NAME
from dbo.ORGANIZATIONINFORMATION
if @DATALOADED = 1 and @ORDERSTATUSCODE = 1 and @SALESMETHODTYPECODE in (0,1,2) --Complete Advance, Daily, or Online sale
begin
--If tickets haven't been generated for this order, we need to
if exists(select 1 from dbo.SALESORDERITEM with (nolock) where SALESORDERITEM.SALESORDERID = @ID) --Order has tickets
begin
declare @CHANGEAGENTID uniqueidentifier
exec dbo.USP_CHANGEAGENT_GETORCREATECHANGEAGENT @CHANGEAGENTID output
declare @CURRENTDATE datetime
set @CURRENTDATE = getdate()
insert into dbo.TICKETPRINTINFO
(
ID,
TICKETID,
APPUSERID,
ONLINEPRINT,
ADDEDBYID,
CHANGEDBYID,
DATEADDED,
DATECHANGED
)
select
newid(),
TICKET.ID,
@CURRENTAPPUSERID,
1,
@CHANGEAGENTID,
@CHANGEAGENTID,
@CURRENTDATE,
@CURRENTDATE
from dbo.TICKET
inner join dbo.SALESORDERITEM
on TICKET.SALESORDERITEMTICKETID = SALESORDERITEM.ID
where
SALESORDERITEM.SALESORDERID = @ID and
not exists (
select 1
from dbo.TICKETPRINTINFO
where TICKETID = TICKET.ID
) and
TICKET.STATUSCODE in (0,1) --Not refunded or exchanged
end
set @TICKETS = (
select
TICKET.ID as TICKETID,
TICKET.TICKETNUMBER,
isnull(EVENT.NAME, PROGRAM.NAME) as EVENTNAME,
EVENT.STARTDATE as EVENTSTARTDATE,
EVENT.STARTTIME as EVENTSTARTTIME,
case
when EVENT.ID is not null then
(
select dbo.UDA_BUILDLISTWITHDELIMITER(EVENTLOCATION.NAME, ', ')
from dbo.PROGRAMEVENTLOCATION
inner join dbo.EVENTLOCATION
on PROGRAMEVENTLOCATION.EVENTLOCATIONID = EVENTLOCATION.ID
where PROGRAMEVENTLOCATION.EVENTID = EVENT.ID
)
else
(
select dbo.UDA_BUILDLISTWITHDELIMITER(EVENTLOCATION.NAME, ', ')
from dbo.PROGRAMLOCATION
inner join dbo.EVENTLOCATION
on PROGRAMLOCATION.EVENTLOCATIONID = EVENTLOCATION.ID
where PROGRAMLOCATION.PROGRAMID = PROGRAM.ID
)
end as LOCATIONS,
PRICETYPECODE.DESCRIPTION as PRICETYPE,
SALESORDERITEMTICKET.PRICE,
TICKET.STATUSCODE
from dbo.TICKET with (nolock)
inner join dbo.SALESORDERITEMTICKET with (nolock)
on TICKET.SALESORDERITEMTICKETID = SALESORDERITEMTICKET.ID
inner join dbo.PRICETYPECODE with (nolock)
on SALESORDERITEMTICKET.PRICETYPECODEID = PRICETYPECODE.ID
inner join dbo.SALESORDERITEM with (nolock)
on SALESORDERITEMTICKET.ID = SALESORDERITEM.ID
left join dbo.PROGRAM with (nolock)
on SALESORDERITEMTICKET.PROGRAMID = PROGRAM.ID
left join dbo.EVENT with (nolock)
on SALESORDERITEMTICKET.EVENTID = EVENT.ID
where SALESORDERITEM.SALESORDERID = @ID
order by
EVENTSTARTDATE,
EVENTSTARTTIME,
EVENTNAME,
PRICETYPE,
TICKETNUMBER
for xml raw('ITEM'),type,elements,root('TICKETS'),binary base64
)
end
return 0;