USP_DATAFORMTEMPLATE_EDITLOAD_ITINERARYGROUP

The load procedure used by the edit dataform template "Itinerary Group 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.
@LEADERID uniqueidentifier INOUT Leader
@NAME nvarchar(154) INOUT Name
@ATTENDEES xml INOUT Visitors
@RESERVATIONID uniqueidentifier INOUT
@ARRIVALDATE date INOUT
@EXCEEDCAPACITY bit INOUT Exceed capacity available
@CHECKCAPACITY bit INOUT Check capacity
@GROUPSALESGROUPTYPECODEID uniqueidentifier INOUT Group type
@GROUPSALESGROUPTYPECODE nvarchar(100) INOUT Group type
@IGNORECONFLICTS bit INOUT Ignore conflicts when saving
@RESOURCES xml INOUT
@STAFFRESOURCES xml INOUT
@STARTDATE datetime INOUT
@STARTTIME UDT_HOURMINUTE INOUT
@ENDDATE datetime INOUT
@ENDTIME UDT_HOURMINUTE INOUT
@ITINERARYITEMSEXIST bit INOUT
@CAPACITYAVAILABLE int INOUT Capacity available

Definition

Copy

CREATE procedure dbo.USP_DATAFORMTEMPLATE_EDITLOAD_ITINERARYGROUP(
    @ID uniqueidentifier,
    @DATALOADED bit = 0 output,
    @TSLONG bigint = 0 output,
    @LEADERID uniqueidentifier = null output,
    @NAME nvarchar(154) = null output,
    @ATTENDEES xml = null output,
    @RESERVATIONID uniqueidentifier = null output,
    @ARRIVALDATE date = null output,
    @EXCEEDCAPACITY bit = null output,
    @CHECKCAPACITY bit = null output,
    @GROUPSALESGROUPTYPECODEID uniqueidentifier = null output,
    @GROUPSALESGROUPTYPECODE nvarchar(100) = null output,
    @IGNORECONFLICTS bit = null output,
    @RESOURCES xml = null output,
    @STAFFRESOURCES xml = null output,
    @STARTDATE datetime = null output,
    @STARTTIME UDT_HOURMINUTE = null output,
    @ENDDATE datetime = null output,
    @ENDTIME UDT_HOURMINUTE = null output,
    @ITINERARYITEMSEXIST bit = null output,
    @CAPACITYAVAILABLE int = null output
)
as

    set nocount on;

    set @DATALOADED = 0
    set @TSLONG = 0

    select
        @DATALOADED = 1,
        @EXCEEDCAPACITY = 0,
        @IGNORECONFLICTS = 0,
        @TSLONG = ITINERARY.TSLONG,
        @LEADERID = ITINERARY.LEADERID,
        @NAME = ITINERARY.NAME,
        @RESERVATIONID = ITINERARY.RESERVATIONID,
        @ARRIVALDATE = isnull(ITINERARY.STARTDATETIME, ARRIVALDATE),
        @GROUPSALESGROUPTYPECODEID = ITINERARY.GROUPSALESGROUPTYPECODEID,
        @GROUPSALESGROUPTYPECODE = GROUPSALESGROUPTYPECODE.DESCRIPTION,
        @STARTDATE = dbo.UFN_DATE_GETEARLIESTTIME(isnull(ITINERARY.STARTDATETIME, RESERVATION.ARRIVALDATE)),
        @ENDDATE = dbo.UFN_DATE_GETEARLIESTTIME(isnull(ITINERARY.ENDDATETIME, RESERVATION.ARRIVALDATE)),
        @STARTTIME = dbo.UFN_HOURMINUTE_GETFROMDATE(ITINERARY.STARTDATETIME),
        @ENDTIME = dbo.UFN_HOURMINUTE_GETFROMDATE(ITINERARY.ENDDATETIME)
    from dbo.ITINERARY
    inner join dbo.RESERVATION on 
        RESERVATION.ID = ITINERARY.RESERVATIONID
    left outer join dbo.GROUPSALESGROUPTYPECODE on 
        ITINERARY.GROUPSALESGROUPTYPECODEID = GROUPSALESGROUPTYPECODE.ID
    where ITINERARY.ID = @ID;

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

        if exists 
            (
                select 1 from dbo.ITINERARYITEM 
                where 
                    ITINERARYITEM.ITINERARYID = @ID and 
                    ITINERARYITEM.ITEMTYPECODE <> 3
            )
            set @ITINERARYITEMSEXIST = 1;
        else
            set @ITINERARYITEMSEXIST = 0;

        set @ATTENDEES = dbo.UFN_ITINERARY_GETATTENDEES_TOITEMLISTXML(@ID)

        -- Loading Resources for Conflict Checking
        -- Per ticket resources will be multiplied by attendees at time of checking
        set @RESOURCES = 
        (
            select
                ID,
                ITINERARYID,
                ITINERARYITEMID,
                RESOURCEID,
                QUANTITYNEEDED,
                ISPERTICKETITEM,
                PERTICKETDIVISOR
            from
            (
                select 
                    ITINERARYRESOURCE.ID,
                    @ID as ITINERARYID,
                    null as ITINERARYITEMID,
                    RESOURCEID,
                    case RESOURCE.ISPERTICKETITEM
                        when 0 then
                            ITINERARYRESOURCE.QUANTITYNEEDED
                        else
                            ITINERARYRESOURCE.PERTICKETQUANTITY
                    end as QUANTITYNEEDED,
                    RESOURCE.ISPERTICKETITEM,
                    RESOURCE.PERTICKETDIVISOR
                from dbo.ITINERARYRESOURCE
                inner join dbo.RESOURCE on ITINERARYRESOURCE.RESOURCEID = RESOURCE.ID
                where ITINERARYID = @ID    

                union all

                select 
                    ITINERARYITEMRESOURCE.ID,
                    @ID as ITINERARYID,
                    ITINERARYITEM.ID as ITINERARYITEMID,
                    RESOURCEID,
                    case RESOURCE.ISPERTICKETITEM
                        when 0 then
                            ITINERARYITEMRESOURCE.QUANTITYNEEDED
                        else
                            ITINERARYITEMRESOURCE.PERTICKETQUANTITY
                    end as QUANTITYNEEDED,
                    RESOURCE.ISPERTICKETITEM,
                    RESOURCE.PERTICKETDIVISOR
                from dbo.ITINERARYITEMRESOURCE
                inner join dbo.RESOURCE on ITINERARYITEMRESOURCE.RESOURCEID = RESOURCE.ID
                inner join dbo.ITINERARYITEM on ITINERARYITEMRESOURCE.ITINERARYITEMID = ITINERARYITEM.ID
                where ITINERARYID = @ID    
            ) as RE
            for xml raw('ITEM'),type,elements,root('RESOURCES'),BINARY BASE64
        )    

        set @STAFFRESOURCES = 
        (
            select
                ID,
                ITINERARYID,
                ITINERARYITEMID,
                VOLUNTEERTYPEID,
                QUANTITYNEEDED,
                FILLEDBYCODE,
                CAPACITYPERRESOURCE
            from
            (
                select
                    ITINERARYSTAFFRESOURCE.ID,
                    @ID as ITINERARYID,
                    null as ITINERARYITEMID,
                    ITINERARYSTAFFRESOURCE.VOLUNTEERTYPEID,
                    ITINERARYSTAFFRESOURCE.QUANTITYNEEDED,
                    ITINERARYSTAFFRESOURCE.FILLEDBYCODE,
                    VOLUNTEERTYPE.CAPACITYPERRESOURCE
                from dbo.ITINERARYSTAFFRESOURCE
                inner join dbo.VOLUNTEERTYPE on 
                    ITINERARYSTAFFRESOURCE.VOLUNTEERTYPEID = VOLUNTEERTYPE.ID
                where 
                    ITINERARYSTAFFRESOURCE.ITINERARYID = @ID and
                    ITINERARYSTAFFRESOURCE.FILLEDBYCODE = 0

                union all

                select
                    ITINERARYITEMSTAFFRESOURCE.ID,
                    @ID as ITINERARYID,
                    ITINERARYITEM.ID as ITINERARYITEMID,
                    ITINERARYITEMSTAFFRESOURCE.VOLUNTEERTYPEID,
                    ITINERARYITEMSTAFFRESOURCE.QUANTITYNEEDED,
                    ITINERARYITEMSTAFFRESOURCE.FILLEDBYCODE,
                    VOLUNTEERTYPE.CAPACITYPERRESOURCE
                from dbo.ITINERARYITEMSTAFFRESOURCE
                inner join dbo.VOLUNTEERTYPE on 
                    ITINERARYITEMSTAFFRESOURCE.VOLUNTEERTYPEID = VOLUNTEERTYPE.ID
                inner join dbo.ITINERARYITEM on ITINERARYITEM.ID = ITINERARYITEMSTAFFRESOURCE.ITINERARYITEMID
                where 
                    ITINERARYITEM.ITINERARYID = @ID and
                    ITINERARYITEMSTAFFRESOURCE.FILLEDBYCODE = 0
            ) as SRE
            for xml raw('ITEM'),type,elements,root('STAFFRESOURCES'),BINARY BASE64
        )

        set @CAPACITYAVAILABLE = dbo.UFN_GROUPSALESCAPACITY_MINCAPACITYREMAININGFORDATES(@STARTDATE, @ENDDATE, @ID, 1);  -- Itinerary
    end

return 0;