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