diff --git a/app/controllers/spree/admin/reports_controller.rb b/app/controllers/spree/admin/reports_controller.rb index ec08bca29c..78381a9d63 100644 --- a/app/controllers/spree/admin/reports_controller.rb +++ b/app/controllers/spree/admin/reports_controller.rb @@ -247,7 +247,7 @@ module Spree end def suppliers_of_products_distributed_by(distributors) - distributors.map { |d| Spree::Product.in_distributor(d).includes(:supplier).all }. + distributors.map { |d| Spree::Product.in_distributor(d).includes(:supplier).to_a }. flatten.map(&:supplier).uniq end diff --git a/app/models/spree/line_item_decorator.rb b/app/models/spree/line_item_decorator.rb index b3456d7ba9..37637f7564 100644 --- a/app/models/spree/line_item_decorator.rb +++ b/app/models/spree/line_item_decorator.rb @@ -71,9 +71,11 @@ Spree::LineItem.class_eval do where('spree_adjustments.id IS NULL') } + # Overridden so that LineItems always have access to soft-deleted Variant attributes + # In some situations, unscoped super will be nil, in these cases we fetch the variant using the variant_id + # See isssue #4946 for more details def variant - # Overridden so that LineItems always have access to soft-deleted Variant attributes - Spree::Variant.unscoped { super } + Spree::Variant.unscoped { super } || Spree::Variant.unscoped.find(self.variant_id) end def cap_quantity_at_stock! diff --git a/lib/open_food_network/reports/line_items.rb b/lib/open_food_network/reports/line_items.rb index 4e272a7c13..59d9901552 100644 --- a/lib/open_food_network/reports/line_items.rb +++ b/lib/open_food_network/reports/line_items.rb @@ -21,7 +21,7 @@ module OpenFoodNetwork end if line_item_includes.present? - line_items = line_items.includes(*line_item_includes) + line_items = line_items.includes(*line_item_includes).references(:line_items) end editable_line_items = editable_line_items(line_items)