USP_ITINERARYITEMCONFLICTSCHEDULE

Executes the "Itinerary Item Conflict Schedule" record operation.

Parameters

Parameter Parameter Type Mode Description
@ID uniqueidentifier IN Input parameter indicating the ID of the record being updated.
@CHANGEAGENTID uniqueidentifier IN Input parameter indicating the ID of the change agent invoking the update.

Definition

Copy


                    CREATE procedure dbo.USP_ITINERARYITEMCONFLICTSCHEDULE
                    (
                        @ID uniqueidentifier,
                        @CHANGEAGENTID uniqueidentifier
                    )
                    as begin
                        if @CHANGEAGENTID is null  
                            exec dbo.USP_CHANGEAGENT_GETORCREATECHANGEAGENT @CHANGEAGENTID output

                        -- Change the invalid reason to zero and the item to a custom item.

                        declare @ITEMTYPECODE int;
                        select @ITEMTYPECODE = case when (not ITINERARYITEM.EVENTID is null) then 0
                                                         when (not ITINERARYITEM.PROGRAMID is null) then 1
                                                         else 2 end
                        from dbo.ITINERARYITEM
                        where ITINERARYITEM.ID = @ID

                        -- common declarations

                        declare @NAME nvarchar(100);
                        declare @NOTES nvarchar(500);
                        declare @ITINERARYID uniqueidentifier;
                        declare @STARTDATE date
                        declare @ENDDATE date
                        declare @STARTTIME dbo.UDT_HOURMINUTE
                        declare @ENDTIME dbo.UDT_HOURMINUTE
                        declare @RESOURCES xml
                        declare @STAFFRESOURCES xml


                        if (@ITEMTYPECODE = 2)
                        begin
                            declare @LOCATIONID uniqueidentifier
                            declare @MARKLOCATIONBUSY bit
                            declare @IGNORECONFLICTS bit
                            declare @ITINERARYCAPACITY int
                            declare @LOCATIONPRICE money

                            exec dbo.USP_DATAFORMTEMPLATE_EDITLOAD_ITINERARYITEMCUSTOMITEM
                                @ID = @ID,
                                @NAME = @NAME output,
                                @STARTDATE = @STARTDATE output,
                                @ENDDATE = @ENDDATE output,
                                @STARTTIME = @STARTTIME output,
                                @ENDTIME = @ENDTIME output,
                                @NOTES = @NOTES output,
                                @LOCATIONID = @LOCATIONID output,
                                @RESOURCES = @RESOURCES output,
                                @IGNORECONFLICTS = @IGNORECONFLICTS output,
                                @STAFFRESOURCES = @STAFFRESOURCES output,
                                @ITINERARYCAPACITY = @ITINERARYCAPACITY output,
                                @LOCATIONPRICE = @LOCATIONPRICE output;

                            update dbo.ITINERARYITEM
                            set ITINERARYITEM.INVALIDREASONCODE = 0,
                                ITINERARYITEM.ITEMTYPECODE = @ITEMTYPECODE,
                                ITINERARYITEM.CHANGEDBYID = @CHANGEAGENTID,
                                ITINERARYITEM.DATECHANGED = getdate()
                            where ITINERARYITEM.ID = @ID

                            set @IGNORECONFLICTS = 1;
                            set @MARKLOCATIONBUSY = 0;

                            if coalesce(@LOCATIONPRICE,0.0) = 0.0 and @LOCATIONID is not null
                            begin
                                set @LOCATIONPRICE = (select PRICE
                                                                            from dbo.FACILITY
                                                                            where ID = @LOCATIONID)
                                set @LOCATIONPRICE = cast(coalesce(@LOCATIONPRICE, 0.0) as money);
                            end

                            exec dbo.USP_DATAFORMTEMPLATE_EDIT_ITINERARYITEMCUSTOMITEM_2
                                @ID,
                                @ITINERARYID,
                                @CHANGEAGENTID,
                                @NAME,
                                @STARTDATE,
                                @ENDDATE,
                                @STARTTIME,
                                @ENDTIME,
                                @NOTES,
                                @LOCATIONID,
                                @MARKLOCATIONBUSY,
                                @RESOURCES,
                                @IGNORECONFLICTS,
                                @STAFFRESOURCES,
                                @LOCATIONPRICE
                        end
                        else
                        begin
                            -- Get additional information needed for edit functions that fix sales orders

                            declare @CURRENTDATE datetime
                            set @CURRENTDATE = getdate()

                            declare @PROGRAMID uniqueidentifier;
                            declare @EVENTID uniqueidentifier;
                            declare @BLOCKEVENT bit;
                            declare @STATUSCODE tinyint;

                            select @NAME = ITINERARYITEM.NAME,
                                    @NOTES = ITINERARYITEM.NOTES,
                                    @PROGRAMID = ITINERARYITEM.PROGRAMID,
                                    @EVENTID = ITINERARYITEM.EVENTID,
                                    @BLOCKEVENT = ITINERARYITEM.BLOCKEVENT,
                                    @ITINERARYID = ITINERARYITEM.ITINERARYID,
                                    @STARTDATE = ITINERARYITEM.STARTDATE,
                                    @ENDDATE = ITINERARYITEM.ENDDATE,
                                    @STARTTIME = ITINERARYITEM.STARTTIME,
                                    @ENDTIME = ITINERARYITEM.ENDTIME,
                                    @RESOURCES = dbo.UFN_ITINERARYITEMRESOURCE_GETRESOURCES_TOITEMLISTXML(@ID),
                                    @STAFFRESOURCES = dbo.UFN_ITINERARYITEM_GETSTAFFRESOURCES_TOITEMLISTXML(@ID),
                                    @STATUSCODE = SALESORDER.STATUSCODE
                            from dbo.ITINERARYITEM
                            inner join dbo.ITINERARY on ITINERARY.ID = ITINERARYITEM.ITINERARYID
                            inner join dbo.RESERVATION on RESERVATION.ID = ITINERARY.RESERVATIONID
                            inner join dbo.SALESORDER on SALESORDER.ID = RESERVATION.ID
                            where ITINERARYITEM.ID = @ID

                            if @STATUSCODE in (1, 5)
                                raiserror('BBERR_INVALIDSTATUS', 13, 1);

                            if (@ITEMTYPECODE = 1)
                                exec dbo.USP_ITINERARYITEMDAILYADMISSION_EDIT
                                    @ID,
                                    @CHANGEAGENTID,
                                    @CURRENTDATE,
                                    @ITINERARYID,
                                    @PROGRAMID
                                    @STARTDATE,
                                    @STARTTIME,
                                    @ENDTIME,
                                    @NOTES
                                    @RESOURCES,                                    
                                    1,
                                    @STAFFRESOURCES;

                            else if (@ITEMTYPECODE = 0)
                                exec dbo.USP_ITINERARYITEMEVENT_EDIT
                                    @ID,
                                    @CHANGEAGENTID,
                                    @ITINERARYID,
                                    @PROGRAMID
                                    @EVENTID
                                    @STARTTIME,
                                    @ENDTIME,
                                    @STARTDATE,
                                    @ENDDATE,
                                    @BLOCKEVENT
                                    @NOTES
                                    @RESOURCES,
                                    1,
                                    @STAFFRESOURCES;
                        end

                        return 0;

                    end