diff --git a/app/services/report_parser.rb b/app/services/report_parser.rb index 3cbed2b..62f48a1 100644 --- a/app/services/report_parser.rb +++ b/app/services/report_parser.rb @@ -87,11 +87,12 @@ class ReportParser form_data = parsed_forms.fetch(form_code, {})[year] || {} source_rows = form_data[:rows] || form_data['rows'] || [] rows_by_code = index_rows_by_code(source_rows) + form_codes = report_codes_for_form(form_code, codes) hash[form_code] = { form_code: form_code, sheet_name: form_data[:sheet_name] || form_data['sheet_name'] || config.fetch(:sheet_name), - rows: codes.map do |report_code| + rows: form_codes.map do |report_code| source_row = rows_by_code[report_code.code] source_value = source_row && (source_row[:value] || source_row['value']) @@ -177,6 +178,24 @@ class ReportParser @report_codes ||= ReportCode.order(:code).select(:code, :name).to_a end + def report_codes_for_form(form_code, codes) + codes.select { |report_code| report_code_belongs_to_form?(report_code.code, form_code) } + end + + def report_code_belongs_to_form?(code, form_code) + normalized_code = normalize_code(code) + return false if normalized_code.blank? + + case form_code + when '1.1' then normalized_code.start_with?('1') + when '1.2' then normalized_code.start_with?('2') + when '1.3' then normalized_code.start_with?('3') + when '1.4' then normalized_code.start_with?('4') + else + true + end + end + def cleanup_duplicate_statements(year, keeper_id) FinancialStatement .joins(:yearly_file)