From 20f610fbee4f6a9e22bb77e3baa7fc6cb684a628 Mon Sep 17 00:00:00 2001 From: Luis Ramos Date: Sat, 27 Jun 2020 12:46:03 +0100 Subject: [PATCH] Merge controller_helpers/order with decorator --- lib/spree/core/controller_helpers/order.rb | 22 +++++++++++-- .../controller_helpers/order_decorator.rb | 32 ------------------- 2 files changed, 20 insertions(+), 34 deletions(-) delete mode 100644 lib/spree/core/controller_helpers/order_decorator.rb diff --git a/lib/spree/core/controller_helpers/order.rb b/lib/spree/core/controller_helpers/order.rb index 2e4da0c5cd..cfdce6b9b5 100644 --- a/lib/spree/core/controller_helpers/order.rb +++ b/lib/spree/core/controller_helpers/order.rb @@ -1,5 +1,7 @@ # frozen_string_literal: true +require 'open_food_network/scope_variant_to_hub' + module Spree module Core module ControllerHelpers @@ -12,8 +14,21 @@ module Spree end end - # The current incomplete session order used in cart and checkout def current_order(create_order_if_necessary = false) + order = spree_current_order(create_order_if_necessary) + + if order + scoper = OpenFoodNetwork::ScopeVariantToHub.new(order.distributor) + order.line_items.each do |li| + scoper.scope(li.variant) + end + end + + order + end + + # The current incomplete session order used in cart and checkout + def spree_current_order(create_order_if_necessary = false) return @current_order if @current_order if session[:order_id] @@ -62,16 +77,19 @@ module Spree session[:guest_token] = nil end + # Do not attempt to merge incomplete and current orders. + # Instead, destroy the incomplete orders. def set_current_order return unless (user = try_spree_current_user) last_incomplete_order = user.last_incomplete_spree_order + if session[:order_id].nil? && last_incomplete_order session[:order_id] = last_incomplete_order.id elsif current_order(true) && last_incomplete_order && current_order != last_incomplete_order - current_order.merge!(last_incomplete_order) + last_incomplete_order.destroy end end diff --git a/lib/spree/core/controller_helpers/order_decorator.rb b/lib/spree/core/controller_helpers/order_decorator.rb deleted file mode 100644 index 6da1b42ee6..0000000000 --- a/lib/spree/core/controller_helpers/order_decorator.rb +++ /dev/null @@ -1,32 +0,0 @@ -require 'open_food_network/scope_variant_to_hub' - -Spree::Core::ControllerHelpers::Order.class_eval do - def current_order_with_scoped_variants(create_order_if_necessary = false) - order = current_order_without_scoped_variants(create_order_if_necessary) - - if order - scoper = OpenFoodNetwork::ScopeVariantToHub.new(order.distributor) - order.line_items.each do |li| - scoper.scope(li.variant) - end - end - - order - end - alias_method_chain :current_order, :scoped_variants - - # Override definition in Spree::Core::ControllerHelpers::Order - # Do not attempt to merge incomplete and current orders. Instead, destroy the incomplete orders. - def set_current_order - if user = try_spree_current_user - last_incomplete_order = user.last_incomplete_spree_order - - if session[:order_id].nil? && last_incomplete_order - session[:order_id] = last_incomplete_order.id - - elsif current_order && last_incomplete_order && current_order != last_incomplete_order - last_incomplete_order.destroy - end - end - end -end