From 9d2fd373cef9d6c19bed41be217084e5712904ee Mon Sep 17 00:00:00 2001 From: Andy Brett Date: Wed, 24 Mar 2021 12:16:25 -0700 Subject: [PATCH] record subscription issue if no order is generated --- app/jobs/subscription_placement_job.rb | 6 ++++-- .../subscription_mailer/_summary_detail.html.haml | 8 ++++++++ .../order_management/subscriptions/summarizer.rb | 11 +++++++++-- .../order_management/subscriptions/summary.rb | 9 +++++++-- 4 files changed, 28 insertions(+), 6 deletions(-) diff --git a/app/jobs/subscription_placement_job.rb b/app/jobs/subscription_placement_job.rb index c56df548d6..3131c21051 100644 --- a/app/jobs/subscription_placement_job.rb +++ b/app/jobs/subscription_placement_job.rb @@ -13,8 +13,8 @@ class SubscriptionPlacementJob < ActiveJob::Base private - delegate :record_order, :record_success, :record_issue, to: :summarizer - delegate :record_and_log_error, :send_placement_summary_emails, to: :summarizer + delegate :record_success, :record_issue, :record_subscription_issue, to: :summarizer + delegate :record_order, :record_and_log_error, :send_placement_summary_emails, to: :summarizer def summarizer @summarizer ||= OrderManagement::Subscriptions::Summarizer.new @@ -30,6 +30,8 @@ class SubscriptionPlacementJob < ActiveJob::Base def place_order_for(proxy_order) JobLogger.logger.info("Placing Order for Proxy Order #{proxy_order.id}") initialise_order(proxy_order) + return record_subscription_issue(proxy_order.subscription) if proxy_order.order.nil? + place_order(proxy_order.order) end diff --git a/app/views/subscription_mailer/_summary_detail.html.haml b/app/views/subscription_mailer/_summary_detail.html.haml index 9e99633dcb..a566b2396d 100644 --- a/app/views/subscription_mailer/_summary_detail.html.haml +++ b/app/views/subscription_mailer/_summary_detail.html.haml @@ -19,3 +19,11 @@ - orders.each_with_index do |order, i| %a{ href: order_url(order) }>= order.number = ", " if i < orders.count - 1 + +- if summary.subscription_issues.any? + - subscription_issues = summary.subscription_issues + %h4= t(".other.title", count: subscription_issues.count) + %p= t(".other.explainer") + - subscription_issues.each_with_index do |subscription_id, i| + %a{ href: edit_admin_subscription_url(subscription_id) }>= subscription_id + = ", " if i < subscription_issues.count - 1 diff --git a/engines/order_management/app/services/order_management/subscriptions/summarizer.rb b/engines/order_management/app/services/order_management/subscriptions/summarizer.rb index 86c7deadea..32c925fc03 100644 --- a/engines/order_management/app/services/order_management/subscriptions/summarizer.rb +++ b/engines/order_management/app/services/order_management/subscriptions/summarizer.rb @@ -22,6 +22,10 @@ module OrderManagement summary_for(order).record_issue(type, order, message) end + def record_subscription_issue(subscription) + summary_for_shop_id(subscription.shop_id).record_subscription_issue(subscription) + end + def record_and_log_error(type, order, error_message = nil) return record_issue(type, order) unless order.errors.any? @@ -51,10 +55,13 @@ module OrderManagement private - def summary_for(order) - shop_id = order.distributor_id + def summary_for_shop_id(shop_id) @summaries[shop_id] ||= Summary.new(shop_id) end + + def summary_for(order) + summary_for_shop_id(order.distributor_id) + end end end end diff --git a/engines/order_management/app/services/order_management/subscriptions/summary.rb b/engines/order_management/app/services/order_management/subscriptions/summary.rb index c37272c6d3..e16b116bf8 100644 --- a/engines/order_management/app/services/order_management/subscriptions/summary.rb +++ b/engines/order_management/app/services/order_management/subscriptions/summary.rb @@ -3,13 +3,14 @@ module OrderManagement module Subscriptions class Summary - attr_reader :shop_id, :issues + attr_reader :shop_id, :issues, :subscription_issues def initialize(shop_id) @shop_id = shop_id @order_ids = [] @success_ids = [] @issues = {} + @subscription_issues = [] end def record_order(order) @@ -25,6 +26,10 @@ module OrderManagement issues[type][order.id] = message end + def record_subscription_issue(subscription) + @subscription_issues << subscription.id + end + def order_count @order_ids.count end @@ -34,7 +39,7 @@ module OrderManagement end def issue_count - (@order_ids - @success_ids).count + (@order_ids - @success_ids).count + @subscription_issues.count end def orders_affected_by(type)