Move inventory enabled check to OpenFoodNetwork::ScopeVariantToHub

This commit is contained in:
Gaetan Craig-Riou
2025-07-02 15:35:46 +10:00
parent ddc45e1cd8
commit 6937a133ae
12 changed files with 51 additions and 31 deletions

View File

@@ -54,9 +54,9 @@ module Admin
fee_calculator = OpenFoodNetwork::EnterpriseFeeCalculator.new(@shop, @order_cycle)
if OpenFoodNetwork::FeatureToggle.enabled?(:inventory, @shop)
OpenFoodNetwork::ScopeVariantToHub.new(@shop).scope(@variant)
end
OpenFoodNetwork::ScopeVariantToHub.new(@shop).scope(
@variant, inventory_enabled: OpenFoodNetwork::FeatureToggle.enabled?(:inventory, @shop)
)
@variant.price + fee_calculator.indexed_fees_for(@variant)
end

View File

@@ -113,9 +113,10 @@ module Api
def scoped_variant(variant_id)
variant = Spree::Variant.find(variant_id)
if OpenFoodNetwork::FeatureToggle.enabled?(:inventory, @order.distributor)
OpenFoodNetwork::ScopeVariantToHub.new(@order.distributor).scope(variant)
end
OpenFoodNetwork::ScopeVariantToHub.new(@order.distributor).scope(
variant,
inventory_enabled: OpenFoodNetwork::FeatureToggle.enabled?(:inventory, @order.distributor)
)
variant
end

View File

@@ -289,9 +289,12 @@ class OrderCycle < ApplicationRecord
items = Spree::LineItem.includes(:variant).joins(:order).merge(orders)
if OpenFoodNetwork::FeatureToggle.enabled?(:inventory, distributor)
scoper = OpenFoodNetwork::ScopeVariantToHub.new(distributor)
items.each { |li| scoper.scope(li.variant) }
scoper = OpenFoodNetwork::ScopeVariantToHub.new(distributor)
items.each do |li|
scoper.scope(
li.variant,
inventory_enabled: OpenFoodNetwork::FeatureToggle.enabled?(:inventory, distributor)
)
end
items

View File

@@ -296,9 +296,10 @@ module Spree
end
def scope_variant
if OpenFoodNetwork::FeatureToggle.enabled?(:inventory, order.distributor)
scoper.scope(variant)
end
scoper.scope(
variant,
inventory_enabled: OpenFoodNetwork::FeatureToggle.enabled?(:inventory, order.distributor)
)
variant
end

View File

@@ -195,9 +195,10 @@ module Spree
states = {}
units.group_by(&:state).each { |state, iu| states[state] = iu.count }
if OpenFoodNetwork::FeatureToggle.enabled?(:inventory, order.distributor)
scoper.scope(variant)
end
scoper.scope(
variant,
inventory_enabled: OpenFoodNetwork::FeatureToggle.enabled?(:inventory, order.distributor)
)
OpenStruct.new(variant:, quantity: units.length, states:)
end

View File

@@ -59,9 +59,10 @@ class CartService
end
def attempt_cart_add(variant, quantity, max_quantity = nil)
if OpenFoodNetwork::FeatureToggle.enabled?(:inventory, order.distributor)
scoper.scope(variant)
end
scoper.scope(
variant,
inventory_enabled: OpenFoodNetwork::FeatureToggle.enabled?(:inventory, order.distributor)
)
return unless valid_variant?(variant)

View File

@@ -51,9 +51,9 @@ module Orders
attrs[:line_items].each do |li|
next unless variant = Spree::Variant.find_by(id: li[:variant_id])
if OpenFoodNetwork::FeatureToggle.enabled?(:inventory, shop)
scoper.scope(variant)
end
scoper.scope(
variant, inventory_enabled: OpenFoodNetwork::FeatureToggle.enabled?(:inventory, shop)
)
li[:quantity] = stock_limited_quantity(variant.on_demand, variant.on_hand, li[:quantity])
li[:price] = variant.price

View File

@@ -39,9 +39,9 @@ class VariantsStockLevels
def scoped_variant(distributor, variant)
return variant if distributor.blank?
if OpenFoodNetwork::FeatureToggle.enabled?(:inventory, distributor)
scoper(distributor).scope(variant)
end
scoper(distributor).scope(
variant, inventory_enabled: OpenFoodNetwork::FeatureToggle.enabled?(:inventory, distributor)
)
variant
end

View File

@@ -15,9 +15,11 @@ module OrderManagement
variant = line_item.variant
next unless variant.stock_item
if OpenFoodNetwork::FeatureToggle.enabled?(:inventory, order.distributor)
OpenFoodNetwork::ScopeVariantToHub.new(order.distributor).scope(variant)
end
OpenFoodNetwork::ScopeVariantToHub.new(order.distributor).scope(
variant,
inventory_enabled: OpenFoodNetwork::FeatureToggle.enabled?(:inventory,
order.distributor)
)
on_hand, backordered = variant.fill_status(line_item.quantity)
package.add variant, on_hand, :on_hand if on_hand.positive?

View File

@@ -34,9 +34,10 @@ module OrderManagement
def price_estimate_for(variant, fallback)
return fallback unless fee_calculator && variant
if OpenFoodNetwork::FeatureToggle.enabled?(:inventory, shop)
scoper.scope(variant)
end
scoper.scope(
variant, inventory_enabled: OpenFoodNetwork::FeatureToggle.enabled?(:inventory, shop)
)
fees = fee_calculator.indexed_fees_for(variant)
(variant.price + fees).to_d
end

View File

@@ -7,7 +7,9 @@ module OpenFoodNetwork
@variant_overrides = variant_overrides || VariantOverride.indexed(@hub)
end
def scope(variant)
def scope(variant, inventory_enabled: true)
return unless inventory_enabled
variant.extend(OpenFoodNetwork::ScopeVariantToHub::ScopeVariantToHub)
variant.instance_variable_set :@hub, @hub
variant.instance_variable_set :@variant_override, @variant_overrides[variant]

View File

@@ -233,5 +233,13 @@ RSpec.describe OpenFoodNetwork::ScopeVariantToHub do
end
end
end
context "with inventory is disabled" do
it "doesn't override the variant" do
vo
scoper.scope(v, inventory_enabled: false)
expect(v.price).to eq(11.11)
end
end
end
end