USP_DATAFORMTEMPLATE_EDIT_TRACKLOAD

The save procedure used by the edit dataform template "Track Load Edit Data Form".

Parameters

Parameter Parameter Type Mode Description
@ID uniqueidentifier IN The input ID parameter indicating the ID of the record being edited.
@CHANGEAGENTID uniqueidentifier IN Input parameter indicating the ID of the change agent invoking the procedure.
@TRACKID uniqueidentifier IN Track
@IGNORECONFLICTS bit IN Ignore itinerary resource conflicts when saving

Definition

Copy


                CREATE procedure dbo.USP_DATAFORMTEMPLATE_EDIT_TRACKLOAD (
                    @ID uniqueidentifier,
                    @CHANGEAGENTID uniqueidentifier = null,
                    @TRACKID uniqueidentifier,
                    @IGNORECONFLICTS bit
                )
                as

                    set nocount on;

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

                    declare @CURRENTDATE datetime
                    set @CURRENTDATE = getdate()

                    begin try
                        declare @STATUSCODE tinyint;
                        declare @ORDERID uniqueidentifier;

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

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

                        exec dbo.USP_TRACK_APPLYTRACKTOITINERARY @ID, @TRACKID, @CHANGEAGENTID;

                        if (@TRACKID is null) or not exists (select 1 from dbo.TRACK where ID = @TRACKID)
                        begin
                            raiserror('BBERR_TRACKDOESNOTEXIST', 13, 1);
                        end
                        else
                            update dbo.ITINERARY set
                                TRACKID = @TRACKID,
                                CHANGEDBYID = @CHANGEAGENTID,
                                DATECHANGED = @CURRENTDATE
                            where ID = @ID


                        if @IGNORECONFLICTS = 0
                        begin
                            if exists(select 1 from dbo.ITINERARYITEM where ITINERARYID = @ID)
                            begin
                                declare @START datetime;
                                declare @END datetime;

                                select
                                    @START = ITINERARY.STARTDATETIME,
                                    @END = ITINERARY.ENDDATETIME
                                from dbo.ITINERARY
                                where ID = @ID

                                declare @RESOURCES xml;
                                set @RESOURCES = dbo.UFN_ITINERARYRESOURCE_GETRESOURCES_TOITEMLISTXML(@ID);

                                declare @STAFFRESOURCES xml;
                                set @STAFFRESOURCES = dbo.UFN_ITINERARY_GETSTAFFRESOURCES_TOITEMLISTXML(@ID);    

                                if dbo.UFN_CONFLICTCHECK_CONFLICTSEXIST
                                (
                                    @START, @END
                                    null, @RESOURCES, @STAFFRESOURCES
                                    null, @ID, null,
                                    0, 1, 0, 1
                                ) = 1 
                                begin
                                    raiserror('BBERR_CONFLICTSEXIST', 13, 1);
                                    return 1;
                                end
                            end
                        end  

                    -- if this uses a flat rate with per-ticket pricing, we need to update that price

                    exec dbo.USP_RESERVATION_UPDATEFLATRATEPERTICKETPRICE @ORDERID, null, @CHANGEAGENTID, @CURRENTDATE;  

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

                return 0;