diff --git a/app/controllers/split_checkout_controller.rb b/app/controllers/split_checkout_controller.rb index 6e0a071c61..917f6ad2d9 100644 --- a/app/controllers/split_checkout_controller.rb +++ b/app/controllers/split_checkout_controller.rb @@ -37,9 +37,9 @@ class SplitCheckoutController < ::BaseController load_shipping_method handle_shipping_method_selection - if confirm_order || update_order + confirm_or_update = confirm_order || update_order + if confirm_or_update && advance_order_state clear_invalid_payments - advance_order_state redirect_to_step else if @shipping_method_id.blank? diff --git a/app/models/spree/order.rb b/app/models/spree/order.rb index ca5b45dcfa..301f17a422 100644 --- a/app/models/spree/order.rb +++ b/app/models/spree/order.rb @@ -501,7 +501,7 @@ module Spree def disallow_guest_order return unless using_guest_checkout? && registered_email? - errors.add(:base, I18n.t('devise.failure.already_registered')) + errors.add(:email, I18n.t('devise.failure.already_registered')) end # After changing line items of a completed order diff --git a/spec/models/spree/order_spec.rb b/spec/models/spree/order_spec.rb index e6b7086e98..b0fc32a39a 100644 --- a/spec/models/spree/order_spec.rb +++ b/spec/models/spree/order_spec.rb @@ -1059,7 +1059,7 @@ describe Spree::Order do it "returns a validation error" do expect{ order.next }.to change(order.errors, :count).from(0).to(1) - expect(order.errors.messages[:base]).to eq [I18n.t('devise.failure.already_registered')] + expect(order.errors.messages[:email]).to eq [I18n.t('devise.failure.already_registered')] expect(order.state).to eq 'cart' end end