UFN_SALESORDERITEMFEE_CALCULATE_2

Return

Return Type
money

Parameters

Parameter Parameter Type Mode Description
@SALESORDERID uniqueidentifier IN
@FEEID uniqueidentifier IN
@PERCENT decimal(7, 4) IN
@SALESORDERITEMID uniqueidentifier IN

Definition

Copy


        CREATE function dbo.UFN_SALESORDERITEMFEE_CALCULATE_2
        (
            @SALESORDERID uniqueidentifier,
            @FEEID uniqueidentifier,
            @PERCENT decimal(7,4) = null,
            @SALESORDERITEMID uniqueidentifier = null
        )
        returns money
        as 
        begin        

            declare @PRICE money = 0.0;
            declare @APPLIESTOCODE int;
            declare @TYPECODE int;

            if @PERCENT is null
                set @PERCENT = 0.0

            select
                @PRICE = FEE.AMOUNT,  -- We need this in case we call this on an already calculated fee

                @APPLIESTOCODE = FEE.APPLIESTOCODE,
                @TYPECODE = FEE.TYPECODE
            from dbo.FEE with (nolock)
            where FEE.ID = @FEEID

            if @APPLIESTOCODE = 0  -- ORDER

            begin
                if @TYPECODE = 1 -- PERCENT

                begin
                    select 
                        @PRICE = coalesce(sum(TOTAL),0.0) * @PERCENT * 0.01
                    from dbo.SALESORDERITEM with (nolock)
                    where 
                        SALESORDERITEM.SALESORDERID = @SALESORDERID and
                        SALESORDERITEM.TYPECODE = 0                                    
                end
                -- if @TYPECODE = 0, -- Amount, do nothing, just return @PRICE

            end
            else 
            begin -- ITEM

                if @TYPECODE = 1
                    begin
                        select 
                            @PRICE = SALESORDERITEM.[TOTAL] * @PERCENT * 0.01
                        from dbo.SALESORDERITEM with (nolock)
                        where ID = @SALESORDERITEMID
                    end
                else
                    begin
                        select @PRICE = @PRICE * QUANTITY
                        from dbo.SALESORDERITEM with (nolock)
                        where ID = @SALESORDERITEMID
                    end
            end

            return round(@PRICE,2);

        end