USP_DATAFORMTEMPLATE_EDIT_RESERVATIONPRICING

Parameters

Parameter Parameter Type Mode Description
@ID uniqueidentifier IN
@CHANGEAGENTID uniqueidentifier IN
@PRICINGCODE tinyint IN
@RATESCALEID uniqueidentifier IN

Definition

Copy

CREATE procedure dbo.USP_DATAFORMTEMPLATE_EDIT_RESERVATIONPRICING (
    @ID uniqueidentifier,
    @CHANGEAGENTID uniqueidentifier = null,
    @PRICINGCODE tinyint,
    @RATESCALEID uniqueidentifier
)
as
    set nocount on;

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

    declare @CURRENTDATE datetime = getdate();

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

        update dbo.RESERVATION set
            PRICINGCODE = @PRICINGCODE,
            CHANGEDBYID = @CHANGEAGENTID,
            DATECHANGED = @CURRENTDATE
        where
            ID = @ID;

        if @PRICINGCODE = 1 begin
            delete from dbo.SALESORDERITEMITEMDISCOUNT
            from
                dbo.SALESORDERITEMITEMDISCOUNT
            inner join
                dbo.SALESORDERITEM on SALESORDERITEMITEMDISCOUNT.SALESORDERITEMID = SALESORDERITEM.ID
            where
                SALESORDERITEM.SALESORDERID = @ID;

            delete from dbo.SALESORDERITEMSCENARIOSDONE where SALESORDERID = @ID;
            delete from dbo.SALESORDERDISCOUNTSCENARIOCOMBINATION where SALESORDERID = @ID;
            delete from dbo.SALESORDERITEMDISCOUNTOPTION where SALESORDERID = @ID;
            delete from dbo.SALESORDERAVAILABLEDISCOUNTGROUPCOMBINATION where SALESORDERID = @ID;
            delete from dbo.SALESORDERITEM where SALESORDERID = @ID and TYPECODE = 5;

            delete from dbo.SALESORDERITEMORDERDISCOUNT
            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_RESERVATION_UPDATESTATUSANDHISTORY @ID, @CHANGEAGENTID;
    end try

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

    return 0;