USP_ITINERARY_CLEAR

Clears the Itinerary.

Parameters

Parameter Parameter Type Mode Description
@ID uniqueidentifier IN
@RESERVATIONID uniqueidentifier IN
@CHANGEAGENTID uniqueidentifier IN

Definition

Copy


            CREATE procedure dbo.USP_ITINERARY_CLEAR
            (
                @ID uniqueidentifier,
                @RESERVATIONID uniqueidentifier,
                @CHANGEAGENTID uniqueidentifier
            )
            as begin

                if @CHANGEAGENTID is null  
                    exec dbo.USP_CHANGEAGENT_GETORCREATECHANGEAGENT @CHANGEAGENTID output

                declare @CURRENTDATE datetime
                set @CURRENTDATE = getdate();

                declare @contextCache varbinary(128);
                declare @e int;

                set @contextCache = CONTEXT_INFO();

                /* set CONTEXT_INFO to @CHANGEAGENTID */
                if not @CHANGEAGENTID is null
                    set CONTEXT_INFO @CHANGEAGENTID;

                delete from dbo.ITINERARYITEMRESOURCE
                from ITINERARYITEMRESOURCE
                    inner join ITINERARYITEM on ITINERARYITEMRESOURCE.ITINERARYITEMID = ITINERARYITEM.ID
                where ITINERARYITEM.ITINERARYID = @ID

                exec dbo.USP_ITINERARY_REMOVEFACILITIES @ID;

                delete dbo.ITINERARYITEM
                where ITINERARYITEM.ITINERARYID = @ID

                /* Only delete the resource that are NOT required */
                delete from dbo.ITINERARYRESOURCE
                where 
                    ITINERARYRESOURCE.ITINERARYID = @ID and
                    not exists 
                    (
                        select 1 from dbo.ITINERARY
                        inner join GROUPTYPEREQUIREDRESOURCE on 
                            ITINERARY.GROUPSALESGROUPTYPECODEID = GROUPTYPEREQUIREDRESOURCE.GROUPSALESGROUPTYPECODEID
                        where
                            ITINERARY.ID = ITINERARYRESOURCE.ITINERARYID and
                            GROUPTYPEREQUIREDRESOURCE.RESOURCEID = ITINERARYRESOURCE.RESOURCEID
                    )

                /* Only delete the staffing resource that are NOT required */
                delete from dbo.ITINERARYSTAFFRESOURCE
                where 
                    ITINERARYSTAFFRESOURCE.ITINERARYID = @ID and
                    not exists 
                    (
                        select 1 from dbo.ITINERARY
                        inner join GROUPTYPEREQUIREDSTAFFRESOURCE on 
                            ITINERARY.GROUPSALESGROUPTYPECODEID = GROUPTYPEREQUIREDSTAFFRESOURCE.GROUPSALESGROUPTYPECODEID 
                        where
                            ITINERARY.ID = ITINERARYSTAFFRESOURCE.ITINERARYID and
                            GROUPTYPEREQUIREDSTAFFRESOURCE.VOLUNTEERTYPEID = ITINERARYSTAFFRESOURCE.VOLUNTEERTYPEID and
                            GROUPTYPEREQUIREDSTAFFRESOURCE.FILLEDBYCODE = ITINERARYSTAFFRESOURCE.FILLEDBYCODE

                    )

                update dbo.ITINERARY set
                    TRACKID = null,
                    CHANGEDBYID = @CHANGEAGENTID,
                    DATECHANGED = @CURRENTDATE
                where ID = @ID

                exec dbo.USP_RESERVATION_UPDATEITEMQUANTITIES @RESERVATIONID, @CHANGEAGENTID;

                select @e=@@error;

                -- reset CONTEXT_INFO to previous value 

                if not @contextCache is null
                    set CONTEXT_INFO @contextCache;

                if @e <> 0
                    return 2;

                return 0;
            end