From 2786fb30baec5cc852f830d90421fd256a1938f1 Mon Sep 17 00:00:00 2001 From: Matt-Yorkley <9029026+Matt-Yorkley@users.noreply.github.com> Date: Wed, 1 Sep 2021 11:48:49 +0100 Subject: [PATCH] Simplify order advancing process --- app/controllers/split_checkout_controller.rb | 13 +++---------- app/services/order_workflow.rb | 17 +++++++---------- 2 files changed, 10 insertions(+), 20 deletions(-) diff --git a/app/controllers/split_checkout_controller.rb b/app/controllers/split_checkout_controller.rb index 073b9c6693..251d94a8a9 100644 --- a/app/controllers/split_checkout_controller.rb +++ b/app/controllers/split_checkout_controller.rb @@ -37,8 +37,7 @@ class SplitCheckoutController < ::BaseController load_shipping_method handle_shipping_method_selection - confirm_or_update = confirm_order || update_order - if confirm_or_update && advance_order_state + if confirm_order || update_order clear_invalid_payments redirect_to_step else @@ -117,19 +116,13 @@ class SplitCheckoutController < ::BaseController return unless params[:order] return if @order.state == "address" && params[:shipping_method_id].blank? - @order.update(order_params) + @order.update(order_params) && advance_order_state end def advance_order_state return true if @order.complete? - workflow_options = raw_params.slice(:shipping_method_id) - - if @order.payments.empty? - OrderWorkflow.new(@order).advance_to_payment(workflow_options) - else - OrderWorkflow.new(@order).advance_to_confirmation(workflow_options) - end + OrderWorkflow.new(@order).advance_checkout(raw_params.slice(:shipping_method_id)) end def checkout_step diff --git a/app/services/order_workflow.rb b/app/services/order_workflow.rb index 8fc1615c77..8f8b3028c9 100644 --- a/app/services/order_workflow.rb +++ b/app/services/order_workflow.rb @@ -23,19 +23,16 @@ class OrderWorkflow result end - def advance_to_payment(options = {}) - if options[:shipping_method_id] - order.select_shipping_method(options[:shipping_method_id]) - end + def advance_to_payment advance_to_state("payment", advance_order_options) end - def advance_to_confirmation(options = {}) - if options[:shipping_method_id] - order.select_shipping_method(options[:shipping_method_id]) - end + def advance_checkout(options = {}) + order.select_shipping_method(options[:shipping_method_id]) - advance_to_state("confirmation") + advance_to = order.address? || order.delivery? ? "payment" : "confirmation" + + advance_to_state(advance_to, advance_order_options.merge(options)) end private @@ -71,7 +68,7 @@ class OrderWorkflow end def after_transition_hook(options) - if order.state == "delivery" && (options[:shipping_method_id]) + if order.state == "delivery" order.select_shipping_method(options[:shipping_method_id]) end