AURORA-1864: группа альтернатив мягких соотношений, 0.1.4 #4
@ -4,7 +4,7 @@
|
||||
|
||||
- `statement_checks.yaml`: необязательный ключ `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 = 2110 − 2120 − 2330 + 2340 − 2350 + 2410». Положительный 2410 (доход по налогу,
|
||||
ФСБУ 4/2023) больше не даёт ложного предупреждения.
|
||||
|
||||
@ -301,6 +301,13 @@ def _load_checks(directory: Path) -> CheckRules:
|
||||
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(
|
||||
tolerance=_number(file, "tolerance", _get(file, data, "tolerance")),
|
||||
rounding_tolerance_percent=_number(
|
||||
|
||||
@ -86,6 +86,18 @@ def test_group_on_strict_relation_rejected(tmp_path: Path) -> None:
|
||||
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:
|
||||
fsbu = rules.code_orders.sequence(Edition.FSBU4, DocumentType.BALANCE, FormVariant.FULL)
|
||||
assert fsbu.count("1220") == len(("1220", "1220")) and "1120" not in fsbu
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user