USP_DATAFORMTEMPLATE_EDIT_ITINERARYITEMCUSTOMRESOLVE_2

The save procedure used by the edit dataform template "Itinerary Item Conflict Resolve 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.
@ITINERARYID uniqueidentifier IN Itinerary ID
@STARTDATE datetime IN Date
@ENDDATE datetime IN Date
@STARTTIME UDT_HOURMINUTE IN Start time
@ENDTIME UDT_HOURMINUTE IN End time
@LOCATIONID uniqueidentifier IN Location
@RESOURCES xml IN Supplies/Equipment resources
@STAFFRESOURCES xml IN Staff resources
@IGNORECONFLICTS bit IN Ignore conflicts when saving
@COMPUTEDITEMTYPECODE tinyint IN Item type
@LOCATIONPRICE money IN Price

Definition

Copy

                    CREATE procedure dbo.USP_DATAFORMTEMPLATE_EDIT_ITINERARYITEMCUSTOMRESOLVE_2 
                    (
                        @ID uniqueidentifier,
                        @CHANGEAGENTID uniqueidentifier = null,
                        @ITINERARYID uniqueidentifier,
                        @STARTDATE datetime,
                        @ENDDATE datetime,
                        @STARTTIME UDT_HOURMINUTE,
                        @ENDTIME UDT_HOURMINUTE,
                        @LOCATIONID uniqueidentifier,
                        @RESOURCES xml,
                        @STAFFRESOURCES xml,
                        @IGNORECONFLICTS bit,
                        @COMPUTEDITEMTYPECODE tinyint,
                        @LOCATIONPRICE money
                    )
                    as

                        set nocount on;

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

                        declare @CURRENTDATE datetime
                        set @CURRENTDATE = getdate()

                        begin try
                            if (@IGNORECONFLICTS = 0)
                            begin
                                declare @LOCATIONS xml = null;
                                if (@LOCATIONID is not null)
                                set @LOCATIONS = '<LOCATIONS><ITEM><EVENTLOCATIONID>' + convert(nvarchar(36), @LOCATIONID) + '</EVENTLOCATIONID></ITEM></LOCATIONS>'


                                if dbo.UFN_CONFLICTCHECK_CONFLICTSEXIST
                                (
                                    dbo.UFN_DATE_ADDHOURMINUTE(dbo.UFN_DATE_GETEARLIESTTIME(@STARTDATE),@STARTTIME), 
                                    dbo.UFN_DATE_ADDHOURMINUTE(dbo.UFN_DATE_GETEARLIESTTIME(@ENDDATE),@ENDTIME),
                                    @LOCATIONS
                                    @RESOURCES
                                    @STAFFRESOURCES
                                    null,
                                    @ITINERARYID
                                    @ID,
                                    0, -- Do not ignore super record
                                    0, -- Do not ignore record
                                    1, -- Ignore sub record
                                    0  -- Do not ignore all sub records
                                ) = 1
                                begin
                                    raiserror('BBERR_CONFLICTSEXIST', 13, 1);
                                    return 1;
                                end
                            end

                            -- Get additional information needed for edit functions that fix sales orders
                            declare @NAME nvarchar(100);
                            declare @NOTES nvarchar(500);
                            declare @PROGRAMID uniqueidentifier;
                            declare @EVENTID uniqueidentifier;
                            declare @BLOCKEVENT bit;
                            declare @MARKLOCATIONBUSY bit;
                            declare @STATUSCODE tinyint;

                            select @NAME = ITINERARYITEM.NAME,
                                    @NOTES = ITINERARYITEM.NOTES,
                                    @PROGRAMID = ITINERARYITEM.PROGRAMID,
                                    @EVENTID = ITINERARYITEM.EVENTID,
                                    @BLOCKEVENT = ITINERARYITEM.BLOCKEVENT,
                                    @MARKLOCATIONBUSY = ITINERARYITEM.BLOCKEVENT,
                                    @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 (@COMPUTEDITEMTYPECODE = 2)
                            begin
                                update dbo.ITINERARYITEM
                                    set ITEMTYPECODE = 2,
                                        INVALIDREASONCODE = 0,
                                        CHANGEDBYID = @CHANGEAGENTID,
                                        DATECHANGED = @CURRENTDATE
                                where ITINERARYITEM.ID = @ID;

                                exec dbo.USP_ITINERARYITEMCUSTOMITEM_EDIT
                                    @ID,
                                    @ITINERARYID,
                                    @CHANGEAGENTID,
                                    @CURRENTDATE,
                                    @NAME,
                                    @STARTDATE,
                                    @ENDDATE,
                                    @STARTTIME,
                                    @ENDTIME,
                                    @NOTES,
                                    @LOCATIONID,
                                    @MARKLOCATIONBUSY,
                                    @RESOURCES,
                                    @IGNORECONFLICTS,
                                    @STAFFRESOURCES,
                                    @LOCATIONPRICE;
                            end

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

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

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

                    return 0;