diff --git a/app/models/spree/line_item_decorator.rb b/app/models/spree/line_item_decorator.rb index 9c99c9567f..2526f6670a 100644 --- a/app/models/spree/line_item_decorator.rb +++ b/app/models/spree/line_item_decorator.rb @@ -47,8 +47,11 @@ Spree::LineItem.class_eval do } scope :supplied_by_any, lambda { |enterprises| - joins(:product). - where('spree_products.supplier_id IN (?)', enterprises) + joins("LEFT OUTER JOIN spree_variants + ON spree_line_items.variant_id = spree_variants.id + LEFT OUTER JOIN spree_products + ON spree_variants.product_id = spree_products.id"). + where("spree_products.supplier_id IN (?)", enterprises) } scope :with_tax, -> { diff --git a/app/services/permissions/order.rb b/app/services/permissions/order.rb index 5e95ba92c8..39e78ec96e 100644 --- a/app/services/permissions/order.rb +++ b/app/services/permissions/order.rb @@ -90,11 +90,7 @@ module Permissions # Any from visible orders, where the product is produced by one of my managed producers def produced_line_items Spree::LineItem.where(order_id: visible_orders.select("DISTINCT spree_orders.id")). - joins(:product). - where(spree_products: - { - supplier_id: @permissions.managed_enterprises.is_primary_producer.select("enterprises.id") - }) + supplied_by_any(@permissions.managed_enterprises.is_primary_producer.select("enterprises.id")) end end end