§6 шахматка: one_sided по суммам, подсветка, «все счета» без забалансовых; OQ-175, OQ-176; гайд фронта (#158, AURORA-1651)
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
parent
4f98730752
commit
8fc189d9a9
@ -594,7 +594,9 @@ closing_* = closing_* строки Qn
|
||||
## §6. Шахматка и результирующая таблица (DOC-221277)
|
||||
|
||||
Вход: версия + набор дебетовых счетов (`kind ∈ A, AP`) и кредитовых (`kind ∈ P, AP`); предустановки: «58.03 vs
|
||||
67.03 + 66.03», «60 + 62 + 76 vs 60 + 62 + 76», «все счета». Дополнительно пресетом может быть **правило ББ из §4**
|
||||
67.03 + 66.03», «60 + 62 + 76 vs 60 + 62 + 76», «все счета» — только балансовые счета, без забалансовых 001–012
|
||||
(`is_off_balance = true`; решение владельца 16.10.2026, AURORA-1651: 009 «Обеспечения выданные» давал ложное
|
||||
расхождение); при ручном выборе забалансовые счета допускаются. Дополнительно пресетом может быть **правило ББ из §4**
|
||||
(`statement_type = balance`): дебетовые и кредитовые счета берутся из сторон правила (с исключениями `is_excluded`),
|
||||
показатель — `measure` правила (у всех правил ББ seed v1 — `closing`); каскада §5 нет — это просмотр сумм по счетам правила, не сумма элиминации (решение владельца
|
||||
21.10.2026, arm-core #141). Правила ОФР пресетом не являются (ОФР в §4 открыт).
|
||||
@ -606,9 +608,14 @@ closing_* = closing_* строки Qn
|
||||
```
|
||||
amount_a(A,B) = Σ closing_debit строк A с counterparty_id = B по дебетовым счетам
|
||||
amount_b(A,B) = Σ closing_credit строк B с counterparty_id = A по кредитовым счетам
|
||||
variance = |amount_a − amount_b|; variance_pct = variance / min(amount_a, amount_b) * 100; > 5 % — подсветка
|
||||
variance = |amount_a − amount_b|; variance_pct = variance / min(amount_a, amount_b) * 100 (null при min = 0)
|
||||
one_sided = ровно одна из amount_a, amount_b равна 0 (знак ненулевой не важен)
|
||||
подсветка = variance_pct > 5 % ИЛИ one_sided
|
||||
ячейка: amount_a / amount_b / (variance)
|
||||
```
|
||||
Пара без встречной стороны (`one_sided`) — по суммам, а не по наличию строк ОСВ: строка с нулевым сальдо (одни обороты)
|
||||
стороной не считается; «0 против 0» не подсвечивается (AURORA-1651). Подсветка одинакова в API, в xlsx и на экране.
|
||||
Процент при отрицательной меньшей стороне — OQ-175; счёт `000` в «все счета» — OQ-176.
|
||||
Фильтры строк — как в §3 (COUNTERPARTY, BU/SUM, `account_id IS NOT NULL`).
|
||||
|
||||
Результирующая таблица «компания против группы» по статьям: Дебиторка (Дт 60.02, 60.22, 60.32, 62.01, 62.03, 62.21,
|
||||
|
||||
@ -180,3 +180,5 @@
|
||||
| OQ-172 | Безымянная аналитика первого уровня на счёте **63** (резервы по сомнительным долгам) в плоской форме без названия вида: на файлах контура таких строк нет; 51 строка — в fixtures, golden `osv-dkb/nm/2025-Q3/НМ_ОСВ_63_Контрагенты_…json` (имя файла «63_Контрагенты» — довод за включение 63); счёт 63 не входит в `counterparty_accounts` (§1.3), строки остаются `OTHER` без имени. Нужен ли 63 в списке (аналитика резерва — контрагенты-должники) | tabular-parser #59, приёмка Task 6 (19.10.2026) | §1.3, сопоставление контрагентов | открыт; допущение принято: 63 в список не входит, строки `OTHER` |
|
||||
| OQ-173 | Пересечение правил в сумме элиминации: счета сторон правил §4 пересекаются — дебет № 5–8 (76 у № 5; 60/62/76 у № 6–8), кредит: 67.03 (№ 3 и маска 67 у № 7), 66.03 (№ 4 и маска 66 у № 8), 66.04/67.04 (№ 5 и № 7/8). Строка такого счёта входит в Σ стороны каждого правила, и сумма min(ΣA, ΣB) по правилам может превысить Σ самой стороны — двойная элиминация. Считать ΣA правила только по строкам, которые упаковка (§5 п. 2) отнесла к этому правилу? Или распределять сторону по правилам в фиксированном порядке? | решение по OQ-07 (docs #136, 19.10.2026), описание AURORA-1536 | §5 п. 1, AURORA-1536, КФО (§8 `eliminated_auto`) | **закрыт решением владельца 19.10.2026 (docs #136):** каскад по остатку — правила пары (A, B) считаются по порядку `rule_no` (в Прил. 3 он уже от частного к общему: № 3/4 раньше № 7/8, № 5 раньше № 6, № 6 → 7 → 8), каждое берёт min из остатка сторон после предыдущих, как в правиле № 1 Прил. 3 («сначала из 1450 до обнуления…»); упаковка — в том же порядке, строка сопоставляется одним правилом; ничьей между правилами нет. Поле порядка не нужно. Алгоритм — `05-domain-rules.md` §5 |
|
||||
| OQ-174 | Какая версия правил элиминации (§4) применяется к версии консолидации, если `consolidation_version.elimination_rules_version` не задан: открытые на сегодня, действующие на отчётную дату консолидации или на дату её составления; когда фиксировать номер версии | ревью arm-core PR #141 (21.10.2026) | §4, §5, AURORA-1536 | **закрыт решением владельца 21.10.2026 (docs #145):** версия правил, действующая на дату составления консолидации (создания версии), а не на отчётный период; фиксируется в `elimination_rules_version` при создании версии или первом расчёте, не в GET-запросе; реализация — AURORA-1536; до неё расчёты берут открытые правила (`valid_to IS NULL`, сейчас одна версия v1) |
|
||||
| OQ-175 | Процент расхождения шахматки при отрицательной меньшей стороне: `variance_pct = variance / min(amount_a, amount_b) * 100` при отрицательном сальдо (возможно по §1) уходит в минус — пара (100, −5) даёт −2100 %, порог > 5 % не срабатывает, пара не подсвечивается. Считать от `\|min\|`, от меньшей по модулю стороны или подсвечивать пары с разными знаками всегда? | ревью arm-core #165 (AURORA-1651), 22.10.2026 | §6, шахматка, xlsx | открыт; до решения — как в коде (min со знаком) |
|
||||
| OQ-176 | Счёт `000` «Вспомогательный» (технический счёт 1С для ввода остатков, `kind = AP`, `is_off_balance = false`) входит в шахматку «все счета». Исключать его вместе с забалансовыми? | ревью arm-core #165 (AURORA-1651), 22.10.2026 | §6, режим «все счета» | открыт; до решения — входит (решение владельца 22.10.2026: не трогать) |
|
||||
|
||||
@ -577,7 +577,9 @@ line_code_text}` — строки `unreadable` / `missing`, у которых в
|
||||
`IntercompanyMatrixOut` — `{companies[] {id, name}, cells[] {company_a_id, company_b_id, amount_a, amount_b, variance_amount,
|
||||
variance_percent?, exceeds_threshold, one_sided, skipped_osv_entry_count, osv_entry_ids_debit[], osv_entry_ids_credit[]}}`.
|
||||
Порядок компаний задаёт обе оси; диагонали и пар без строк ОСВ в `cells` нет — показывать «—». Суммы — строки в рублях;
|
||||
`variance_amount` — модуль разности, подсветка — по `exceeds_threshold` (> 5 % к меньшей сумме). `skipped_osv_entry_count` —
|
||||
`variance_amount` — модуль разности. Подсветка пары — `exceeds_threshold` (> 5 % к меньшей сумме) **или** `one_sided`
|
||||
(ровно одна сумма нулевая — пара без встречной стороны; тогда `variance_percent = null`), так же красит xlsx. Режим «все
|
||||
счета» — без забалансовых 001–012. `skipped_osv_entry_count` —
|
||||
строки ОСВ пары без сопоставленного счёта, в суммы они не вошли. Выгрузки пишут в журнал `EXPORT`.
|
||||
|
||||
### 5.8 Схемы ответов (кратко)
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user