Update stock levels of on-demand items

We weren't bothering with stock when items were on demand anyway. But we
want to track stock now so that we can backorder more when local stock
levels become negative.
This commit is contained in:
Maikel Linke
2024-03-20 16:53:39 +11:00
parent d391faac64
commit ecbba894f7
5 changed files with 7 additions and 12 deletions

View File

@@ -112,8 +112,7 @@ module VariantStock
#
# This enables us to override this behaviour for variant overrides
def move(quantity, originator = nil)
# Don't change variant stock if variant is on_demand or has been deleted
return if on_demand || deleted_at
return if deleted_at
raise_error_if_no_stock_item_available

View File

@@ -43,11 +43,7 @@ module OpenFoodNetwork
# - updates variant_override.count_on_hand
# - does not create stock_movement
# - does not update stock_item.count_on_hand
# If it is a variant override with on_demand:
# - don't change stock or call super (super would change the variant's stock)
def move(quantity, originator = nil)
return if @variant_override&.on_demand
if @variant_override&.stock_overridden?
@variant_override.move_stock! quantity
else

View File

@@ -181,9 +181,9 @@ module OpenFoodNetwork
scoper.scope v2
end
it "doesn't reduce variant's stock" do
it "does reduce variant's stock" do
v2.move(-2)
expect(Spree::Variant.find(v2.id).on_hand).to eq 5
expect(Spree::Variant.find(v2.id).on_hand).to eq 3
end
end

View File

@@ -303,8 +303,8 @@ module Spree
expect(order.shipment.manifest.first.variant).to eq line_item.variant
end
it "does not reduce the variant's stock level" do
expect(variant_on_demand.reload.on_hand).to eq 1
it "reduces the variant's stock level" do
expect(variant_on_demand.reload.on_hand).to eq(-9)
end
it "does not mark inventory units as backorderd" do

View File

@@ -210,12 +210,12 @@ RSpec.describe "shopping with variant overrides defined" do
expect(product1_variant1_override.reload.count_on_hand).to be_nil
end
it "does not subtract stock from variants where the override has on_demand: true" do
it "does subtract stock from variants where the override has on_demand: true" do
click_add_to_cart product4_variant1, 2
click_checkout
expect do
complete_checkout
end.to change { product4_variant1.reload.on_hand }.by(0)
end.to change { product4_variant1.reload.on_hand }.by(-2)
expect(product4_variant1_override.reload.count_on_hand).to be_nil
end