From 2c5bfab29f01416ad37fc73f7952ad84432ca296 Mon Sep 17 00:00:00 2001 From: Rob Harrington Date: Wed, 31 Jan 2018 12:22:46 +1100 Subject: [PATCH] Refactoring price estimation logic for StandingOrderForm --- app/services/standing_order_form.rb | 28 ++++++++++++++++------------ 1 file changed, 16 insertions(+), 12 deletions(-) diff --git a/app/services/standing_order_form.rb b/app/services/standing_order_form.rb index 4163a3932e..0ed4067731 100644 --- a/app/services/standing_order_form.rb +++ b/app/services/standing_order_form.rb @@ -32,18 +32,22 @@ class StandingOrderForm end def validate_price_estimates - item_attributes = params[:standing_line_items_attributes] - return if item_attributes.blank? - if fee_calculator - item_attributes.each do |item_attrs| - if variant = Spree::Variant.find_by_id(item_attrs[:variant_id]) - item_attrs[:price_estimate] = price_estimate_for(variant) - else - item_attrs.delete(:price_estimate) - end - end - else - item_attributes.each { |item_attrs| item_attrs.delete(:price_estimate) } + return unless params[:standing_line_items_attributes] + return clear_price_estimates unless fee_calculator + calculate_prices_from_variant_ids + end + + def clear_price_estimates + params[:standing_line_items_attributes].each do |item_attrs| + item_attrs.delete(:price_estimate) + end + end + + def calculate_prices_from_variant_ids + params[:standing_line_items_attributes].each do |item_attrs| + variant = Spree::Variant.find_by_id(item_attrs[:variant_id]) + next item_attrs.delete(:price_estimate) unless variant + item_attrs[:price_estimate] = price_estimate_for(variant) end end