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