18 lines
521 B
Elixir
18 lines
521 B
Elixir
defmodule TaxCalculator do
|
|
def calculate_tax(tax_rates, orders) do
|
|
for order <- orders,
|
|
do:
|
|
Keyword.merge(
|
|
order,
|
|
TaxCalculator.calculate_total_amount(tax_rates[order[:ship_to]], order[:net_amount])
|
|
)
|
|
end
|
|
|
|
def calculate_total_amount(nil, net_amount), do: [total_amount: Float.round(net_amount, 2)]
|
|
|
|
def calculate_total_amount(tax_rate, net_amount) do
|
|
total_amount = (1 + tax_rate) * net_amount
|
|
[total_amount: Float.round(total_amount, 2)]
|
|
end
|
|
end
|