mirror of
https://github.com/openfoodfoundation/openfoodnetwork
synced 2026-01-24 20:36:49 +00:00
record subscription issue if no order is generated
This commit is contained in:
@@ -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
|
||||
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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)
|
||||
|
||||
Reference in New Issue
Block a user