From 6fae7b50ebeed0f8b486fc58daae18a2624eff3d Mon Sep 17 00:00:00 2001 From: Dmitry Date: Sun, 19 Apr 2026 13:16:50 +0000 Subject: [PATCH] =?UTF-8?q?SU2-32=20|=20=D1=84=D0=B8=D0=BA=D1=81=20=D0=B4?= =?UTF-8?q?=D0=BB=D1=8F=20=D0=B4=D1=83=D0=B1=D0=BB=D0=B5=D0=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/services/report_parser.rb | 21 ++++++++++++++++++++- 1 file changed, 20 insertions(+), 1 deletion(-) 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)