AURORA-1864: у группы альтернатив одна цель — проверка в загрузчике (#3)
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
parent
065bcba25a
commit
19bf045af2
@ -4,7 +4,7 @@
|
|||||||
|
|
||||||
- `statement_checks.yaml`: необязательный ключ `group` — группа альтернатив мягких соотношений одной цели. В колонке
|
- `statement_checks.yaml`: необязательный ключ `group` — группа альтернатив мягких соотношений одной цели. В колонке
|
||||||
сошлась хоть одна — нарушений группы нет; не сошлась ни одна — одно нарушение, ближайшая к цели. `group` у жёсткого
|
сошлась хоть одна — нарушений группы нет; не сошлась ни одна — одно нарушение, ближайшая к цели. `group` у жёсткого
|
||||||
соотношения — ошибка загрузки словаря. Подсветка, `needs_check` и подтверждение 2400 (Р-21) не менялись (AURORA-1864).
|
соотношения или разные цели в одной группе — ошибка загрузки словаря. Подсветка, `needs_check` и подтверждение 2400 (Р-21) не менялись (AURORA-1864).
|
||||||
- Соотношения 2400 ОФР — группа `net_profit`: полная форма «2400 = 2300 − 2410 + 2420» и «2400 = 2300 + 2410 + 2460»;
|
- Соотношения 2400 ОФР — группа `net_profit`: полная форма «2400 = 2300 − 2410 + 2420» и «2400 = 2300 + 2410 + 2460»;
|
||||||
в упрощённую добавлено «2400 = 2110 − 2120 − 2330 + 2340 − 2350 + 2410». Положительный 2410 (доход по налогу,
|
в упрощённую добавлено «2400 = 2110 − 2120 − 2330 + 2340 − 2350 + 2410». Положительный 2410 (доход по налогу,
|
||||||
ФСБУ 4/2023) больше не даёт ложного предупреждения.
|
ФСБУ 4/2023) больше не даёт ложного предупреждения.
|
||||||
|
|||||||
@ -301,6 +301,13 @@ def _load_checks(directory: Path) -> CheckRules:
|
|||||||
group=group,
|
group=group,
|
||||||
)
|
)
|
||||||
)
|
)
|
||||||
|
group_targets: dict[tuple[DocumentType, FormVariant, str], str] = {}
|
||||||
|
for i, rule in enumerate(relations):
|
||||||
|
if rule.group is None:
|
||||||
|
continue
|
||||||
|
known = group_targets.setdefault((rule.form, rule.variant, rule.group), rule.target)
|
||||||
|
if known != rule.target:
|
||||||
|
raise _fail(file, f"relations[{i}].group", f"у группы {rule.group!r} разные цели: {known} и {rule.target}")
|
||||||
return CheckRules(
|
return CheckRules(
|
||||||
tolerance=_number(file, "tolerance", _get(file, data, "tolerance")),
|
tolerance=_number(file, "tolerance", _get(file, data, "tolerance")),
|
||||||
rounding_tolerance_percent=_number(
|
rounding_tolerance_percent=_number(
|
||||||
|
|||||||
@ -86,6 +86,18 @@ def test_group_on_strict_relation_rejected(tmp_path: Path) -> None:
|
|||||||
load_rules(tmp_path)
|
load_rules(tmp_path)
|
||||||
|
|
||||||
|
|
||||||
|
def test_group_with_different_targets_rejected(tmp_path: Path) -> None:
|
||||||
|
for path in RULES_DIR.glob("*.yaml"):
|
||||||
|
(tmp_path / path.name).write_bytes(path.read_bytes())
|
||||||
|
target = tmp_path / "statement_checks.yaml"
|
||||||
|
text = target.read_text(encoding="utf-8")
|
||||||
|
soft = 'relation: "2500 = 2400 + 2510 + 2520 + 2530", strict: false'
|
||||||
|
assert soft in text
|
||||||
|
target.write_text(text.replace(soft, soft + ", group: net_profit"), encoding="utf-8")
|
||||||
|
with pytest.raises(RulesError, match="statement_checks.*group"):
|
||||||
|
load_rules(tmp_path)
|
||||||
|
|
||||||
|
|
||||||
def test_code_orders_with_repeats(rules: Rules) -> None:
|
def test_code_orders_with_repeats(rules: Rules) -> None:
|
||||||
fsbu = rules.code_orders.sequence(Edition.FSBU4, DocumentType.BALANCE, FormVariant.FULL)
|
fsbu = rules.code_orders.sequence(Edition.FSBU4, DocumentType.BALANCE, FormVariant.FULL)
|
||||||
assert fsbu.count("1220") == len(("1220", "1220")) and "1120" not in fsbu
|
assert fsbu.count("1220") == len(("1220", "1220")) and "1120" not in fsbu
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user