record subscription issue if no order is generated

This commit is contained in:
Andy Brett
2021-03-24 12:16:25 -07:00
parent 4bddc59696
commit 9d2fd373ce
4 changed files with 28 additions and 6 deletions

View File

@@ -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

View File

@@ -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

View File

@@ -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

View File

@@ -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)