USP_DATAFORMTEMPLATE_EDITLOAD_RESERVATION_MOVE

The load procedure used by the edit dataform template "Reservation Move 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.
@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.
@ARRIVALDATE date INOUT Current visit date
@NEWVISITDATE date INOUT New visit date
@IGNOREITINERARYRESOURCECONFLICTS bit INOUT Ignore itinerary resource conflicts
@CHECKCAPACITY bit INOUT
@CAPACITYNEEDED int INOUT Capacity needed
@NUMBEROFDAYS int INOUT
@EXCEEDCAPACITY bit INOUT Exceed capacity available
@RESOURCES xml INOUT Resources
@STAFFRESOURCES xml INOUT Staffing resources
@NAME nvarchar(100) INOUT Reservation name

Definition

Copy

                CREATE procedure dbo.USP_DATAFORMTEMPLATE_EDITLOAD_RESERVATION_MOVE
                (
                    @ID uniqueidentifier,
                    @DATALOADED bit = 0 output,
                    @TSLONG bigint = 0 output,
                    @ARRIVALDATE date = null output,
                    @NEWVISITDATE date = null output,
                    @IGNOREITINERARYRESOURCECONFLICTS bit = null output,
                    @CHECKCAPACITY bit = null output,
                    @CAPACITYNEEDED int = null output,
                    @NUMBEROFDAYS int = null output,
                    @EXCEEDCAPACITY bit = null output,
                    @RESOURCES xml = null output,
                    @STAFFRESOURCES xml = null output,
                    @NAME nvarchar(100) = null output
                )
                as

                    set nocount on;

                    set @DATALOADED = 0
                    set @TSLONG = 0

                    select
                        @DATALOADED = 1,
                        @TSLONG = RESERVATION.TSLONG,
                        @ARRIVALDATE = ARRIVALDATE,
                        @IGNOREITINERARYRESOURCECONFLICTS = 0,
                        @NUMBEROFDAYS = datediff(day, RESERVATION.STARTDATETIME, RESERVATION.ENDDATETIME) + 1,
                        @NAME = RESERVATION.NAME
                    from dbo.RESERVATION
                    inner join dbo.SALESORDER on
                        SALESORDER.ID = RESERVATION.ID
                    where 
                        RESERVATION.ID = @ID

                    if @DATALOADED = 1
                    begin
                        select top 1 @CHECKCAPACITY = case when MAXIMUMCAPACITY > 0 then 1 else 0 end from dbo.GROUPSALESDEFAULT;

                        set @CAPACITYNEEDED = dbo.UFN_RESERVATION_TOTALVISITORCOUNT(@ID);
                    end

                        set @RESOURCES = 
                        (
                            select
                                ID,
                                ITINERARYID,
                                ITINERARYITEMID,
                                QUANTITYNEEDED,
                                RESOURCEID,
                                ISPERTICKETITEM,
                                ISREQUIREDRESOURCE,
                                REQUIREDRESOURCEQUANTITY,
                                STARTTIME,
                                ENDTIME
                            from
                            (
                                -- All itinerary resources
                                select 
                                    ITINERARYRESOURCE.ID AS ID,
                                    ITINERARY.ID as ITINERARYID,
                                    null as ITINERARYITEMID,
                                    ITINERARYRESOURCE.QUANTITYNEEDED,
                                    ITINERARYRESOURCE.RESOURCEID,
                                    RESOURCE.ISPERTICKETITEM,
                                    case when (GROUPTYPEREQUIREDRESOURCE.ID is null) then 0 else 1 end as ISREQUIREDRESOURCE,
                                    coalesce(GROUPTYPEREQUIREDRESOURCE.QUANTITYNEEDED, 0) as REQUIREDRESOURCEQUANTITY,
                                    [dbo].[UFN_HOURMINUTE_GETFROMDATE](ITINERARY.STARTDATETIME) as STARTTIME,
                                    [dbo].[UFN_HOURMINUTE_GETFROMDATE](ITINERARY.ENDDATETIME) as ENDTIME
                                from dbo.ITINERARYRESOURCE
                                inner join dbo.RESOURCE    on ITINERARYRESOURCE.RESOURCEID = RESOURCE.ID
                                inner join dbo.ITINERARY on ITINERARYRESOURCE.ITINERARYID = ITINERARY.ID
                                left outer join dbo.GROUPTYPEREQUIREDRESOURCE on 
                                    (ITINERARYRESOURCE.RESOURCEID = GROUPTYPEREQUIREDRESOURCE.RESOURCEID) and
                                    (ITINERARY.GROUPSALESGROUPTYPECODEID = GROUPTYPEREQUIREDRESOURCE.GROUPSALESGROUPTYPECODEID)
                                where 
                                    ITINERARY.RESERVATIONID = @ID

                                union all

                                -- All itinerary item resources
                                select 
                                    ITINERARYITEMRESOURCE.ID AS ID,
                                    ITINERARY.ID as ITINERARYID,
                                    ITINERARYITEM.ID as ITINERARYITEMID,
                                    ITINERARYITEMRESOURCE.QUANTITYNEEDED,
                                    ITINERARYITEMRESOURCE.RESOURCEID,
                                    RESOURCE.ISPERTICKETITEM,
                                    0 as ISREQUIREDRESOURCE,
                                    0 as REQUIREDRESOURCEQUANTITY,
                                    ITINERARYITEM.STARTTIME,
                                    ITINERARYITEM.ENDTIME
                                from dbo.ITINERARYITEMRESOURCE
                                inner join dbo.RESOURCE on ITINERARYITEMRESOURCE.RESOURCEID = RESOURCE.ID
                                inner join dbo.ITINERARYITEM on ITINERARYITEMRESOURCE.ITINERARYITEMID = ITINERARYITEM.ID
                                inner join dbo.ITINERARY on ITINERARYITEM.ITINERARYID = ITINERARY.ID
                                where 
                                    ITINERARY.RESERVATIONID = @ID    
                            ) [RESOURCES]
                            for xml raw('ITEM'),type,elements,root('RESOURCES'),binary base64
                        );

                        set @STAFFRESOURCES = 
                        (
                            select
                                ID,
                                ITINERARYID,
                                ITINERARYITEMID,
                                QUANTITYNEEDED,
                                VOLUNTEERTYPEID,
                                JOBID,
                                JOBOCCURRENCEID,
                                FILLEDBYCODE,
                                ISREQUIREDRESOURCE,
                                REQUIREDRESOURCEQUANTITY,
                                STARTTIME,
                                ENDTIME
                            from
                            (
                                select 
                                    ITINERARYSTAFFRESOURCE.ID AS ID,
                                    ITINERARY.ID as ITINERARYID,
                                    null as ITINERARYITEMID,
                                    ITINERARYSTAFFRESOURCE.QUANTITYNEEDED,
                                    ITINERARYSTAFFRESOURCE.VOLUNTEERTYPEID,
                                    ITINERARYSTAFFRESOURCE.JOBID,
                                    ITINERARYSTAFFRESOURCE.JOBOCCURRENCEID,
                                    ITINERARYSTAFFRESOURCE.FILLEDBYCODE,
                                    case when (GROUPTYPEREQUIREDSTAFFRESOURCE.ID is null) then 0 else 1 end as ISREQUIREDRESOURCE,
                                    coalesce(GROUPTYPEREQUIREDSTAFFRESOURCE.QUANTITYNEEDED, 0) as REQUIREDRESOURCEQUANTITY,
                                    [dbo].[UFN_HOURMINUTE_GETFROMDATE](ITINERARY.STARTDATETIME) as STARTTIME,
                                    [dbo].[UFN_HOURMINUTE_GETFROMDATE](ITINERARY.ENDDATETIME) as ENDTIME
                                from dbo.ITINERARYSTAFFRESOURCE
                                inner join dbo.ITINERARY on ITINERARYSTAFFRESOURCE.ITINERARYID = ITINERARY.ID
                                left outer join dbo.JOB on ITINERARYSTAFFRESOURCE.JOBID = JOB.ID
                                left outer join dbo.GROUPTYPEREQUIREDSTAFFRESOURCE on 
                                    (ITINERARYSTAFFRESOURCE.VOLUNTEERTYPEID = GROUPTYPEREQUIREDSTAFFRESOURCE.VOLUNTEERTYPEID) and
                                    (ITINERARYSTAFFRESOURCE.JOBID = GROUPTYPEREQUIREDSTAFFRESOURCE.JOBID) and
                                    (ITINERARYSTAFFRESOURCE.FILLEDBYCODE = GROUPTYPEREQUIREDSTAFFRESOURCE.FILLEDBYCODE) and
                                    (ITINERARY.GROUPSALESGROUPTYPECODEID = GROUPTYPEREQUIREDSTAFFRESOURCE.GROUPSALESGROUPTYPECODEID)
                                left outer join dbo.VOLUNTEERTYPE on
                                    ITINERARYSTAFFRESOURCE.VOLUNTEERTYPEID = VOLUNTEERTYPE.ID
                                where 
                                    ITINERARY.RESERVATIONID = @ID

                                union all

                                select 
                                    ITINERARYITEMSTAFFRESOURCE.ID AS ID,
                                    ITINERARY.ID as ITINERARYID,
                                    ITINERARYITEM.ID as ITINERARYITEMID,
                                    ITINERARYITEMSTAFFRESOURCE.QUANTITYNEEDED,
                                    ITINERARYITEMSTAFFRESOURCE.VOLUNTEERTYPEID,
                                    ITINERARYITEMSTAFFRESOURCE.JOBID,
                                    ITINERARYITEMSTAFFRESOURCE.JOBOCCURRENCEID,
                                    ITINERARYITEMSTAFFRESOURCE.FILLEDBYCODE,
                                    0 as ISREQUIREDRESOURCE,
                                    0 as REQUIREDRESOURCEQUANTITY,
                                    ITINERARYITEM.STARTTIME,
                                    ITINERARYITEM.ENDTIME
                                from dbo.ITINERARYITEMSTAFFRESOURCE
                                inner join dbo.ITINERARYITEM on ITINERARYITEMSTAFFRESOURCE.ITINERARYITEMID = ITINERARYITEM.ID
                                inner join dbo.ITINERARY on ITINERARYITEM.ITINERARYID = ITINERARY.ID
                                left outer join dbo.JOB    on ITINERARYITEMSTAFFRESOURCE.JOBID = JOB.ID
                                left outer join dbo.VOLUNTEERTYPE on
                                    ITINERARYITEMSTAFFRESOURCE.VOLUNTEERTYPEID = VOLUNTEERTYPE.ID
                                where 
                                    ITINERARY.RESERVATIONID = @ID
                            ) [STAFFRESOURCES]
                            for xml raw('ITEM'),type,elements,root('STAFFRESOURCES'),binary base64                    
                        );                    

                    return 0;