USP_DATAFORMTEMPLATE_ADD_ITINERARYITEMEVENT_PRELOAD
The load procedure used by the edit dataform template "Itinerary Item Event Add Form"
Parameters
Parameter | Parameter Type | Mode | Description |
---|---|---|---|
@ITINERARYID | uniqueidentifier | IN | Input parameter indicating the context ID for the record being added. |
@EVENTS | xml | INOUT | Events |
@PRICINGCODE | tinyint | INOUT | |
@RESERVATIONRATESCALEINCLUDEALLPROGRAMS | bit | INOUT | |
@RESERVATIONRATESCALEPROGRAMS | xml | INOUT | |
@ITINERARYCAPACITY | int | INOUT | Itinerary capacity |
Definition
Copy
CREATE procedure dbo.USP_DATAFORMTEMPLATE_ADD_ITINERARYITEMEVENT_PRELOAD
(
@ITINERARYID uniqueidentifier,
@EVENTS xml = null output,
@PRICINGCODE tinyint = null output,
@RESERVATIONRATESCALEINCLUDEALLPROGRAMS bit = null output,
@RESERVATIONRATESCALEPROGRAMS xml = null output,
@ITINERARYCAPACITY int = null output
)
as
set nocount on;
declare @ARRIVALDATETIMEWITHOFFSET datetimeoffset;
declare @MAXDATETIMEWITHOFFSET datetimeoffset;
declare @RESERVATIONID uniqueidentifier;
declare @CURRENTDATETIMEWITHOFFSET datetimeoffset
set @CURRENTDATETIMEWITHOFFSET = sysdatetimeoffset()
select
@ARRIVALDATETIMEWITHOFFSET = dbo.UFN_TIMEZONEENTRY_GETSYSTEMDEFAULTDATEWITHTIMEOFFSET(dbo.UFN_DATE_ADDHOURMINUTE(ARRIVALDATE, ARRIVALTIME), 0),
@PRICINGCODE = RESERVATION.PRICINGCODE,
@RESERVATIONRATESCALEINCLUDEALLPROGRAMS = RESERVATIONRATESCALE.INCLUDEALLPROGRAMS,
@RESERVATIONRATESCALEPROGRAMS = dbo.UFN_RESERVATIONRATESCALE_GETPROGRAMS_TOITEMLISTXML(RESERVATION.ID),
@RESERVATIONID = ITINERARY.RESERVATIONID
from dbo.ITINERARY
inner join dbo.RESERVATION on ITINERARY.RESERVATIONID = RESERVATION.ID
left outer join dbo.RESERVATIONRATESCALE on RESERVATION.ID = RESERVATIONRATESCALE.ID
where ITINERARY.ID = @ITINERARYID
select @ITINERARYCAPACITY = sum(ITINERARYATTENDEE.QUANTITY)
from dbo.ITINERARYATTENDEE
where ITINERARYATTENDEE.ITINERARYID = @ITINERARYID
set @MAXDATETIMEWITHOFFSET = dbo.UFN_TIMEZONEENTRY_GETSYSTEMDEFAULTDATEWITHTIMEOFFSET(dateadd(d, 4, dbo.UFN_DATE_GETLATESTTIME(@ARRIVALDATETIMEWITHOFFSET)), 0);
with BLOCKEDEVENTS_CTE as
(
select
1 as BLOCK,
EVENTID
from
dbo.ITINERARYITEM
inner join dbo.ITINERARY on ITINERARY.ID = ITINERARYITEM.ITINERARYID
where ITINERARYITEM.BLOCKEVENT = 1
and ITINERARY.RESERVATIONID = @RESERVATIONID
and ITINERARYITEM.ITEMTYPECODE = 0
group by EVENTID
)
select @EVENTS =
(
select
EVENT.ID as EVENTID,
EVENT.PROGRAMID,
EVENT.NAME,
EVENT.STARTTIME,
EVENT.ENDTIME,
dbo.UFN_GETEVENT_TIMESPAN(EVENT.ID) as TIMESPAN,
dbo.UFN_EVENT_GETAVAILABILITY(EVENT.ID) as AVAILABILITY,
dbo.UFN_EVENT_GETLOCATIONNAME(EVENT.ID) as LOCATION,
dbo.UFN_EVENTRESOURCE_GETRESOURCESTRING(EVENT.ID) as RESOURCES,
dbo.UFN_EVENTSTAFFRESOURCE_GETSTAFFRESOURCESTRING(EVENT.ID) as STAFFRESOURCES,
EVENT.STARTDATE,
EVENT.ENDDATE,
coalesce(BL.BLOCK, 0) as EVENTBLOCK
from dbo.EVENT
inner join dbo.EVENTSALESMETHOD on EVENT.ID = EVENTSALESMETHOD.EVENTID
inner join dbo.SALESMETHOD on EVENTSALESMETHOD.SALESMETHODID = SALESMETHOD.ID
left join dbo.PROGRAM on EVENT.PROGRAMID = PROGRAM.ID
left join BLOCKEDEVENTS_CTE BL on EVENT.ID = BL.EVENTID
where @ARRIVALDATETIMEWITHOFFSET <= EVENT.STARTDATETIMEWITHOFFSET
and @MAXDATETIMEWITHOFFSET >= EVENT.STARTDATETIMEWITHOFFSET
and EVENT.ISACTIVE = 1
and SALESMETHOD.TYPECODE = 3
and dbo.UFN_EVENT_ISONSALE_DATETIMEOFFSET(EVENT.ID, @CURRENTDATETIMEWITHOFFSET, 3) = 1
and PROGRAM.ISACTIVE = 1
and PROGRAM.ISPREREGISTERED = 0
and PROGRAM.ISDAILYADMISSION = 0
order by STARTDATETIME asc
for xml raw ('ITEM'), type, elements, root('EVENTS'), BINARY BASE64
);
return 0;