mirror of
https://github.com/openfoodfoundation/openfoodnetwork
synced 2026-02-27 01:43:22 +00:00
Simplify order advancing process
This commit is contained in:
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
|
||||
Reference in New Issue
Block a user