Class: PaymentReconciliationMailer
- Inherits:
-
ApplicationMailer
- Object
- ActionMailer::Base
- ApplicationMailer
- PaymentReconciliationMailer
- Defined in:
- app/mailers/payment_reconciliation_mailer.rb
Overview
ActionMailer: nightly payment-issue digest sent by
Payment::DailyIssuesDigestWorker. Consolidates four classes of issue
that previously emailed separately:
- Orphan Stripe PaymentIntents (Stripe charged, Heatwave doesn't know)
- Overcharged invoices (captured > invoice total)
- PayPal authorizations past the 29-day hard limit (expired)
- PayPal reauthorization failures
Each digest is sent to the union of recipients that previously
received the individual alerts. Only sent when at least one section
has content — never sends an "all clear."
Constant Summary collapse
- DIGEST_RECIPIENTS =
%w[ heatwaveteam@warmlyyours.com vadepu@warmlyyours.com ar@warmlyyours.com ].freeze
Instance Method Summary collapse
Methods inherited from ApplicationMailer
Instance Method Details
#daily_issues_digest(issues:) ⇒ Object
27 28 29 30 31 32 33 34 35 36 37 38 39 |
# File 'app/mailers/payment_reconciliation_mailer.rb', line 27 def daily_issues_digest(issues:) return null_mail if issues.values.all?(&:blank?) @issues = issues @section_counts = issues.transform_values { |records| records.to_a.size } @total_count = @section_counts.values.sum mail( from: 'Heatwave Team <heatwaveteam@warmlyyours.com>', to: DIGEST_RECIPIENTS, subject: "Payment issues digest — #{@total_count} item#{'s' unless @total_count == 1} (last 24h)" ) end |