From 9cbcf1448550c9dcbc103727b2d1ccf9b60fe65a Mon Sep 17 00:00:00 2001 From: Luis Ramos Date: Tue, 28 Jul 2020 23:50:47 +0100 Subject: [PATCH] Move shipping method id setting code to OrderWorkflow service --- app/controllers/checkout_controller.rb | 4 +--- app/services/order_workflow.rb | 8 ++++++-- 2 files changed, 7 insertions(+), 5 deletions(-) diff --git a/app/controllers/checkout_controller.rb b/app/controllers/checkout_controller.rb index 2654e5c0ff..66d5b445f7 100644 --- a/app/controllers/checkout_controller.rb +++ b/app/controllers/checkout_controller.rb @@ -175,9 +175,7 @@ class CheckoutController < Spree::StoreController return if redirect_to_payment_gateway end - @order.select_shipping_method(shipping_method_id) if @order.state == "delivery" - - next if OrderWorkflow.new(@order).next + next if OrderWorkflow.new(@order).next({ shipping_method_id: shipping_method_id }) return update_failed end diff --git a/app/services/order_workflow.rb b/app/services/order_workflow.rb index 1351bfeee6..d333149283 100644 --- a/app/services/order_workflow.rb +++ b/app/services/order_workflow.rb @@ -13,9 +13,13 @@ class OrderWorkflow advance_order!(advance_order_options) end - def next + def next(options = {}) tries ||= 3 - order.next + result = order.next + + after_transition_hook(options) + + result rescue ActiveRecord::StaleObjectError retry unless (tries -= 1).zero? false