ОСВ: «Кол-во, <единица>» и «Кол. доп.» — строки количества (#66, AURORA-1709)

Словарь data_types.yaml: row допускает единицу измерения после запятой
(«Кол-во, га» в ОСВ 43.1), indicator_column — «Кол. доп.» в колонке
«Показатели» (сч. 11). Код не меняется.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
Andrey Epifancev 2026-10-20 13:06:35 +04:00
parent 73f9e9c2d8
commit 2a6a49811e
3 changed files with 25 additions and 3 deletions

View File

@ -14,10 +14,10 @@ standalone_header:
# Строки под контрагентом: «Вал.» и «Кол.» помечают строку как валютную / количественную. «Вал» без точки — не метка:
# так называется материал (счёт 10); валютная строка — «Вал.» с точкой или код валюты из `currency_codes` (AURORA-1663).
# «Кол-во»: нормализация текста превращает дефис в пробел
# «Кол-во»: нормализация текста превращает дефис в пробел; после запятой — единица измерения («Кол-во, га», AURORA-1709)
row:
- ['^вал\.$', CURRENCY]
- ['^кол(ичество|\s?во)?\.?$', QUANTITY]
- ['^кол(ичество|\s?во)?\.?(\s*,\s*[^,]+)?$', QUANTITY]
# строка суммы в валюте под «Валюта <код>» (AURORA-1661); сама «Валюта USD» — обычная строка в рублях
- ['^в\s+валюте$', CURRENCY]
@ -26,7 +26,8 @@ row:
indicator_column:
- ['^бу$', BU]
- ['^ну$', NU]
- ['^кол\.?$', QUANTITY]
# «Кол. доп.» — дополнительное количество (сч. 11, животные на выращивании; AURORA-1709)
- ['^кол(\.?|(\.\s*|\s+)доп\.?)$', QUANTITY]
- ['^вал\.?$', CURRENCY]
# Метки-показатели без значения data_type в контракте (постоянные и временные разницы): data_type = null.

View File

@ -420,6 +420,13 @@ def test_currency_and_quantity_rows(rules: Rules) -> None:
("Количество", "QUANTITY"),
("Кол-во", "QUANTITY"), # AURORA-1663, O-5
("кол-во.", "QUANTITY"),
# единица измерения после запятой (AURORA-1709, ОСВ 43.1: строка под позицией)
("Кол-во, га", "QUANTITY"),
("Кол-во, кг", "QUANTITY"),
("Количество, шт.", "QUANTITY"),
("Колхоз, ОАО", None),
("Колос", None),
("Кол-во, га, кг", None),
("Вал.", "CURRENCY"),
("USD", "CURRENCY"),
("Вал", None), # AURORA-1663, O-6: «Вал» без точки — наименование материала (ОСВ 10.1), не метка валюты

View File

@ -53,6 +53,20 @@ def test_untyped_label_has_no_data_type_and_no_warning(rules: Rules) -> None:
assert (result.indicator, result.data_type, result.text, result.warning) == (True, None, "ПР", None)
@pytest.mark.parametrize("label", ["Кол.", "Кол", "Кол. доп.", "Кол.доп."])
def test_quantity_labels_including_additional_quantity(rules: Rules, label: str) -> None:
"""«Кол. доп.» — дополнительное количество (сч. 11, животные на выращивании; AURORA-1709)."""
result, _ = _read(label, rules)
assert (result.indicator, result.data_type, result.text, result.warning) == (True, "QUANTITY", label, None)
@pytest.mark.parametrize("label", ["Колдоп", "Кол. доп. ед.", "Колос"])
def test_quantity_label_needs_exact_form(rules: Rules, label: str) -> None:
result, _ = _read(label, rules)
assert (result.indicator, result.data_type) == (True, None)
assert result.warning is not None
def test_unknown_label_warns_with_row_number(rules: Rules) -> None:
result, row = _read("Ед.", rules)
assert (result.indicator, result.data_type) == (True, None)