From a91a23aa392b1d1b834363baaf6ca3dc15bbef50 Mon Sep 17 00:00:00 2001 From: Kristina Lim Date: Thu, 10 Oct 2019 21:31:02 +0800 Subject: [PATCH] Eager-load associations for Orders and Fulfillment report subtypes --- lib/open_food_network/orders_and_fulfillments_report.rb | 4 +++- .../orders_and_fulfillments_report/customer_totals_report.rb | 4 ++++ .../orders_and_fulfillments_report/default_report.rb | 4 ++++ .../distributor_totals_by_supplier_report.rb | 4 ++++ .../supplier_totals_by_distributor_report.rb | 4 ++++ .../orders_and_fulfillments_report/supplier_totals_report.rb | 4 ++++ lib/open_food_network/reports/line_items.rb | 4 ++++ 7 files changed, 27 insertions(+), 1 deletion(-) diff --git a/lib/open_food_network/orders_and_fulfillments_report.rb b/lib/open_food_network/orders_and_fulfillments_report.rb index f5b810fb18..f930ba50c6 100644 --- a/lib/open_food_network/orders_and_fulfillments_report.rb +++ b/lib/open_food_network/orders_and_fulfillments_report.rb @@ -26,7 +26,9 @@ module OpenFoodNetwork def table_items return [] unless @render_table - Reports::LineItems.list(permissions, options) + + list_options = options.merge(line_item_includes: report.line_item_includes) + Reports::LineItems.list(permissions, list_options) end private diff --git a/lib/open_food_network/orders_and_fulfillments_report/customer_totals_report.rb b/lib/open_food_network/orders_and_fulfillments_report/customer_totals_report.rb index 24a5769a57..280477e324 100644 --- a/lib/open_food_network/orders_and_fulfillments_report/customer_totals_report.rb +++ b/lib/open_food_network/orders_and_fulfillments_report/customer_totals_report.rb @@ -188,6 +188,10 @@ module OpenFoodNetwork # rubocop:enable Metrics/CyclomaticComplexity # rubocop:enable Metrics/MethodLength # rubocop:enable Metrics/PerceivedComplexity + + def line_item_includes + [{ variant: :product, order: [:bill_address, :shipments] }] + end end end end diff --git a/lib/open_food_network/orders_and_fulfillments_report/default_report.rb b/lib/open_food_network/orders_and_fulfillments_report/default_report.rb index d2aac6dd1f..cdeca0e5be 100644 --- a/lib/open_food_network/orders_and_fulfillments_report/default_report.rb +++ b/lib/open_food_network/orders_and_fulfillments_report/default_report.rb @@ -54,6 +54,10 @@ module OpenFoodNetwork end # rubocop:enable Metrics/AbcSize + def line_item_includes + [] + end + private attr_reader :context diff --git a/lib/open_food_network/orders_and_fulfillments_report/distributor_totals_by_supplier_report.rb b/lib/open_food_network/orders_and_fulfillments_report/distributor_totals_by_supplier_report.rb index e9ee219ac8..68b16a3838 100644 --- a/lib/open_food_network/orders_and_fulfillments_report/distributor_totals_by_supplier_report.rb +++ b/lib/open_food_network/orders_and_fulfillments_report/distributor_totals_by_supplier_report.rb @@ -66,6 +66,10 @@ module OpenFoodNetwork proc { |_line_items| I18n.t(:report_header_shipping_method) }] end # rubocop:enable Metrics/AbcSize + + def line_item_includes + [:order, { variant: :product }] + end end end end diff --git a/lib/open_food_network/orders_and_fulfillments_report/supplier_totals_by_distributor_report.rb b/lib/open_food_network/orders_and_fulfillments_report/supplier_totals_by_distributor_report.rb index dd578058e2..6596676335 100644 --- a/lib/open_food_network/orders_and_fulfillments_report/supplier_totals_by_distributor_report.rb +++ b/lib/open_food_network/orders_and_fulfillments_report/supplier_totals_by_distributor_report.rb @@ -67,6 +67,10 @@ module OpenFoodNetwork ] end # rubocop:enable Metrics/AbcSize + + def line_item_includes + [:order, { variant: :product }] + end end end end diff --git a/lib/open_food_network/orders_and_fulfillments_report/supplier_totals_report.rb b/lib/open_food_network/orders_and_fulfillments_report/supplier_totals_report.rb index 666cc1473e..31e8ed30c7 100644 --- a/lib/open_food_network/orders_and_fulfillments_report/supplier_totals_report.rb +++ b/lib/open_food_network/orders_and_fulfillments_report/supplier_totals_report.rb @@ -53,6 +53,10 @@ module OpenFoodNetwork ] end # rubocop:enable Metrics/MethodLength + + def line_item_includes + [{ variant: { product: :supplier } }] + end end end end diff --git a/lib/open_food_network/reports/line_items.rb b/lib/open_food_network/reports/line_items.rb index a7b8951fe6..7b85065b1f 100644 --- a/lib/open_food_network/reports/line_items.rb +++ b/lib/open_food_network/reports/line_items.rb @@ -12,6 +12,10 @@ module OpenFoodNetwork line_items = permissions.visible_line_items.merge(Spree::LineItem.where(order_id: orders)) line_items = line_items.supplied_by_any(params[:supplier_id_in]) if params[:supplier_id_in].present? + if params[:line_item_includes].present? + line_items = line_items.includes(*params[:line_item_includes]) + end + hidden_line_items = line_items_with_hidden_details(permissions, line_items) line_items.select{ |li|