diff --git a/app/jobs/reports/combined_invoice_supplement_report_v2.rb b/app/jobs/reports/combined_invoice_supplement_report_v2.rb index d7d93969a7a..454db21f0b4 100644 --- a/app/jobs/reports/combined_invoice_supplement_report_v2.rb +++ b/app/jobs/reports/combined_invoice_supplement_report_v2.rb @@ -142,6 +142,18 @@ def combine_by_iaa_month( year_months.each do |year_month| iaa_results = by_iaa_and_year_month[ [iaa_key, year_month] ] + if !iaa_results + logger.warn( + { + level: 'warning', + name: 'missing iaa_results', + iaa: iaa_key, + year_month: year_month, + }.to_json, + ) + next + end + issuer_results = year_months_data[year_month] year_month_start = Date.strptime(year_month, '%Y%m') iaa_start_date = Date.parse(iaa_results.first[:iaa_start_date]) diff --git a/spec/jobs/reports/combined_invoice_supplement_report_v2_spec.rb b/spec/jobs/reports/combined_invoice_supplement_report_v2_spec.rb index 0ffda29936f..e04ce038453 100644 --- a/spec/jobs/reports/combined_invoice_supplement_report_v2_spec.rb +++ b/spec/jobs/reports/combined_invoice_supplement_report_v2_spec.rb @@ -578,6 +578,74 @@ end end + describe '#combine_by_iaa_month' do + let(:service_provider) { create(:service_provider) } + + let(:by_iaa_results) do + [ + { + key: 'IAA123', + year_month: '202408', + iaa_start_date: '2024-08-01', + iaa_end_date: '2025-07-31', + }, + ] + end + + let(:by_issuer_results) do + [ + { + iaa: 'IAA123', + issuer: service_provider.issuer, + year_month: '202408', + }, + { + iaa: 'IAA123', + issuer: service_provider.issuer, + year_month: '202409', + }, + ] + end + + let(:by_partner_results) do + [] + end + + let(:by_issuer_profile_age_results) do + [] + end + + it 'does not error if by_iaa_results is missing an entry' do + csv_data = report.combine_by_iaa_month( + by_iaa_results:, + by_issuer_results:, + by_partner_results:, + by_issuer_profile_age_results:, + ) + + csv = CSV.parse(csv_data, headers: true) + expect(csv.length).to be + end + + it 'logs a warning for which IAA and which month for debugging' do + expect(Rails.logger).to receive(:warn) do |msg| + expect(JSON.parse(msg, symbolize_names: true)).to eq( + level: 'warning', + name: 'missing iaa_results', + iaa: 'IAA123', + year_month: '202409', + ) + end + + report.combine_by_iaa_month( + by_iaa_results:, + by_issuer_results:, + by_partner_results:, + by_issuer_profile_age_results:, + ) + end + end + def build_iaa_order(order_number:, date_range:, iaa_gtc:) create( :iaa_order,