From 8bcb19f293821dc651e652f2705eb8bcf7c80b3a Mon Sep 17 00:00:00 2001 From: Pau Perez Date: Fri, 11 Jun 2021 13:22:08 +0200 Subject: [PATCH] Split method into higher-level smaller methods --- .../cap_quantity_and_store_changes.rb | 44 +++++++++++-------- 1 file changed, 26 insertions(+), 18 deletions(-) diff --git a/app/services/cap_quantity_and_store_changes.rb b/app/services/cap_quantity_and_store_changes.rb index b3a5634277..c6a5660e81 100644 --- a/app/services/cap_quantity_and_store_changes.rb +++ b/app/services/cap_quantity_and_store_changes.rb @@ -3,34 +3,42 @@ class CapQuantityAndStoreChanges def initialize(order) @order = order + @changes = {} end def call - changes = {} + cap_insufficient_stock! + verify_line_items - order.insufficient_stock_lines.each do |line_item| - changes[line_item.id] = line_item.quantity - line_item.cap_quantity_at_stock! - end - - unavailable_stock_lines_for.each do |line_item| - changes[line_item.id] = changes[line_item.id] || line_item.quantity - line_item.update(quantity: 0) - - Spree::OrderInventory.new(order).verify(line_item, order.shipment) - end - - if changes.present? - order.line_items.reload - order.update_order_fees! - end + reload_order if changes.present? changes end private - attr_reader :order + attr_reader :order, :changes + + def cap_insufficient_stock! + order.insufficient_stock_lines.each do |line_item| + changes[line_item.id] = line_item.quantity + line_item.cap_quantity_at_stock! + end + end + + def verify_line_items + unavailable_stock_lines_for.each do |line_item| + changes[line_item.id] = changes[line_item.id] || line_item.quantity + line_item.update(quantity: 0) + + Spree::OrderInventory.new(order).verify(line_item, order.shipment) + end + end + + def reload_order + order.line_items.reload + order.update_order_fees! + end def unavailable_stock_lines_for order.line_items.where('variant_id NOT IN (?)', available_variants_for.select(&:id))