USP_ITINERARY_DELETE

Executes the "Itinerary Delete" record operation.

Parameters

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

Definition

Copy


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

                    declare @UPDATEQUANTITIES bit = 0;
                    declare @RESERVATIONID uniqueidentifier;
                    declare @STATUSCODE tinyint;
                    declare @ISFLATRATE tinyint;

                    select @RESERVATIONID = RESERVATION.ID,
                        @STATUSCODE = SALESORDER.STATUSCODE,
                        @ISFLATRATE = RESERVATION.PRICINGCODE
                    from dbo.ITINERARY 
                    inner join dbo.RESERVATION on RESERVATION.ID = ITINERARY.RESERVATIONID
                    inner join dbo.SALESORDER on SALESORDER.ID = RESERVATION.ID
                    where ITINERARY.ID = @ID

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

                    if exists(select 1 from dbo.ITINERARYITEM where ITINERARYID = @ID)
                    begin
                        set @UPDATEQUANTITIES = 1
                    end

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

                    set @contextCache = CONTEXT_INFO();

                    -- Delete the attendees to trigger sync logic

                    delete from dbo.ITINERARYATTENDEE where ITINERARYATTENDEE.ITINERARYID = @ID

                    if not @contextCache is null
                        set CONTEXT_INFO @contextCache

                    select @e=@@error;

                    if @e<>0 return -456; --always return non-zero sp result if an error occurs    


                    exec USP_ITINERARY_REMOVEFACILITIES @ID;

                    exec USP_ITINERARY_DELETEBYID_WITHCHANGEAGENTID @ID, @CHANGEAGENTID;

                    if @UPDATEQUANTITIES = 1
                    begin
                        begin try                        
                            exec dbo.USP_RESERVATION_UPDATEITEMQUANTITIES @RESERVATIONID, @CHANGEAGENTID;

                            exec dbo.USP_SALESORDER_CALCULATEFEES @RESERVATIONID, @CHANGEAGENTID;
                            exec dbo.USP_RESERVATION_CALCULATEFLATRATEFEES @RESERVATIONID, @CHANGEAGENTID;
                            if @ISFLATRATE = 0
                            begin
                                exec dbo.USP_SALESORDER_APPLYITEMDISCOUNTS @RESERVATIONID, @CHANGEAGENTID;
                                exec dbo.USP_SALESORDER_APPLYORDERDISCOUNTS @RESERVATIONID, @CHANGEAGENTID;
                            end
                            exec dbo.USP_SALESORDER_CALCULATETAXES @RESERVATIONID, @CHANGEAGENTID;

                        end try
                        begin catch
                            exec dbo.USP_RAISE_ERROR
                            return 1
                        end catch
                    end

                    exec dbo.USP_RESERVATION_UPDATEFLATRATE @RESERVATIONID, @CHANGEAGENTID;

                    return 0;

                end