USP_DATAFORMTEMPLATE_EDITLOAD_ITINERARYITEMEVENT

The load procedure used by the edit dataform template "Itinerary Item Event Edit Data Form"

Parameters

Parameter Parameter Type Mode Description
@ID uniqueidentifier IN The input ID parameter used to load the fields defined on the form.
@ITINERARYID uniqueidentifier INOUT Itinerary ID
@PROGRAMID uniqueidentifier INOUT Program
@EVENTID uniqueidentifier INOUT Event
@ITINERARYITEMSTARTTIME UDT_HOURMINUTE INOUT Start time
@ITINERARYITEMENDTIME UDT_HOURMINUTE INOUT End time
@ITINERARYITEMSTARTDATE datetime INOUT Start date
@ITINERARYITEMENDDATE datetime INOUT End date
@EVENTS xml INOUT Events
@BLOCKEVENT bit INOUT Mark event unavailable to other groups
@NOTES nvarchar(500) INOUT Notes
@RESOURCES xml INOUT Supplies/Equipment resources
@IGNORECONFLICTS bit INOUT Ignore conflicts when saving
@DATALOADED bit INOUT Output parameter indicating whether or not data was actually loaded.
@TSLONG bigint INOUT Output parameter indicating the TSLONG value of the record being edited. This is used to manage multi-user concurrency issues when multiple users access the same record.
@STAFFRESOURCES xml INOUT Staffing resources
@PRICINGCODE tinyint INOUT
@RESERVATIONRATESCALEINCLUDEALLPROGRAMS bit INOUT
@RESERVATIONRATESCALEPROGRAMS xml INOUT
@ITEMTYPECODE tinyint INOUT
@STARTTIME UDT_HOURMINUTE INOUT Start time
@ENDTIME UDT_HOURMINUTE INOUT End time
@STARTDATE datetime INOUT Start date
@ENDDATE datetime INOUT End date
@ITINERARYCAPACITY int INOUT Itinerary capacity

Definition

Copy


                CREATE procedure dbo.USP_DATAFORMTEMPLATE_EDITLOAD_ITINERARYITEMEVENT
                ( 
                    @ID uniqueidentifier,
                    @ITINERARYID uniqueidentifier = null output,
                    @PROGRAMID uniqueidentifier = null output,
                    @EVENTID uniqueidentifier = null output,
                    @ITINERARYITEMSTARTTIME dbo.UDT_HOURMINUTE = null output,
                    @ITINERARYITEMENDTIME dbo.UDT_HOURMINUTE = null output,
                    @ITINERARYITEMSTARTDATE datetime = null output,
                    @ITINERARYITEMENDDATE datetime = null output,
                    @EVENTS xml = null output,
                    @BLOCKEVENT bit = null output,
                    @NOTES nvarchar(500) = null output,
                    @RESOURCES xml = null output,
                    @IGNORECONFLICTS bit = null output,
                    @DATALOADED bit = 0 output,
                    @TSLONG bigint = 0 output,
                    @STAFFRESOURCES xml = null output,
                    @PRICINGCODE tinyint = null output,
                    @RESERVATIONRATESCALEINCLUDEALLPROGRAMS bit = null output,
                    @RESERVATIONRATESCALEPROGRAMS xml = null output,
                    @ITEMTYPECODE tinyint = null output,
                    @STARTTIME dbo.UDT_HOURMINUTE = null output,
                    @ENDTIME dbo.UDT_HOURMINUTE = null output,
                    @STARTDATE datetime = null output,
                    @ENDDATE datetime = 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 @DATALOADED = 1,
                        @TSLONG = TSLONG,
                        @ITINERARYITEMSTARTDATE = STARTDATE,
                        @ITINERARYITEMENDDATE = ENDDATE,
                        @EVENTID = EVENTID,
                        @NOTES = NOTES,
                        @RESOURCES=dbo.UFN_ITINERARYITEMRESOURCE_GETRESOURCES_TOITEMLISTXML(@ID),
                        @STAFFRESOURCES = dbo.UFN_ITINERARYITEM_GETSTAFFRESOURCES_TOITEMLISTXML(@ID),
                        @ITINERARYITEMSTARTTIME = STARTTIME,
                        @ITINERARYITEMENDTIME = ENDTIME,
                        @BLOCKEVENT = BLOCKEVENT,
                        @ITINERARYID = ITINERARYID,
                        @IGNORECONFLICTS = 0,
                        @ITEMTYPECODE = ITEMTYPECODE,
                        @STARTDATE = STARTDATE,
                        @ENDDATE = ENDDATE,
                        @STARTTIME = STARTTIME,
                        @ENDTIME = ENDTIME
                    from dbo.ITINERARYITEM
                    where ITINERARYITEM.ID = @ID

                    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 = RESERVATION.ID
                    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

                    set @MAXDATETIMEWITHOFFSET = dbo.UFN_TIMEZONEENTRY_GETSYSTEMDEFAULTDATEWITHTIMEOFFSET(dateadd(d, 4, dbo.UFN_DATE_GETLATESTTIME(@ARRIVALDATETIMEWITHOFFSET)), 0);

                    select @PROGRAMID = PROGRAMID
                    from dbo.EVENT
                    where EVENT.ID = @EVENTID;

                    declare @BLOCKEDEVENTS table
                    (
                        BLOCK bit,
                        EVENTID uniqueidentifier
                    )


                    insert into @BLOCKEDEVENTS
                    (
                        BLOCK,
                        EVENTID
                    )
                    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;



                    with EVENTS_CTE as
                    (
                        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 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.ISDAILYADMISSION = 0
                            and PROGRAM.ISPREREGISTERED = 0

                        union

                        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
                        left join @BLOCKEDEVENTS BL on EVENT.ID = BL.EVENTID
                        where EVENT.ID = @EVENTID
                    )


                    select @EVENTS =
                    (
                        select * from EVENTS_CTE
                        order by STARTDATE, STARTTIME asc
                        for xml raw ('ITEM'), type, elements, root('EVENTS'), BINARY BASE64
                    );

                    select @ITINERARYCAPACITY = sum(ITINERARYATTENDEE.QUANTITY)
                    from dbo.ITINERARYATTENDEE
                    where ITINERARYATTENDEE.ITINERARYID = @ITINERARYID

                    return 0;