USP_DATAFORMTEMPLATE_EDIT_RESERVATIONARRIVALINFO

The save procedure used by the edit dataform template "Reservation Arrival Info 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.
@ARRIVALTIME UDT_HOURMINUTE IN Arrival time
@NUMBEROFBUSES smallint IN Number of buses
@ARRIVALAREACODEID uniqueidentifier IN Arrival area
@ARRIVALNOTES nvarchar(255) IN Notes
@DRIVERNAME nvarchar(100) IN Name
@DRIVERPHONENUMBER nvarchar(100) IN Phone

Definition

Copy

                    CREATE procedure dbo.USP_DATAFORMTEMPLATE_EDIT_RESERVATIONARRIVALINFO
                    (
                        @ID uniqueidentifier,
                        @CHANGEAGENTID uniqueidentifier = null,
                        @ARRIVALTIME dbo.UDT_HOURMINUTE,
                        @NUMBEROFBUSES smallint,
                        @ARRIVALAREACODEID uniqueidentifier,
                        @ARRIVALNOTES nvarchar(255),
                        @DRIVERNAME nvarchar(100),
                        @DRIVERPHONENUMBER nvarchar(100)
                    )
                    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;

                            select @STATUSCODE = SALESORDER.STATUSCODE
                            from dbo.SALESORDER
                            where SALESORDER.ID = @ID

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

                            if @NUMBEROFBUSES is null
                                set @NUMBEROFBUSES = 0;

                            declare @FIRSTITEMDATETIME datetime;
                            declare @ARRIVALDATETIME datetime;

                            select top 1 @FIRSTITEMDATETIME = ITINERARYITEM.STARTDATETIME,
                                @ARRIVALDATETIME = dbo.UFN_DATE_ADDHOURMINUTE(RESERVATION.ARRIVALDATE, @ARRIVALTIME)
                            from dbo.ITINERARYITEM 
                            inner join dbo.ITINERARY on ITINERARYITEM.ITINERARYID = ITINERARY.ID 
                            inner join dbo.RESERVATION on ITINERARY.RESERVATIONID = RESERVATION.ID
                            where ITINERARY.RESERVATIONID = @ID and
                                ITINERARYITEM.STARTDATE = RESERVATION.ARRIVALDATE
                            order by ITINERARYITEM.STARTTIME asc

                            if @ARRIVALDATETIME > @FIRSTITEMDATETIME
                                raiserror('BBERR_INVALIDTIME', 13, 1);                        

                            update
                                dbo.RESERVATION
                            set
                                ARRIVALTIME = @ARRIVALTIME,
                                NUMBEROFBUSES = @NUMBEROFBUSES,
                                ARRIVALAREACODEID = @ARRIVALAREACODEID,
                                ARRIVALNOTES = @ARRIVALNOTES,
                                DRIVERNAME = @DRIVERNAME,
                                DRIVERPHONENUMBER = @DRIVERPHONENUMBER,
                                DATECHANGED = @CURRENTDATE,
                                CHANGEDBYID = @CHANGEAGENTID
                            where
                                ID = @ID;
                        end try

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

                        return 0;