USP_DATAFORMTEMPLATE_EDIT_RESERVATION_1

The save procedure used by the edit dataform template "Reservation 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.
@NAME nvarchar(100) IN Reservation name
@COMMENTS nvarchar(1000) IN Comments
@FINALCOUNTDUEDATE date IN Final count date
@FINALCOUNTREQUIRED bit IN Final count required
@DEPOSITREQUIRED bit IN Deposit required
@DEPOSITAMOUNT money IN Amount due
@DEPOSITDUEDATE date IN Deposit due date
@DEPOSITTYPECODE tinyint IN
@FINALDUEDATE date IN Order balance due
@CONTRACTREQUIRED bit IN Contract required
@CONTRACTDUEDATE date IN Contract due date
@PRICINGCODE tinyint IN Pricing structure
@RATESCALEID uniqueidentifier IN Flat rate scale
@SECURITYDEPOSITREQUIRED bit IN Security deposit required
@SECURITYDEPOSITAMOUNT money IN Amount due
@SECURITYDEPOSITDUEDATE date IN Security deposit due date
@SECURITYDEPOSITTYPECODE tinyint IN

Definition

Copy

                    CREATE procedure dbo.USP_DATAFORMTEMPLATE_EDIT_RESERVATION_1
                    (
                        @ID uniqueidentifier,
                        @CHANGEAGENTID uniqueidentifier = null,
                        @NAME nvarchar(100),
                        @COMMENTS nvarchar(1000),
                        @FINALCOUNTDUEDATE date,
                        @FINALCOUNTREQUIRED bit,
                        @DEPOSITREQUIRED bit,
                        @DEPOSITAMOUNT money,
                        @DEPOSITDUEDATE date,
                        @DEPOSITTYPECODE tinyint,
                        @FINALDUEDATE date,
                        @CONTRACTREQUIRED bit,
                        @CONTRACTDUEDATE date,
                        @PRICINGCODE tinyint,
                        @RATESCALEID uniqueidentifier,
                        @SECURITYDEPOSITREQUIRED bit,
                        @SECURITYDEPOSITAMOUNT money,
                        @SECURITYDEPOSITDUEDATE date,
                        @SECURITYDEPOSITTYPECODE tinyint
                    )
                    as
                        set nocount on;

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

                        declare @CURRENTDATE datetime;
                        set @CURRENTDATE = getdate();

                        declare @CONTRACTRECEIVED bit;
                        declare @CONTRACTSENT bit;
                        declare @FINALCOUNTRECEIVED bit;

                        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 (@FINALCOUNTREQUIRED = 0)
                            begin
                                set @FINALCOUNTDUEDATE = null;
                                set @FINALCOUNTRECEIVED = 0;
                            end

                            if (@CONTRACTREQUIRED = 0)
                            begin
                                set @CONTRACTDUEDATE = null;
                                set @CONTRACTRECEIVED = 0;
                                set @CONTRACTSENT = 0;
                            end    

                            if (@DEPOSITREQUIRED = 0)
                            begin
                                set @DEPOSITDUEDATE = null;
                                set @DEPOSITAMOUNT = 0.0;
                            end

                            if (@SECURITYDEPOSITREQUIRED = 0)
                            begin
                                set @SECURITYDEPOSITDUEDATE = null;
                                set @SECURITYDEPOSITAMOUNT = 0.0;
                            end

                            -- Validation for deposit amount
                            if @DEPOSITREQUIRED = 1 and @DEPOSITAMOUNT <= 0.00 and @DEPOSITTYPECODE = 0
                            begin
                                raiserror('ERR_DEPOSITAMOUNT', 13, 1);
                            end

                            -- Validation for security deposit amount
                            if @SECURITYDEPOSITREQUIRED = 1 and @SECURITYDEPOSITAMOUNT <= 0.00 and @SECURITYDEPOSITTYPECODE = 0
                            begin
                                raiserror('ERR_SECURITYDEPOSITAMOUNT', 13, 1);
                            end

                            -- Validation for flat rate
                            if @PRICINGCODE = 1 and @RATESCALEID is null
                            begin
                                raiserror('ERR_RATESCALE',13,1);
                            end

                            update
                                dbo.RESERVATION
                            set
                                NAME = @NAME,
                                DEPOSITREQUIRED = @DEPOSITREQUIRED,
                                DEPOSITAMOUNT = @DEPOSITAMOUNT,
                                DEPOSITDUEDATE = @DEPOSITDUEDATE,
                                SECURITYDEPOSITREQUIRED = @SECURITYDEPOSITREQUIRED,
                                SECURITYDEPOSITAMOUNT = @SECURITYDEPOSITAMOUNT,
                                SECURITYDEPOSITDUEDATE = @SECURITYDEPOSITDUEDATE,
                                FINALDUEDATE = @FINALDUEDATE,
                                CONTRACTREQUIRED = @CONTRACTREQUIRED,
                                CONTRACTDUEDATE = @CONTRACTDUEDATE,
                                CONTRACTSENT = isnull(@CONTRACTSENT, CONTRACTSENT),
                                CONTRACTRECEIVED = isnull(@CONTRACTRECEIVED, CONTRACTRECEIVED),
                                FINALCOUNTDUEDATE = @FINALCOUNTDUEDATE,
                                FINALCOUNTREQUIRED = @FINALCOUNTREQUIRED,
                                FINALCOUNTRECEIVED = isnull(@FINALCOUNTRECEIVED, FINALCOUNTRECEIVED),
                                PRICINGCODE = @PRICINGCODE,
                                DATECHANGED = @CURRENTDATE,
                                CHANGEDBYID = @CHANGEAGENTID
                            where
                                ID = @ID;

                            update
                                dbo.SALESORDER
                            set
                                COMMENTS = @COMMENTS,
                                DATECHANGED = @CURRENTDATE,
                                CHANGEDBYID = @CHANGEAGENTID
                            where
                                ID = @ID;

                            if @PRICINGCODE = 1 and @RATESCALEID is not null
                            begin
                                -- remove all discounts until flat rate discounts functionality is ready

                                delete from [dbo].[SALESORDERITEMITEMDISCOUNT] with (rowlock)
                                from
                                    [dbo].[SALESORDERITEMITEMDISCOUNT] inner join [dbo].[SALESORDERITEM] on
                                        [SALESORDERITEMITEMDISCOUNT].[SALESORDERITEMID] = [SALESORDERITEM].[ID]
                                where
                                    [SALESORDERITEM].[SALESORDERID] = @ID;

                                delete from dbo.SALESORDERITEMSCENARIOSDONE with (rowlock) where SALESORDERID = @ID;
                                delete from dbo.SALESORDERDISCOUNTSCENARIOCOMBINATION with (rowlock) where SALESORDERID = @ID;
                                delete from dbo.SALESORDERITEMDISCOUNTOPTION with (rowlock) where SALESORDERID = @ID;    
                                delete from dbo.SALESORDERAVAILABLEDISCOUNTGROUPCOMBINATION with (rowlock) where SALESORDERID = @ID
                                delete from dbo.SALESORDERITEM where SALESORDERID = @ID and TYPECODE = 5
                                delete from dbo.SALESORDERITEMORDERDISCOUNT with (rowlock)
                                from
                                    [dbo].[SALESORDERITEMORDERDISCOUNT] inner join [dbo].[SALESORDERITEM] on
                                        [SALESORDERITEMORDERDISCOUNT].[ID] = [SALESORDERITEM].[ID]
                                where
                                    [SALESORDERITEM].[SALESORDERID] = @ID;

                                delete from dbo.SALESORDERMANUALDISCOUNT where SALESORDERID = @ID


                                declare @OLDRATESCALEID uniqueidentifier = null
                                declare @RATESCALEEXISTS bit = 0
                                select
                                    @RATESCALEEXISTS = 1,
                                    @OLDRATESCALEID = RATESCALEID
                                from dbo.RESERVATIONRATESCALE
                                where ID = @ID

                                if @OLDRATESCALEID is null or @OLDRATESCALEID <> @RATESCALEID
                                begin
                                    exec dbo.USP_RESERVATION_UPDATERATESCALE @ID, @RATESCALEID, @CHANGEAGENTID, @CURRENTDATE;
                                end
                            end

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

                            exec dbo.USP_SALESORDER_CALCULATEFEES @ID, @CHANGEAGENTID;

                            if @PRICINGCODE = 1
                            begin
                                exec dbo.USP_RESERVATION_CALCULATEFLATRATEFEES @ID, @CHANGEAGENTID;
                            end
                            else
                            begin
                                exec dbo.USP_SALESORDER_APPLYITEMDISCOUNTS @ID, @CHANGEAGENTID;
                                exec dbo.USP_SALESORDER_APPLYORDERDISCOUNTS @ID, @CHANGEAGENTID;
                            end

                            exec dbo.USP_SALESORDER_CALCULATETAXES @ID, @CHANGEAGENTID;

                            exec dbo.USP_RESERVATION_UPDATESTATUSANDHISTORY @ID, @CHANGEAGENTID;    
                        end try

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

                        return 0;