From 06ead827d8a41b6f0f0ac0491b405484ddfd09d8 Mon Sep 17 00:00:00 2001 From: Pau Perez Date: Fri, 17 Apr 2020 17:14:51 +0200 Subject: [PATCH] Split long method --- .rubocop_manual_todo.yml | 2 -- app/mailers/producer_mailer.rb | 42 ++++++++++++++++++++++------------ 2 files changed, 28 insertions(+), 16 deletions(-) diff --git a/.rubocop_manual_todo.yml b/.rubocop_manual_todo.yml index de9861fa40..8587ac7850 100644 --- a/.rubocop_manual_todo.yml +++ b/.rubocop_manual_todo.yml @@ -377,7 +377,6 @@ Metrics/AbcSize: - app/helpers/spree/admin/base_helper.rb - app/helpers/spree/admin/zones_helper.rb - app/helpers/spree/orders_helper.rb - - app/mailers/producer_mailer.rb - app/models/calculator/flat_percent_per_item.rb - app/models/column_preference.rb - app/models/enterprise.rb @@ -574,7 +573,6 @@ Metrics/MethodLength: - app/helpers/spree/admin/navigation_helper.rb - app/helpers/spree/admin/base_helper.rb - app/jobs/subscription_placement_job.rb - - app/mailers/producer_mailer.rb - app/models/column_preference.rb - app/models/enterprise.rb - app/models/enterprise_relationship.rb diff --git a/app/mailers/producer_mailer.rb b/app/mailers/producer_mailer.rb index 5fc8e6419d..e130fefd1f 100644 --- a/app/mailers/producer_mailer.rb +++ b/app/mailers/producer_mailer.rb @@ -1,22 +1,16 @@ +# frozen_string_literal: true + class ProducerMailer < Spree::BaseMailer include I18nHelper def order_cycle_report(producer, order_cycle) - unscoping do - @producer = producer - @coordinator = order_cycle.coordinator - @order_cycle = order_cycle + @producer = producer + @order_cycle = order_cycle - line_items = line_items_from(@order_cycle, @producer) - @grouped_line_items = line_items.group_by(&:product_and_full_name) - @receival_instructions = @order_cycle.receival_instructions_for @producer - @total = total_from_line_items(line_items) - @tax_total = tax_total_from_line_items(line_items) - - I18n.with_locale valid_locale(@producer.owner) do - order_cycle_subject = I18n.t('producer_mailer.order_cycle.subject', producer: producer.name) - subject = "[#{Spree::Config.site_name}] #{order_cycle_subject}" + with_unscoped_products_and_variants do + load_data + I18n.with_locale(owner_locale) do return unless orders?(order_cycle, producer) mail( @@ -32,6 +26,26 @@ class ProducerMailer < Spree::BaseMailer private + def owner_locale + valid_locale(@producer.owner) + end + + def load_data + @coordinator = @order_cycle.coordinator + + line_items = line_items_from(@order_cycle, @producer) + + @grouped_line_items = line_items.group_by(&:product_and_full_name) + @receival_instructions = @order_cycle.receival_instructions_for(@producer) + @total = total_from_line_items(line_items) + @tax_total = tax_total_from_line_items(line_items) + end + + def subject + order_cycle_subject = I18n.t('producer_mailer.order_cycle.subject', producer: @producer.name) + "[#{Spree::Config.site_name}] #{order_cycle_subject}" + end + def orders?(order_cycle, producer) line_items_from(order_cycle, producer).any? end @@ -56,7 +70,7 @@ class ProducerMailer < Spree::BaseMailer # This hack makes ActiveRecord skip the default_scope (deleted_at IS NULL) # when eager loading associations. Further details: # https://github.com/rails/rails/issues/11036 - def unscoping + def with_unscoped_products_and_variants variant_default_scopes = Spree::Variant.default_scopes product_default_scopes = Spree::Product.default_scopes