mirror of
https://github.com/openfoodfoundation/openfoodnetwork
synced 2026-03-24 05:38:52 +00:00
Compare commits
1 Commits
RachL-patc
...
v4.4.52
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
ac7a36416b |
@@ -112,7 +112,8 @@ module VariantStock
|
|||||||
#
|
#
|
||||||
# This enables us to override this behaviour for variant overrides
|
# This enables us to override this behaviour for variant overrides
|
||||||
def move(quantity, originator = nil)
|
def move(quantity, originator = nil)
|
||||||
return if deleted_at
|
# Don't change variant stock if variant is on_demand or has been deleted
|
||||||
|
return if on_demand || deleted_at
|
||||||
|
|
||||||
raise_error_if_no_stock_item_available
|
raise_error_if_no_stock_item_available
|
||||||
|
|
||||||
|
|||||||
@@ -15,9 +15,7 @@ class VariantOverride < ApplicationRecord
|
|||||||
# Need to ensure this can be set by the user.
|
# Need to ensure this can be set by the user.
|
||||||
validates :default_stock, numericality: { greater_than_or_equal_to: 0 }, allow_nil: true
|
validates :default_stock, numericality: { greater_than_or_equal_to: 0 }, allow_nil: true
|
||||||
validates :price, numericality: { greater_than_or_equal_to: 0 }, allow_nil: true
|
validates :price, numericality: { greater_than_or_equal_to: 0 }, allow_nil: true
|
||||||
validates :count_on_hand, numericality: {
|
validates :count_on_hand, numericality: { greater_than_or_equal_to: 0 }, allow_nil: true
|
||||||
greater_than_or_equal_to: 0, unless: :on_demand?
|
|
||||||
}, allow_nil: true
|
|
||||||
|
|
||||||
default_scope { where(permission_revoked_at: nil) }
|
default_scope { where(permission_revoked_at: nil) }
|
||||||
|
|
||||||
|
|||||||
@@ -43,7 +43,11 @@ module OpenFoodNetwork
|
|||||||
# - updates variant_override.count_on_hand
|
# - updates variant_override.count_on_hand
|
||||||
# - does not create stock_movement
|
# - does not create stock_movement
|
||||||
# - does not update stock_item.count_on_hand
|
# - 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)
|
def move(quantity, originator = nil)
|
||||||
|
return if @variant_override&.on_demand
|
||||||
|
|
||||||
if @variant_override&.stock_overridden?
|
if @variant_override&.stock_overridden?
|
||||||
@variant_override.move_stock! quantity
|
@variant_override.move_stock! quantity
|
||||||
else
|
else
|
||||||
|
|||||||
@@ -181,9 +181,9 @@ module OpenFoodNetwork
|
|||||||
scoper.scope v2
|
scoper.scope v2
|
||||||
end
|
end
|
||||||
|
|
||||||
it "does reduce variant's stock" do
|
it "doesn't reduce variant's stock" do
|
||||||
v2.move(-2)
|
v2.move(-2)
|
||||||
expect(Spree::Variant.find(v2.id).on_hand).to eq 3
|
expect(Spree::Variant.find(v2.id).on_hand).to eq 5
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|||||||
@@ -303,8 +303,8 @@ module Spree
|
|||||||
expect(order.shipment.manifest.first.variant).to eq line_item.variant
|
expect(order.shipment.manifest.first.variant).to eq line_item.variant
|
||||||
end
|
end
|
||||||
|
|
||||||
it "reduces the variant's stock level" do
|
it "does not reduce the variant's stock level" do
|
||||||
expect(variant_on_demand.reload.on_hand).to eq(-9)
|
expect(variant_on_demand.reload.on_hand).to eq 1
|
||||||
end
|
end
|
||||||
|
|
||||||
it "does not mark inventory units as backorderd" do
|
it "does not mark inventory units as backorderd" do
|
||||||
|
|||||||
@@ -210,12 +210,12 @@ RSpec.describe "shopping with variant overrides defined" do
|
|||||||
expect(product1_variant1_override.reload.count_on_hand).to be_nil
|
expect(product1_variant1_override.reload.count_on_hand).to be_nil
|
||||||
end
|
end
|
||||||
|
|
||||||
it "does subtract stock from variants where the override has on_demand: true" do
|
it "does not subtract stock from variants where the override has on_demand: true" do
|
||||||
click_add_to_cart product4_variant1, 2
|
click_add_to_cart product4_variant1, 2
|
||||||
click_checkout
|
click_checkout
|
||||||
expect do
|
expect do
|
||||||
complete_checkout
|
complete_checkout
|
||||||
end.to change { product4_variant1.reload.on_hand }.by(-2)
|
end.to change { product4_variant1.reload.on_hand }.by(0)
|
||||||
expect(product4_variant1_override.reload.count_on_hand).to be_nil
|
expect(product4_variant1_override.reload.count_on_hand).to be_nil
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user