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 e9f89362f4
commit a1887bdc76
5 changed files with 7 additions and 8 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

@@ -182,6 +182,8 @@ module OpenFoodNetwork
end
it "doesn't reduce variant's stock" do
pending "updating override stock"
v2.move(-2)
expect(Spree::Variant.find(v2.id).on_hand).to eq 5
end

View File

@@ -313,8 +313,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

@@ -223,6 +223,8 @@ RSpec.describe "shopping with variant overrides defined" do
end
it "does not subtract stock from variants where the override has on_demand: true" do
pending "update override stock"
click_add_to_cart product4_variant1, 2
click_checkout
expect do