Trigger new backorder only when user checks out

When an admin creates an order, then AmendBackorderJob is called which
can also trigger a new backorder if needed.

This means that we are not creating backorders via subscriptions any
more. It has never been requested and we can bring that back if needed.
This commit is contained in:
Maikel Linke
2025-01-15 15:21:21 +11:00
parent dc7b6245fd
commit c9eed4f5b8
3 changed files with 24 additions and 2 deletions

View File

@@ -92,6 +92,7 @@ class CheckoutController < BaseController
end
@order.process_payments!
@order.confirm!
BackorderJob.check_stock(@order)
order_completion_reset @order
end

View File

@@ -392,8 +392,6 @@ module Spree
deliver_order_confirmation_email
BackorderJob.check_stock(self)
state_changes.create(
previous_state: 'cart',
next_state: 'complete',

View File

@@ -0,0 +1,23 @@
# frozen_string_literal: true
require "system_helper"
RSpec.describe "Checkout" do
include ShopWorkflow
include CheckoutHelper
let(:variant) { order.variants.first }
let(:order) { create(:order_ready_for_confirmation) }
before do
variant.semantic_links << SemanticLink.new(semantic_id: "https://product")
set_order order
login_as create(:user)
end
it "triggers a backorder" do
visit checkout_step_path(:summary)
expect { place_order }.to enqueue_job BackorderJob
end
end