complete order immediately before adding payment

This commit is contained in:
Andy Brett
2021-06-10 16:37:16 -07:00
parent 1a6257257a
commit d2701226b6
4 changed files with 13 additions and 10 deletions

View File

@@ -25,7 +25,7 @@ module Spree
@order.associate_user!(Spree.user_class.find_by(email: @order.email))
end
OrderWorkflow.new(@order).complete
OrderWorkflow.new(@order).advance_to_payment
@order.shipments.map(&:refresh_rates)
flash[:success] = Spree.t('customer_details_updated')

View File

@@ -35,15 +35,16 @@ module Spree
return
end
authorize_stripe_sca_payment
if @order.completed?
@payment.process!
authorize_stripe_sca_payment
@payment.process_offline!
flash[:success] = flash_message_for(@payment, :successfully_created)
redirect_to spree.admin_order_payments_path(@order)
else
OrderWorkflow.new(@order).complete!
authorize_stripe_sca_payment
@payment.process_offline!
flash[:success] = Spree.t(:new_order_completed)
redirect_to spree.edit_admin_order_url(@order)

View File

@@ -67,12 +67,6 @@ module Spree
transition to: :cart, unless: :completed?
end
if states[:payment]
before_transition to: :complete do |order|
order.process_payments! if order.payment_required?
end
end
before_transition from: :cart, do: :ensure_line_items_present
before_transition to: :delivery, do: :create_proposed_shipments

View File

@@ -23,6 +23,14 @@ class OrderWorkflow
result
end
def advance_to_payment
until order.state == "payment"
break unless order.next
after_transition_hook(advance_order_options)
end
end
private
def advance_order_options