diff --git a/api/src/parser/header.py b/api/src/parser/header.py index 58ca007..4512e3a 100644 --- a/api/src/parser/header.py +++ b/api/src/parser/header.py @@ -581,12 +581,17 @@ def _variant1_groups(sheet: Sheet, header: TableHeader, rules: Rules) -> GroupSc def _kind_row_groups(sheet: Sheet, header: TableHeader, rules: Rules) -> list[OsvGroup]: - """Виды субконто из строки шапки между названием и периодом: только узнанные явной записью словаря групп.""" + """Виды субконто из строки шапки между названием и периодом: только узнанные явной записью словаря групп, не + ACCOUNT; метки шапки (в том числе валюта) видом субконто не считаются.""" + cells = _head_cells(sheet, header) + currency = _currency_cells(cells, rules) groups: list[OsvGroup] = [] - for cell in _kind_row_cells(_head_cells(sheet, header), rules): + for cell in _kind_row_cells(cells, rules): + if cell in currency or _is_structural_marker(cell, rules): + continue for item in (part.strip() for part in cell.text.split(_LIST_SEPARATOR)): known = rules.groups.known(item) if item else None - if known is not None: + if known is not None and known != "ACCOUNT": groups.append(_group(known, item)) return groups diff --git a/api/tests/unit/parser/test_header.py b/api/tests/unit/parser/test_header.py index c2776ce..e0079fc 100644 --- a/api/tests/unit/parser/test_header.py +++ b/api/tests/unit/parser/test_header.py @@ -643,3 +643,11 @@ def test_unknown_kind_row_is_not_added_to_schema(rules: Rules) -> None: def test_organizations_kind_row_is_counterparty(rules: Rules) -> None: assert _flat_schema(rules, "Организации") == [("ACCOUNT", "Субконто"), ("COUNTERPARTY", "Организации")] + + +def test_currency_row_between_title_and_period_is_not_added_to_schema(rules: Rules) -> None: + assert _flat_schema(rules, "Валюта БУ, НУ: RUB") == [("ACCOUNT", "Субконто")] + + +def test_subkonto_cell_between_title_and_period_does_not_add_second_account(rules: Rules) -> None: + assert _flat_schema(rules, "Субконто") == [("ACCOUNT", "Субконто")]