From b096717172a8c2530fbab56f7b2820e522ee378f Mon Sep 17 00:00:00 2001 From: Luis Ramos Date: Tue, 16 Jun 2020 18:06:26 +0100 Subject: [PATCH] Extract per_order_fees_total out of compute_order --- app/models/calculator/default_tax.rb | 20 +++++++++++++------- 1 file changed, 13 insertions(+), 7 deletions(-) diff --git a/app/models/calculator/default_tax.rb b/app/models/calculator/default_tax.rb index b3030226ce..073fdcbeef 100644 --- a/app/models/calculator/default_tax.rb +++ b/app/models/calculator/default_tax.rb @@ -29,13 +29,11 @@ module Calculator calculator = OpenFoodNetwork::EnterpriseFeeCalculator.new(order.distributor, order.order_cycle) - # Finds relevant fees for whole order, - # calculates the tax on them, and returns the total tax - per_order_fees_total = calculator.per_order_enterprise_fee_applicators_for(order) - .select { |applicator| applicator.enterprise_fee.tax_category == rate.tax_category } - .sum { |applicator| applicator.enterprise_fee.compute_amount(order) } - - [line_items_total(order), per_item_fees_total(order, calculator), per_order_fees_total].sum do |total| + [ + line_items_total(order), + per_item_fees_total(order, calculator), + per_order_fees_total(order, calculator) + ].sum do |total| round_to_two_places(total * rate.amount) end end @@ -63,6 +61,14 @@ module Calculator end end + # Finds relevant fees for whole order, + # calculates the tax on them, and returns the total tax + def per_order_fees_total(order, calculator) + calculator.per_order_enterprise_fee_applicators_for(order) + .select { |applicator| applicator.enterprise_fee.tax_category == rate.tax_category } + .sum { |applicator| applicator.enterprise_fee.compute_amount(order) } + end + def compute_line_item(line_item) if line_item.tax_category == rate.tax_category if rate.included_in_price