Simplify order advancing process

This commit is contained in:
Matt-Yorkley
2021-09-01 11:48:49 +01:00
parent 978c882ed9
commit 2786fb30ba
2 changed files with 10 additions and 20 deletions

View File

@@ -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

View File

@@ -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