elixir-book/maps/listandrecursion_8.exs

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