diff --git a/api/rules/statement_headers.yaml b/api/rules/statement_headers.yaml index a462d0f..801e0a9 100644 --- a/api/rules/statement_headers.yaml +++ b/api/rules/statement_headers.yaml @@ -23,7 +23,7 @@ okud: INCOME: - '\b0710002\b' DISCLOSURE: - - '\b0710(?!001|002)' + - '\b07100(0(3|4|5|6|7|8|9)|(1|2|3|4|5|6|7|8|9)\d)\b' # Маркер страницы-продолжения в 1С-выгрузке: «Форма 0710001 с.2» continuation: diff --git a/api/tests/unit/parser/test_statement_rules.py b/api/tests/unit/parser/test_statement_rules.py index 0c520da..91b6f61 100644 --- a/api/tests/unit/parser/test_statement_rules.py +++ b/api/tests/unit/parser/test_statement_rules.py @@ -31,6 +31,23 @@ def test_form_type_by_title_and_okud(rules: Rules) -> None: assert headers.okud_type("0710001") == "BALANCE" +def test_okud_type_boundaries(rules: Rules) -> None: + """Граничные случаи для кодов OKUD: диапазон 0710003-0710099 для DISCLOSURE.""" + headers = rules.statement_headers + # Нижняя граница диапазона DISCLOSURE + assert headers.okud_type("0710003") == "DISCLOSURE" + # Верхняя граница диапазона DISCLOSURE + assert headers.okud_type("0710099") == "DISCLOSURE" + # Середина диапазона + assert headers.okud_type("0710010") == "DISCLOSURE" + assert headers.okud_type("0710050") == "DISCLOSURE" + # За границами диапазона + assert headers.okud_type("0710000") is None # до диапазона + assert headers.okud_type("07101") is None # неполный код + assert headers.okud_type("07100030") is None # слишком длинный + assert headers.okud_type("0710100") is None # за диапазоном + + def test_continuation_marker_and_captions(rules: Rules) -> None: headers = rules.statement_headers assert headers.is_continuation("Форма 0710001 с.2")