USP_DATAFORMTEMPLATE_ADD_ITINERARY

The save procedure used by the add dataform template "Itinerary Add Data Form".

Parameters

Parameter Parameter Type Mode Description
@ID uniqueidentifier INOUT The output parameter indicating the ID of the record added.
@CONTEXTID uniqueidentifier IN Input parameter indicating the context ID for the record being added.
@CHANGEAGENTID uniqueidentifier IN Input parameter indicating the ID of the change agent invoking the procedure.
@LEADERID uniqueidentifier IN Leader
@NAME nvarchar(154) IN Name
@ATTENDEES xml IN Visitors
@EXCEEDCAPACITY bit IN Exceed capacity available
@GROUPSALESGROUPTYPECODEID uniqueidentifier IN Group type

Definition

Copy


                CREATE procedure dbo.USP_DATAFORMTEMPLATE_ADD_ITINERARY
                (
                    @ID uniqueidentifier = null output,
                    @CONTEXTID uniqueidentifier,
                    @CHANGEAGENTID uniqueidentifier = null,
                    @LEADERID uniqueidentifier = null,
                    @NAME nvarchar(154) = '',
                    @ATTENDEES xml = null,
                    @EXCEEDCAPACITY bit = null,
                    @GROUPSALESGROUPTYPECODEID uniqueidentifier = null
                )
                as

                set nocount on;

                if @ID is null
                    set @ID = newid()

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

                declare @CURRENTDATE datetime
                set @CURRENTDATE = getdate()

                if @NAME = '' and @LEADERID is not null
                    select @NAME = NAME from dbo.CONSTITUENT where ID = @LEADERID

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

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

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

                    -- Validate that the attendee count is not greater than the capacity available

                    if (@EXCEEDCAPACITY = 0)
                    begin
                        declare @MAXIMUMCAPACITY int;
                        select @MAXIMUMCAPACITY = MAXIMUMCAPACITY
                        from dbo.GROUPSALESDEFAULT

                        if (@MAXIMUMCAPACITY > 0)
                        begin            
                            if ((select sum(QUANTITY) from dbo.UFN_ITINERARY_GETATTENDEES_FROMITEMLISTXML(@ATTENDEES)) > dbo.UFN_GROUPSALESCAPACITY_CAPACITYREMAINING(@ARRIVALDATE, null))
                                raiserror('ERR_EXCEEDSCAPACITY', 13, 1);
                        end
                    end    

                    insert into dbo.ITINERARY
                        (ID, RESERVATIONID, LEADERID, NAME, GROUPSALESGROUPTYPECODEID, ADDEDBYID, CHANGEDBYID, DATEADDED, DATECHANGED)
                    values
                        (@ID, @CONTEXTID, @LEADERID, @NAME, @GROUPSALESGROUPTYPECODEID, @CHANGEAGENTID, @CHANGEAGENTID, @CURRENTDATE, @CURRENTDATE)

                    exec dbo.USP_ITINERARY_GETATTENDEES_ADDFROMXML @ID, @ATTENDEES, @CHANGEAGENTID;

                    if (not @GROUPSALESGROUPTYPECODEID is null)
                    begin
                        exec dbo.USP_ITINERARY_LOADREQUIREDRESOURCESBYGROUPTYPE @ID, @CHANGEAGENTID;
                    end

                    exec dbo.USP_RESERVATION_UPDATEFLATRATE @CONTEXTID, @CHANGEAGENTID, @CURRENTDATE;

                end try

                begin catch
                    exec dbo.USP_RAISE_ERROR
                    return 1
                end catch

                return 0