diff --git a/app/controllers/api/v0/shipments_controller.rb b/app/controllers/api/v0/shipments_controller.rb index 98a705e277..b1be516316 100644 --- a/app/controllers/api/v0/shipments_controller.rb +++ b/app/controllers/api/v0/shipments_controller.rb @@ -21,11 +21,9 @@ module Api @shipment.refresh_rates @shipment.save! - if @order.line_items.any? && @order.state.in?(["cart", "address", "delivery"]) - OrderWorkflow.new(@order).advance_to_payment - end + OrderWorkflow.new(@order).advance_to_payment if @order.line_items.any? - render json: @shipment.reload, serializer: Api::ShipmentSerializer, status: :ok + render json: @shipment, serializer: Api::ShipmentSerializer, status: :ok end def update diff --git a/app/controllers/spree/admin/orders/customer_details_controller.rb b/app/controllers/spree/admin/orders/customer_details_controller.rb index 22f90d858a..0ce7ccc166 100644 --- a/app/controllers/spree/admin/orders/customer_details_controller.rb +++ b/app/controllers/spree/admin/orders/customer_details_controller.rb @@ -25,7 +25,7 @@ module Spree refresh_shipment_rates recalculate_taxes - OrderWorkflow.new(@order).advance_to_payment if @order.state.in? ["cart", "address", "delivery"] + OrderWorkflow.new(@order).advance_to_payment flash[:success] = Spree.t('customer_details_updated') redirect_to spree.admin_order_customer_path(@order) diff --git a/app/controllers/spree/admin/orders_controller.rb b/app/controllers/spree/admin/orders_controller.rb index 9e141d7674..263e60ae9a 100644 --- a/app/controllers/spree/admin/orders_controller.rb +++ b/app/controllers/spree/admin/orders_controller.rb @@ -51,7 +51,8 @@ module Spree return redirect_to spree.edit_admin_order_path(@order) end - OrderWorkflow.new(@order).advance_to_payment if @order.state.in? ["cart", "address", "delivery"] + OrderWorkflow.new(@order).advance_to_payment + if @order.complete? redirect_to spree.edit_admin_order_path(@order) else diff --git a/app/services/order_workflow.rb b/app/services/order_workflow.rb index 46596b67ce..53d7813e57 100644 --- a/app/services/order_workflow.rb +++ b/app/services/order_workflow.rb @@ -24,6 +24,8 @@ class OrderWorkflow end def advance_to_payment + return unless order.state.in? ["cart", "address", "delivery"] + advance_to_state("payment", advance_order_options) end