From adb1cf41aca7eb295ff52c579d9f6f09e4e4c192 Mon Sep 17 00:00:00 2001 From: Andrey Epifancev Date: Fri, 6 Nov 2026 20:30:50 +0400 Subject: [PATCH] =?UTF-8?q?=D0=9A=D0=A4=D0=9E:=20=D0=BA=D0=BE=D0=BD=D1=82?= =?UTF-8?q?=D1=80=D0=B0=D0=BA=D1=82=20API=20(dev/api-contract-kfo.*),=20?= =?UTF-8?q?=D0=B0=D0=B3=D1=80=D0=B5=D0=B3=D0=B0=D1=82=20min=5For=5Ffull=20?= =?UTF-8?q?=D0=B2=20=D0=BA=D0=BE=D0=BD=D1=82=D1=80=D0=B0=D0=BA=D1=82=D0=B5?= =?UTF-8?q?=20=D0=BA=D0=BE=D1=80=D1=80=D0=B5=D0=BA=D1=82=D0=B8=D1=80=D0=BE?= =?UTF-8?q?=D0=B2=D0=BE=D0=BA=20(#206)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-Authored-By: Claude Opus 5.5 --- dev/api-contract-corrections.md | 11 +- dev/api-contract-corrections.openapi.yaml | 2 +- dev/api-contract-kfo.md | 177 ++ dev/api-contract-kfo.openapi.yaml | 2529 +++++++++++++++++++++ dev/frontend-api-guide.md | 7 + 5 files changed, 2722 insertions(+), 4 deletions(-) create mode 100644 dev/api-contract-kfo.md create mode 100644 dev/api-contract-kfo.openapi.yaml diff --git a/dev/api-contract-corrections.md b/dev/api-contract-corrections.md index 8a346f5..8223d91 100644 --- a/dev/api-contract-corrections.md +++ b/dev/api-contract-corrections.md @@ -174,9 +174,9 @@ side_1 AggregateSideOut дебетовая сторона ( side_2 AggregateSideOut кредитовая сторона (компания 2) deviation_amount money deviation_percent percent | null к меньшей стороне; null — меньшая сторона ≤ 0 -exceeds_threshold bool deviation_percent ≥ 5, или одна сторона пуста при ненулевой другой +exceeds_threshold bool deviation_percent ≥ 5, или одна сторона пуста при ненулевой другой; у min_or_full — всегда false status "AUTO" | "DISCREPANCY" | "ONE_SIDED" | "MANUAL" как EliminationTotalItemOut -eliminated_amount money автоматическая сумма элиминации агрегата (§5), справочно +eliminated_amount money автосумма агрегата по режиму правила (§8 «КФО» п. 4) — её исключает КФО, если нет корректировки composition_changed bool состав или суммы изменились после применённой корректировки (ответ 5; ответ п. 10 — подсвечивать) correction CorrectionOut | null действующая корректировка (APPLIED; DRAFT — зарезервирован) ``` @@ -257,7 +257,12 @@ rule_id? (uuid, для ASSIGN)}`. агрегаты и нераспределённые строки (с `line_code` и `candidate_rule_ids`). Нынешняя упаковка считает каждое правило отдельно (TODO в `intercompany_matrix.build_pairs`) — для таблицы корректировок строка должна попадать не более чем в одно правило. -- Правила ББ 1 и 2 (DOC-274230) имеют свой расчёт и не наследуют min; что идёт в `eliminated_amount` по ним — по DOC-274230. +- Правила ББ 1 и 2 (DOC-274230) имеют свой расчёт и не наследуют min. **Правило 2** — режим `min_or_full` (DBML v5.26, + `05-domain-rules.md` §8 «КФО» п. 4; seed и `services/correction_source.py` правятся в AURORA-1546): обе стороны > 0 → + `eliminated_amount = min`, `status = AUTO`; сторона 2 пуста → `eliminated_amount = amount_1`, `status = ONE_SIDED`; + сторона 1 пуста → 0, `ONE_SIDED`; `exceeds_threshold = false` всегда (порога 5 % у правила нет). **Правило 1** остаётся + `manual` (`status = MANUAL`, 0) до переработки seed (OQ-193). Автосумма — **та же функция, по которой считает КФО**: + что аналитик видит в `eliminated_amount`, то и исключает КФО, если корректировки нет (корректировка её заменяет). - ОФР: тот же ответ с `statement_type = income` **(ждёт ответа в AURORA-1396)**; до него сервер может отдавать пустые `aggregates` и `unallocated` для `income`. diff --git a/dev/api-contract-corrections.openapi.yaml b/dev/api-contract-corrections.openapi.yaml index 31f890d..d826fb7 100644 --- a/dev/api-contract-corrections.openapi.yaml +++ b/dev/api-contract-corrections.openapi.yaml @@ -284,7 +284,7 @@ components: type: boolean description: deviation_percent ≥ 5, или одна сторона пуста при ненулевой другой status: { type: string, enum: [AUTO, DISCREPANCY, ONE_SIDED, MANUAL] } - eliminated_amount: { $ref: '#/components/schemas/Money' } + eliminated_amount: { $ref: '#/components/schemas/Money', description: 'Автосумма агрегата по elimination_mode (min / min_or_full / manual; 05-domain-rules.md §8 «КФО» п. 4); её исключает КФО, если нет корректировки' } composition_changed: { type: boolean, description: Состав или суммы изменились после применённой корректировки } correction: oneOf: diff --git a/dev/api-contract-kfo.md b/dev/api-contract-kfo.md new file mode 100644 index 0000000..d7e0c01 --- /dev/null +++ b/dev/api-contract-kfo.md @@ -0,0 +1,177 @@ +# Контракт API результата КФО (AURORA-1546 / AURORA-1547) + +Контракт вкладки «КФО» отчёта версии консолидации — **до реализации** (docs #206, OpenSpec change +`kfo-calculation-contract`). Машиночитаемая копия — `dev/api-contract-kfo.openapi.yaml` с тремя полными примерами +ответа (их можно брать как фейк для экрана). Когда расчёт появится в `arm-core`, копия выгружается из `app.openapi()` и +сверяется тестом, как у гудвилла; если файлы разойдутся с кодом — прав код, оба файла правятся вслед за ним. + +Источники, в порядке приоритета: +1. `05-domain-rules.md` §8 «КФО» — алгоритм (п. 1–12) и сквозной пример. Здесь формулы не повторяются — только + ссылки «п. N». +2. DBML v5.26: `kfo_result`, `kfo_result_line`, `kfo_result_line_company`, `consolidation_version`. +3. DOC-274647 «Экран: КФО» (черновик) и макет `[31-04]`, `[31-04-01]` — состав колонок, состояния экрана. + +## 1. Общее + +Как в `dev/api-contract-corrections.md` §1 и `dev/api-contract-goodwill.md` §1: +- префикс `/api/v1`, `Authorization: Bearer `; +- **чтение — право `KFO_VIEW`** (не `CONSOLIDATION_VIEW`, как у корректировок и гудвилла: право в seed есть и означает + ровно это), **правки — `CONSOLIDATION_EDIT`** (`KFO_EDIT` в seed нет); +- версия вне видимости — 404 `NOT_FOUND`, как несуществующая; +- доменные ошибки — `{"detail": {"code", "message", ...}}`, 422 валидации тела — массив pydantic; +- **деньги — строки с двумя знаками в тыс. руб.** (`"588500.00"`), поле `units = "thousand_rub"`. Это отличие от + корректировок и гудвилла, где рубли: результат КФО по определению в тысячах (округление — часть расчёта, §8 «КФО» + п. 6), рубли из него не восстановить. Переключатели «Единицы» (тыс. / млн) и «Знаков после запятой» — только показ; +- проценты — строки с двумя знаками (`"70.42"`), `null` — не определён (нулевая база); +- порядок проверок правок: право (403) → видимость (404) → версия редактируема (409 `VERSION_NOT_EDITABLE`, + `LOCK_REQUIRED`, `LOCKED_BY_OTHER`) → операция. Фронт берёт `editable` / `read_only_reason` из ответа и правило сам не + повторяет; у пользователя без `CONSOLIDATION_EDIT` — `read_only_reason = "VERSION_NOT_EDITABLE"`. + +**Фронт ничего не считает.** Доли, итоги, «в т. ч. взаимные», расхождения, базы и пределы порогов, признак превышения +и подсветка строки базы приходят с сервера. + +## 2. Понятия + +- **Строки** — бланк ББ и ОФР редакции на отчётную дату версии (66н до 31.12.2024, ФСБУ 4 позже) плюс служебная + `GOODWILL` в разделе I сразу после 1170 (§8 «КФО» п. 1, 8). Приходят все строки бланка в его порядке (`ordinal`), + включая нулевые; `is_total` — итоговая строка. +- **По компании** (`companies[]` строки, порядок — как `KfoResultOut.companies`): «По данным клиента» + (`client_amount`), «В том числе взаимные обязательства / обороты» (`vgo_amount`), «Очищенные показатели» + (`cleaned_amount = client_amount − vgo_amount`), «Доля в показателе по группе, %» (`share_percent`). Строки расходов + (2120, 2210, 2220, 2330, 2350) — со знаком минус, и их `vgo_amount` тоже (п. 2, 6). У `GOODWILL` разреза нет. +- **По строке:** `sum_amount` (Σ клиента), `vgo_amount` (Σ взаимных = `eliminated_auto + eliminated_manual`), + `goodwill_adjust` (у `GOODWILL`, 1100, 1600), **`bank_amount`** — «КФО, подготовленная банком» + (`sum_amount − vgo_amount + goodwill_adjust`), `deviation_amount` — «Расхождения» (у итогов `null`), `comment`. +- **Сводка расхождений** (`summary.balance`, `summary.income`) — две плашки экрана: сумма расхождений, база (`base_kind`: + ЧА / ВБ / прибыль от продаж / выручка), предел и процент от базы, `exceeded` — красная плашка (п. 10). При превышении + у строки базы `is_threshold_base = true` — подсветка. +- **Обоснование** (`threshold_justification`) — принятие риска при превышении; `justification_required` — превышение + есть хотя бы по одному отчёту. Обязательность перед отправкой на верификацию проверяет переход статуса (AURORA-2002), + не этот API. +- **Реквизиты формы** (`requisites`, п. 11): ГК, ГСК, отчётная дата, номер и статус версии, сценарий, подход (пакет + документов), причины отклонений от Методики (`methodology_deviations` — редактируется здесь), решение УОБ (только + чтение), корректировки — число агрегатов с применённой корректировкой и Σ их исключений. +- **Предупреждения** (`warnings[]`, п. 12) — не блокируют: `FORM_MISSING`, `FORM_AMBIGUOUS`, `FORM_UNITS_UNKNOWN`, + `LINE_OUTSIDE_BLANK`, `UNALLOCATED_ROWS` (`count` — строк), `INCOME_RULES_MISSING`, `GOODWILL_NOT_APPLIED`, + `GOODWILL_ROW_REASSIGNED`. Тексты `message` — с сервера, фронт показывает как есть. + +## 3. Эндпоинты + +| Метод и путь | Право | Запрос | Ответ | Ошибки | +|---|---|---|---|---| +| `GET /consolidations/versions/{version_id}/kfo` | `KFO_VIEW` | — | 200 `KfoResultOut` | 404 `NOT_FOUND` | +| `PUT /consolidations/versions/{version_id}/kfo/annotations` | `CONSOLIDATION_EDIT` | `KfoAnnotationsIn` | 200 `KfoResultOut` | 404 `NOT_FOUND`, 409 правок версии, 422 `UNKNOWN_LINE`, 422 валидации тела | + +Выгрузки («Таблица», «Форма 2.03.01.01с») — AURORA-1565, отдельным контрактом. + +### 3.1 `GET …/kfo` — результат + +Весь результат одним ответом, без страниц. **Пока версия не заморожена, ответ — по текущим данным версии**: если +что-то изменилось после `computed_at` (документы, сопоставление, разнесение, корректировки, гудвилл), сервер +пересчитывает и сохраняет результат до ответа (как он это обнаруживает — AURORA-1417). Кнопки «Рассчитать» нет. У +замороженной версии (`is_frozen = true`, ставится при «Верифицирован») — сохранённый результат без пересчёта, +`editable = false`. + +Версия без компаний или без форм — не ошибка: строки бланка с нулями и `warnings` (`FORM_MISSING` по каждой компании +и отчёту). + +### 3.2 `PUT …/kfo/annotations` — ручные поля + +Тело: + +```json +{ + "comments": [{"statement_type": "balance", "line_code": "1520", "comment": "Акт сверки на 01.10 не получен"}], + "threshold_justification": "Расхождение по 1520 — сверка в работе; риск принят", + "methodology_deviations": null +} +``` + +- Поле, которого нет в теле, не меняется; `null` — очищает. Пустой объект `{}` — допустим, ничего не пишет. +- `comments[]` — только изменённые строки; `comment` ≤ 2000 символов, `null` или пустой после обрезки — очистить. + Строки нет в бланке версии (или `GOODWILL` в `income`) — 422 `UNKNOWN_LINE` с `detail.statement_type`, + `detail.line_code`; ничего не сохраняется. +- `threshold_justification`, `methodology_deviations` — ≤ 4000 символов; длиннее — 422 массивом pydantic. +- Обоснование можно сохранить и без превышения — сервер его не стирает; `justification_required` от этого не меняется. +- Всё одной транзакцией; комментарии и обоснование переживают пересчёт (по `statement_type`, `line_code`). +- Аудит — одно событие `KFO_EDIT` на запрос (`object_type = kfo_result`, раздел `KFO`), `before` / `after` — только + изменённые поля. Запрос без изменений аудит не пишет. + +Ответ — `KfoResultOut` целиком (с пересчётом, если он нужен). + +## 4. Схемы + +Полностью — в OpenAPI. Кратко: + +``` +KfoResultOut + version_id uuid; computed_at date-time; is_frozen bool; editable bool; read_only_reason enum|null + units "thousand_rub" + companies[] {legal_entity_id, name, inn} — порядок колонок (по имени) + requisites KfoRequisitesOut + summary {balance: KfoThresholdOut, income: KfoThresholdOut} + justification_required bool; threshold_justification string|null + goodwill {enabled bool, total money} + balance, income {lines: KfoLineOut[]} + warnings[] KfoWarningOut {code, message, legal_entity_id?, statement_type?, count?} + +KfoLineOut + line_code, line_name, ordinal, is_total, is_threshold_base + companies[] {legal_entity_id, client_amount, vgo_amount, cleaned_amount, share_percent|null} (у GOODWILL — []) + sum_amount, vgo_amount, eliminated_auto, eliminated_manual, goodwill_adjust, bank_amount money + deviation_amount money|null (у итогов null) + comment string|null + +KfoThresholdOut + deviation_total money; base_kind NET_ASSETS|BALANCE_TOTAL|SALES_PROFIT|REVENUE; base_amount money + limit_percent "10.00"|"1.00"; limit_amount money; deviation_percent pct|null; exceeded bool + +KfoRequisitesOut + company_group_name, related_group_name|null, reporting_date, version_no, version_status, scenario, approach + methodology_deviations|null, uob_decision_no|null, uob_decision_date|null + corrections_balance, corrections_income {count int, amount money} + +KfoAnnotationsIn {comments?: [{statement_type, line_code, comment|null}], threshold_justification?, methodology_deviations?} +``` + +## 5. Состояния экрана (DOC-274647) → поля ответа + +| Состояние | Как видно из ответа | +|---|---| +| Нет форм у части компаний | `warnings[].code = FORM_MISSING` с `legal_entity_id`, `statement_type`; у компании нули | +| ОФР не исключается автоматически | `INCOME_RULES_MISSING` (до AURORA-1999); взаимные обороты — только корректировками | +| Есть нераспределённые строки | `UNALLOCATED_ROWS`, `count` | +| Превышение порога | `summary.*.exceeded = true`, `is_threshold_base` у строки базы, `justification_required = true` | +| Гудвилл учтён | `goodwill.enabled = true`, `goodwill.total`, строка `GOODWILL` с `bank_amount` | +| Только чтение | `editable = false`, `read_only_reason`; при «Верифицирован» ещё `is_frozen = true` | + +## 6. Примеры + +Три полных ответа — в OpenAPI (`examples` у `GET …/kfo`), на числах сквозного примера §8 «КФО» (три компании, бланк +сокращён до строк примера; настоящий ответ содержит все строки бланка): +- `goodwill_exceeded` — гудвилл включён, превышение порога ББ (42 900 > 37 100), `justification_required = true`; +- `goodwill_disabled` — та же версия без учёта гудвилла: строка `GOODWILL` = 0, 1600 = 580 500; +- `frozen` — «Верифицирован»: `is_frozen`, `editable = false`, обоснование, комментарий 1520, реквизиты УОБ. + +Фрагмент `goodwill_exceeded` — строка 1230: + +```json +{ + "line_code": "1230", "line_name": "Дебиторская задолженность", "ordinal": 40, + "is_total": false, "is_threshold_base": false, + "companies": [ + {"legal_entity_id": "1111…", "client_amount": "520000.00", "vgo_amount": "120000.00", "cleaned_amount": "400000.00", "share_percent": "70.42"}, + {"legal_entity_id": "2222…", "client_amount": "130000.00", "vgo_amount": "10000.00", "cleaned_amount": "120000.00", "share_percent": "21.13"}, + {"legal_entity_id": "3333…", "client_amount": "48000.00", "vgo_amount": "0.00", "cleaned_amount": "48000.00", "share_percent": "8.45"} + ], + "sum_amount": "698000.00", "vgo_amount": "130000.00", "eliminated_auto": "100000.00", "eliminated_manual": "30000.00", + "goodwill_adjust": "0.00", "bank_amount": "568000.00", "deviation_amount": "2900.00", "comment": null +} +``` + +## 7. Открытые вопросы + +Варианты, принятые на старте, могут измениться по ответу заказчика — контракт меняется вместе с §8: OQ-180 (строки вне +бланка), OQ-181 (колонки), OQ-182 (значение без формы), OQ-183 (итоговая строка), OQ-184 (округление), OQ-185 (место +гудвилла), OQ-186 (объём расхождений), OQ-187 (ЧА), OQ-188 (нулевая база), OQ-189 (действие при превышении), +OQ-190/191 (подход по Методике, согласование клиентом — полей нет), OQ-192 (пересчёт). diff --git a/dev/api-contract-kfo.openapi.yaml b/dev/api-contract-kfo.openapi.yaml new file mode 100644 index 0000000..dc893d9 --- /dev/null +++ b/dev/api-contract-kfo.openapi.yaml @@ -0,0 +1,2529 @@ +# Сгенерировано из сквозного примера §8 «КФО» (docs #206); правится вместе с dev/api-contract-kfo.md. +openapi: 3.1.0 +info: + title: АРМ КА — результат КФО (AURORA-1546/1547) + version: '0.1' + description: 'Контракт до реализации (docs #206). Правила — context/05-domain-rules.md §8 «КФО»; текст — dev/api-contract-kfo.md. + Деньги — строки с двумя знаками в тыс. руб. (units).' +paths: + /api/v1/consolidations/versions/{version_id}/kfo: + get: + tags: + - consolidations + summary: Результат КФО версии + description: 'Право KFO_VIEW. Пока версия не заморожена — результат по текущим данным: устаревший пересчитывается и + сохраняется до ответа. Замороженный — только чтение сохранённого.' + operationId: kfo_get + security: + - bearerAuth: [] + parameters: &id001 + - name: version_id + in: path + required: true + schema: + type: string + format: uuid + responses: + '200': + description: Результат КФО + content: + application/json: + schema: + $ref: '#/components/schemas/KfoResultOut' + examples: + goodwill_exceeded: + summary: Гудвилл включён, превышение порога ББ (сквозной пример §8) + value: + version_id: 99999999-9999-4999-8999-999999999999 + computed_at: '2026-11-10T09:15:00Z' + is_frozen: false + editable: true + read_only_reason: null + units: thousand_rub + companies: + - legal_entity_id: 11111111-1111-4111-8111-111111111111 + name: ООО «Альфа» + inn: '7701000001' + - legal_entity_id: 22222222-2222-4222-8222-222222222222 + name: ООО «Бета» + inn: '7701000002' + - legal_entity_id: 33333333-3333-4333-8333-333333333333 + name: ООО «Гамма» + inn: '7701000003' + requisites: + company_group_name: ГК «Альфа» + related_group_name: ГСК «Альфа» + reporting_date: '2025-10-01' + version_no: 1 + version_status: IN_PROGRESS + scenario: CREATE + approach: BASIC + methodology_deviations: null + uob_decision_no: null + uob_decision_date: null + corrections_balance: + count: 2 + amount: '65000.00' + corrections_income: + count: 0 + amount: '0.00' + summary: + balance: + deviation_total: '42900.00' + base_kind: NET_ASSETS + base_amount: '371000.00' + limit_percent: '10.00' + limit_amount: '37100.00' + deviation_percent: '11.56' + exceeded: true + income: + deviation_total: '0.00' + base_kind: SALES_PROFIT + base_amount: '65000.00' + limit_percent: '10.00' + limit_amount: '6500.00' + deviation_percent: '0.00' + exceeded: false + justification_required: true + threshold_justification: null + goodwill: + enabled: true + total: '18000.00' + balance: + lines: + - line_code: '1170' + line_name: Финансовые вложения + ordinal: 10 + is_total: false + is_threshold_base: false + companies: + - legal_entity_id: 11111111-1111-4111-8111-111111111111 + client_amount: '70000.00' + vgo_amount: '67500.00' + cleaned_amount: '2500.00' + share_percent: '100.00' + - legal_entity_id: 22222222-2222-4222-8222-222222222222 + client_amount: '0.00' + vgo_amount: '0.00' + cleaned_amount: '0.00' + share_percent: '0.00' + - legal_entity_id: 33333333-3333-4333-8333-333333333333 + client_amount: '0.00' + vgo_amount: '0.00' + cleaned_amount: '0.00' + share_percent: '0.00' + sum_amount: '70000.00' + vgo_amount: '67500.00' + eliminated_auto: '65000.00' + eliminated_manual: '2500.00' + goodwill_adjust: '0.00' + bank_amount: '2500.00' + deviation_amount: '0.00' + comment: null + - line_code: GOODWILL + line_name: Гудвилл + ordinal: 20 + is_total: false + is_threshold_base: false + companies: [] + sum_amount: '0.00' + vgo_amount: '0.00' + eliminated_auto: '0.00' + eliminated_manual: '0.00' + goodwill_adjust: '18000.00' + bank_amount: '18000.00' + deviation_amount: '0.00' + comment: null + - line_code: '1100' + line_name: Итого по разделу I + ordinal: 30 + is_total: true + is_threshold_base: false + companies: + - legal_entity_id: 11111111-1111-4111-8111-111111111111 + client_amount: '70000.00' + vgo_amount: '67500.00' + cleaned_amount: '2500.00' + share_percent: '12.20' + - legal_entity_id: 22222222-2222-4222-8222-222222222222 + client_amount: '0.00' + vgo_amount: '0.00' + cleaned_amount: '0.00' + share_percent: '0.00' + - legal_entity_id: 33333333-3333-4333-8333-333333333333 + client_amount: '0.00' + vgo_amount: '0.00' + cleaned_amount: '0.00' + share_percent: '0.00' + sum_amount: '70000.00' + vgo_amount: '67500.00' + eliminated_auto: '65000.00' + eliminated_manual: '2500.00' + goodwill_adjust: '18000.00' + bank_amount: '20500.00' + deviation_amount: null + comment: null + - line_code: '1230' + line_name: Дебиторская задолженность + ordinal: 40 + is_total: false + is_threshold_base: false + companies: + - legal_entity_id: 11111111-1111-4111-8111-111111111111 + client_amount: '520000.00' + vgo_amount: '120000.00' + cleaned_amount: '400000.00' + share_percent: '70.42' + - legal_entity_id: 22222222-2222-4222-8222-222222222222 + client_amount: '130000.00' + vgo_amount: '10000.00' + cleaned_amount: '120000.00' + share_percent: '21.13' + - legal_entity_id: 33333333-3333-4333-8333-333333333333 + client_amount: '48000.00' + vgo_amount: '0.00' + cleaned_amount: '48000.00' + share_percent: '8.45' + sum_amount: '698000.00' + vgo_amount: '130000.00' + eliminated_auto: '100000.00' + eliminated_manual: '30000.00' + goodwill_adjust: '0.00' + bank_amount: '568000.00' + deviation_amount: '2900.00' + comment: null + - line_code: '1200' + line_name: Итого по разделу II + ordinal: 50 + is_total: true + is_threshold_base: false + companies: + - legal_entity_id: 11111111-1111-4111-8111-111111111111 + client_amount: '520000.00' + vgo_amount: '120000.00' + cleaned_amount: '400000.00' + share_percent: '70.42' + - legal_entity_id: 22222222-2222-4222-8222-222222222222 + client_amount: '130000.00' + vgo_amount: '10000.00' + cleaned_amount: '120000.00' + share_percent: '21.13' + - legal_entity_id: 33333333-3333-4333-8333-333333333333 + client_amount: '48000.00' + vgo_amount: '0.00' + cleaned_amount: '48000.00' + share_percent: '8.45' + sum_amount: '698000.00' + vgo_amount: '130000.00' + eliminated_auto: '100000.00' + eliminated_manual: '30000.00' + goodwill_adjust: '0.00' + bank_amount: '568000.00' + deviation_amount: null + comment: null + - line_code: '1600' + line_name: БАЛАНС + ordinal: 60 + is_total: true + is_threshold_base: false + companies: + - legal_entity_id: 11111111-1111-4111-8111-111111111111 + client_amount: '590000.00' + vgo_amount: '187500.00' + cleaned_amount: '402500.00' + share_percent: '68.39' + - legal_entity_id: 22222222-2222-4222-8222-222222222222 + client_amount: '130000.00' + vgo_amount: '10000.00' + cleaned_amount: '120000.00' + share_percent: '20.39' + - legal_entity_id: 33333333-3333-4333-8333-333333333333 + client_amount: '48000.00' + vgo_amount: '0.00' + cleaned_amount: '48000.00' + share_percent: '8.16' + sum_amount: '768000.00' + vgo_amount: '197500.00' + eliminated_auto: '165000.00' + eliminated_manual: '32500.00' + goodwill_adjust: '18000.00' + bank_amount: '588500.00' + deviation_amount: null + comment: null + - line_code: '1310' + line_name: Уставный капитал + ordinal: 70 + is_total: false + is_threshold_base: false + companies: + - legal_entity_id: 11111111-1111-4111-8111-111111111111 + client_amount: '100000.00' + vgo_amount: '0.00' + cleaned_amount: '100000.00' + share_percent: '92.59' + - legal_entity_id: 22222222-2222-4222-8222-222222222222 + client_amount: '40000.00' + vgo_amount: '32000.00' + cleaned_amount: '8000.00' + share_percent: '7.41' + - legal_entity_id: 33333333-3333-4333-8333-333333333333 + client_amount: '10000.00' + vgo_amount: '10000.00' + cleaned_amount: '0.00' + share_percent: '0.00' + sum_amount: '150000.00' + vgo_amount: '42000.00' + eliminated_auto: '42000.00' + eliminated_manual: '0.00' + goodwill_adjust: '0.00' + bank_amount: '108000.00' + deviation_amount: '0.00' + comment: null + - line_code: '1350' + line_name: Добавочный капитал (без переоценки) + ordinal: 80 + is_total: false + is_threshold_base: false + companies: + - legal_entity_id: 11111111-1111-4111-8111-111111111111 + client_amount: '0.00' + vgo_amount: '0.00' + cleaned_amount: '0.00' + share_percent: null + - legal_entity_id: 22222222-2222-4222-8222-222222222222 + client_amount: '0.00' + vgo_amount: '0.00' + cleaned_amount: '0.00' + share_percent: null + - legal_entity_id: 33333333-3333-4333-8333-333333333333 + client_amount: '3000.00' + vgo_amount: '3000.00' + cleaned_amount: '0.00' + share_percent: null + sum_amount: '3000.00' + vgo_amount: '3000.00' + eliminated_auto: '3000.00' + eliminated_manual: '0.00' + goodwill_adjust: '0.00' + bank_amount: '0.00' + deviation_amount: '0.00' + comment: null + - line_code: '1370' + line_name: Нераспределенная прибыль (непокрытый убыток) + ordinal: 90 + is_total: false + is_threshold_base: false + companies: + - legal_entity_id: 11111111-1111-4111-8111-111111111111 + client_amount: '280000.00' + vgo_amount: '0.00' + cleaned_amount: '280000.00' + share_percent: '106.46' + - legal_entity_id: 22222222-2222-4222-8222-222222222222 + client_amount: '-20000.00' + vgo_amount: '0.00' + cleaned_amount: '-20000.00' + share_percent: '-7.60' + - legal_entity_id: 33333333-3333-4333-8333-333333333333 + client_amount: '5000.00' + vgo_amount: '2000.00' + cleaned_amount: '3000.00' + share_percent: '1.14' + sum_amount: '265000.00' + vgo_amount: '2000.00' + eliminated_auto: '2000.00' + eliminated_manual: '0.00' + goodwill_adjust: '0.00' + bank_amount: '263000.00' + deviation_amount: '0.00' + comment: null + - line_code: '1300' + line_name: Итого по разделу III + ordinal: 100 + is_total: true + is_threshold_base: true + companies: + - legal_entity_id: 11111111-1111-4111-8111-111111111111 + client_amount: '380000.00' + vgo_amount: '0.00' + cleaned_amount: '380000.00' + share_percent: '102.43' + - legal_entity_id: 22222222-2222-4222-8222-222222222222 + client_amount: '20000.00' + vgo_amount: '32000.00' + cleaned_amount: '-12000.00' + share_percent: '-3.23' + - legal_entity_id: 33333333-3333-4333-8333-333333333333 + client_amount: '18000.00' + vgo_amount: '15000.00' + cleaned_amount: '3000.00' + share_percent: '0.81' + sum_amount: '418000.00' + vgo_amount: '47000.00' + eliminated_auto: '47000.00' + eliminated_manual: '0.00' + goodwill_adjust: '0.00' + bank_amount: '371000.00' + deviation_amount: null + comment: null + - line_code: '1410' + line_name: Заемные средства + ordinal: 110 + is_total: false + is_threshold_base: false + companies: + - legal_entity_id: 11111111-1111-4111-8111-111111111111 + client_amount: '50000.00' + vgo_amount: '0.00' + cleaned_amount: '50000.00' + share_percent: '100.00' + - legal_entity_id: 22222222-2222-4222-8222-222222222222 + client_amount: '0.00' + vgo_amount: '0.00' + cleaned_amount: '0.00' + share_percent: '0.00' + - legal_entity_id: 33333333-3333-4333-8333-333333333333 + client_amount: '0.00' + vgo_amount: '0.00' + cleaned_amount: '0.00' + share_percent: '0.00' + sum_amount: '50000.00' + vgo_amount: '0.00' + eliminated_auto: '0.00' + eliminated_manual: '0.00' + goodwill_adjust: '0.00' + bank_amount: '50000.00' + deviation_amount: '0.00' + comment: null + - line_code: '1400' + line_name: Итого по разделу IV + ordinal: 120 + is_total: true + is_threshold_base: false + companies: + - legal_entity_id: 11111111-1111-4111-8111-111111111111 + client_amount: '50000.00' + vgo_amount: '0.00' + cleaned_amount: '50000.00' + share_percent: '100.00' + - legal_entity_id: 22222222-2222-4222-8222-222222222222 + client_amount: '0.00' + vgo_amount: '0.00' + cleaned_amount: '0.00' + share_percent: '0.00' + - legal_entity_id: 33333333-3333-4333-8333-333333333333 + client_amount: '0.00' + vgo_amount: '0.00' + cleaned_amount: '0.00' + share_percent: '0.00' + sum_amount: '50000.00' + vgo_amount: '0.00' + eliminated_auto: '0.00' + eliminated_manual: '0.00' + goodwill_adjust: '0.00' + bank_amount: '50000.00' + deviation_amount: null + comment: null + - line_code: '1520' + line_name: Кредиторская задолженность + ordinal: 130 + is_total: false + is_threshold_base: false + companies: + - legal_entity_id: 11111111-1111-4111-8111-111111111111 + client_amount: '160000.00' + vgo_amount: '10000.00' + cleaned_amount: '150000.00' + share_percent: '89.55' + - legal_entity_id: 22222222-2222-4222-8222-222222222222 + client_amount: '110000.00' + vgo_amount: '100000.00' + cleaned_amount: '10000.00' + share_percent: '5.97' + - legal_entity_id: 33333333-3333-4333-8333-333333333333 + client_amount: '30000.00' + vgo_amount: '22500.00' + cleaned_amount: '7500.00' + share_percent: '4.48' + sum_amount: '300000.00' + vgo_amount: '132500.00' + eliminated_auto: '100000.00' + eliminated_manual: '32500.00' + goodwill_adjust: '0.00' + bank_amount: '167500.00' + deviation_amount: '40000.00' + comment: null + - line_code: '1500' + line_name: Итого по разделу V + ordinal: 140 + is_total: true + is_threshold_base: false + companies: + - legal_entity_id: 11111111-1111-4111-8111-111111111111 + client_amount: '160000.00' + vgo_amount: '10000.00' + cleaned_amount: '150000.00' + share_percent: '89.55' + - legal_entity_id: 22222222-2222-4222-8222-222222222222 + client_amount: '110000.00' + vgo_amount: '100000.00' + cleaned_amount: '10000.00' + share_percent: '5.97' + - legal_entity_id: 33333333-3333-4333-8333-333333333333 + client_amount: '30000.00' + vgo_amount: '22500.00' + cleaned_amount: '7500.00' + share_percent: '4.48' + sum_amount: '300000.00' + vgo_amount: '132500.00' + eliminated_auto: '100000.00' + eliminated_manual: '32500.00' + goodwill_adjust: '0.00' + bank_amount: '167500.00' + deviation_amount: null + comment: null + - line_code: '1700' + line_name: БАЛАНС + ordinal: 150 + is_total: true + is_threshold_base: false + companies: + - legal_entity_id: 11111111-1111-4111-8111-111111111111 + client_amount: '590000.00' + vgo_amount: '10000.00' + cleaned_amount: '580000.00' + share_percent: '98.56' + - legal_entity_id: 22222222-2222-4222-8222-222222222222 + client_amount: '130000.00' + vgo_amount: '132000.00' + cleaned_amount: '-2000.00' + share_percent: '-0.34' + - legal_entity_id: 33333333-3333-4333-8333-333333333333 + client_amount: '48000.00' + vgo_amount: '37500.00' + cleaned_amount: '10500.00' + share_percent: '1.78' + sum_amount: '768000.00' + vgo_amount: '179500.00' + eliminated_auto: '147000.00' + eliminated_manual: '32500.00' + goodwill_adjust: '0.00' + bank_amount: '588500.00' + deviation_amount: null + comment: null + income: + lines: + - line_code: '2110' + line_name: Выручка + ordinal: 10 + is_total: false + is_threshold_base: false + companies: + - legal_entity_id: 11111111-1111-4111-8111-111111111111 + client_amount: '200000.00' + vgo_amount: '10000.00' + cleaned_amount: '190000.00' + share_percent: '70.37' + - legal_entity_id: 22222222-2222-4222-8222-222222222222 + client_amount: '80000.00' + vgo_amount: '0.00' + cleaned_amount: '80000.00' + share_percent: '29.63' + - legal_entity_id: 33333333-3333-4333-8333-333333333333 + client_amount: '0.00' + vgo_amount: '0.00' + cleaned_amount: '0.00' + share_percent: '0.00' + sum_amount: '280000.00' + vgo_amount: '10000.00' + eliminated_auto: '10000.00' + eliminated_manual: '0.00' + goodwill_adjust: '0.00' + bank_amount: '270000.00' + deviation_amount: '0.00' + comment: null + - line_code: '2120' + line_name: Себестоимость продаж + ordinal: 20 + is_total: false + is_threshold_base: false + companies: + - legal_entity_id: 11111111-1111-4111-8111-111111111111 + client_amount: '-120000.00' + vgo_amount: '0.00' + cleaned_amount: '-120000.00' + share_percent: '70.59' + - legal_entity_id: 22222222-2222-4222-8222-222222222222 + client_amount: '-60000.00' + vgo_amount: '-10000.00' + cleaned_amount: '-50000.00' + share_percent: '29.41' + - legal_entity_id: 33333333-3333-4333-8333-333333333333 + client_amount: '0.00' + vgo_amount: '0.00' + cleaned_amount: '0.00' + share_percent: '0.00' + sum_amount: '-180000.00' + vgo_amount: '-10000.00' + eliminated_auto: '-10000.00' + eliminated_manual: '0.00' + goodwill_adjust: '0.00' + bank_amount: '-170000.00' + deviation_amount: '0.00' + comment: null + - line_code: '2100' + line_name: Валовая прибыль (убыток) + ordinal: 30 + is_total: true + is_threshold_base: false + companies: + - legal_entity_id: 11111111-1111-4111-8111-111111111111 + client_amount: '80000.00' + vgo_amount: '10000.00' + cleaned_amount: '70000.00' + share_percent: '70.00' + - legal_entity_id: 22222222-2222-4222-8222-222222222222 + client_amount: '20000.00' + vgo_amount: '-10000.00' + cleaned_amount: '30000.00' + share_percent: '30.00' + - legal_entity_id: 33333333-3333-4333-8333-333333333333 + client_amount: '0.00' + vgo_amount: '0.00' + cleaned_amount: '0.00' + share_percent: '0.00' + sum_amount: '100000.00' + vgo_amount: '0.00' + eliminated_auto: '0.00' + eliminated_manual: '0.00' + goodwill_adjust: '0.00' + bank_amount: '100000.00' + deviation_amount: null + comment: null + - line_code: '2210' + line_name: Коммерческие расходы + ordinal: 40 + is_total: false + is_threshold_base: false + companies: + - legal_entity_id: 11111111-1111-4111-8111-111111111111 + client_amount: '-20000.00' + vgo_amount: '0.00' + cleaned_amount: '-20000.00' + share_percent: '80.00' + - legal_entity_id: 22222222-2222-4222-8222-222222222222 + client_amount: '-5000.00' + vgo_amount: '0.00' + cleaned_amount: '-5000.00' + share_percent: '20.00' + - legal_entity_id: 33333333-3333-4333-8333-333333333333 + client_amount: '0.00' + vgo_amount: '0.00' + cleaned_amount: '0.00' + share_percent: '0.00' + sum_amount: '-25000.00' + vgo_amount: '0.00' + eliminated_auto: '0.00' + eliminated_manual: '0.00' + goodwill_adjust: '0.00' + bank_amount: '-25000.00' + deviation_amount: '0.00' + comment: null + - line_code: '2220' + line_name: Управленческие расходы + ordinal: 50 + is_total: false + is_threshold_base: false + companies: + - legal_entity_id: 11111111-1111-4111-8111-111111111111 + client_amount: '-10000.00' + vgo_amount: '0.00' + cleaned_amount: '-10000.00' + share_percent: '100.00' + - legal_entity_id: 22222222-2222-4222-8222-222222222222 + client_amount: '0.00' + vgo_amount: '0.00' + cleaned_amount: '0.00' + share_percent: '0.00' + - legal_entity_id: 33333333-3333-4333-8333-333333333333 + client_amount: '0.00' + vgo_amount: '0.00' + cleaned_amount: '0.00' + share_percent: '0.00' + sum_amount: '-10000.00' + vgo_amount: '0.00' + eliminated_auto: '0.00' + eliminated_manual: '0.00' + goodwill_adjust: '0.00' + bank_amount: '-10000.00' + deviation_amount: '0.00' + comment: null + - line_code: '2200' + line_name: Прибыль (убыток) от продаж + ordinal: 60 + is_total: true + is_threshold_base: false + companies: + - legal_entity_id: 11111111-1111-4111-8111-111111111111 + client_amount: '50000.00' + vgo_amount: '10000.00' + cleaned_amount: '40000.00' + share_percent: '61.54' + - legal_entity_id: 22222222-2222-4222-8222-222222222222 + client_amount: '15000.00' + vgo_amount: '-10000.00' + cleaned_amount: '25000.00' + share_percent: '38.46' + - legal_entity_id: 33333333-3333-4333-8333-333333333333 + client_amount: '0.00' + vgo_amount: '0.00' + cleaned_amount: '0.00' + share_percent: '0.00' + sum_amount: '65000.00' + vgo_amount: '0.00' + eliminated_auto: '0.00' + eliminated_manual: '0.00' + goodwill_adjust: '0.00' + bank_amount: '65000.00' + deviation_amount: null + comment: null + warnings: + - code: FORM_MISSING + message: Нет подтверждённой формы ОФР у ООО «Гамма» + legal_entity_id: 33333333-3333-4333-8333-333333333333 + statement_type: income + count: null + goodwill_disabled: + summary: Та же версия, учёт гудвилла выключен + value: + version_id: 99999999-9999-4999-8999-999999999999 + computed_at: '2026-11-10T09:15:00Z' + is_frozen: false + editable: true + read_only_reason: null + units: thousand_rub + companies: + - legal_entity_id: 11111111-1111-4111-8111-111111111111 + name: ООО «Альфа» + inn: '7701000001' + - legal_entity_id: 22222222-2222-4222-8222-222222222222 + name: ООО «Бета» + inn: '7701000002' + - legal_entity_id: 33333333-3333-4333-8333-333333333333 + name: ООО «Гамма» + inn: '7701000003' + requisites: + company_group_name: ГК «Альфа» + related_group_name: ГСК «Альфа» + reporting_date: '2025-10-01' + version_no: 1 + version_status: IN_PROGRESS + scenario: CREATE + approach: BASIC + methodology_deviations: null + uob_decision_no: null + uob_decision_date: null + corrections_balance: + count: 2 + amount: '65000.00' + corrections_income: + count: 0 + amount: '0.00' + summary: + balance: + deviation_total: '42900.00' + base_kind: NET_ASSETS + base_amount: '363000.00' + limit_percent: '10.00' + limit_amount: '36300.00' + deviation_percent: '11.82' + exceeded: true + income: + deviation_total: '0.00' + base_kind: SALES_PROFIT + base_amount: '65000.00' + limit_percent: '10.00' + limit_amount: '6500.00' + deviation_percent: '0.00' + exceeded: false + justification_required: true + threshold_justification: null + goodwill: + enabled: false + total: '0.00' + balance: + lines: + - line_code: '1170' + line_name: Финансовые вложения + ordinal: 10 + is_total: false + is_threshold_base: false + companies: + - legal_entity_id: 11111111-1111-4111-8111-111111111111 + client_amount: '70000.00' + vgo_amount: '57500.00' + cleaned_amount: '12500.00' + share_percent: '100.00' + - legal_entity_id: 22222222-2222-4222-8222-222222222222 + client_amount: '0.00' + vgo_amount: '0.00' + cleaned_amount: '0.00' + share_percent: '0.00' + - legal_entity_id: 33333333-3333-4333-8333-333333333333 + client_amount: '0.00' + vgo_amount: '0.00' + cleaned_amount: '0.00' + share_percent: '0.00' + sum_amount: '70000.00' + vgo_amount: '57500.00' + eliminated_auto: '55000.00' + eliminated_manual: '2500.00' + goodwill_adjust: '0.00' + bank_amount: '12500.00' + deviation_amount: '0.00' + comment: null + - line_code: GOODWILL + line_name: Гудвилл + ordinal: 20 + is_total: false + is_threshold_base: false + companies: [] + sum_amount: '0.00' + vgo_amount: '0.00' + eliminated_auto: '0.00' + eliminated_manual: '0.00' + goodwill_adjust: '0.00' + bank_amount: '0.00' + deviation_amount: '0.00' + comment: null + - line_code: '1100' + line_name: Итого по разделу I + ordinal: 30 + is_total: true + is_threshold_base: false + companies: + - legal_entity_id: 11111111-1111-4111-8111-111111111111 + client_amount: '70000.00' + vgo_amount: '57500.00' + cleaned_amount: '12500.00' + share_percent: '100.00' + - legal_entity_id: 22222222-2222-4222-8222-222222222222 + client_amount: '0.00' + vgo_amount: '0.00' + cleaned_amount: '0.00' + share_percent: '0.00' + - legal_entity_id: 33333333-3333-4333-8333-333333333333 + client_amount: '0.00' + vgo_amount: '0.00' + cleaned_amount: '0.00' + share_percent: '0.00' + sum_amount: '70000.00' + vgo_amount: '57500.00' + eliminated_auto: '55000.00' + eliminated_manual: '2500.00' + goodwill_adjust: '0.00' + bank_amount: '12500.00' + deviation_amount: null + comment: null + - line_code: '1230' + line_name: Дебиторская задолженность + ordinal: 40 + is_total: false + is_threshold_base: false + companies: + - legal_entity_id: 11111111-1111-4111-8111-111111111111 + client_amount: '520000.00' + vgo_amount: '120000.00' + cleaned_amount: '400000.00' + share_percent: '70.42' + - legal_entity_id: 22222222-2222-4222-8222-222222222222 + client_amount: '130000.00' + vgo_amount: '10000.00' + cleaned_amount: '120000.00' + share_percent: '21.13' + - legal_entity_id: 33333333-3333-4333-8333-333333333333 + client_amount: '48000.00' + vgo_amount: '0.00' + cleaned_amount: '48000.00' + share_percent: '8.45' + sum_amount: '698000.00' + vgo_amount: '130000.00' + eliminated_auto: '100000.00' + eliminated_manual: '30000.00' + goodwill_adjust: '0.00' + bank_amount: '568000.00' + deviation_amount: '2900.00' + comment: null + - line_code: '1200' + line_name: Итого по разделу II + ordinal: 50 + is_total: true + is_threshold_base: false + companies: + - legal_entity_id: 11111111-1111-4111-8111-111111111111 + client_amount: '520000.00' + vgo_amount: '120000.00' + cleaned_amount: '400000.00' + share_percent: '70.42' + - legal_entity_id: 22222222-2222-4222-8222-222222222222 + client_amount: '130000.00' + vgo_amount: '10000.00' + cleaned_amount: '120000.00' + share_percent: '21.13' + - legal_entity_id: 33333333-3333-4333-8333-333333333333 + client_amount: '48000.00' + vgo_amount: '0.00' + cleaned_amount: '48000.00' + share_percent: '8.45' + sum_amount: '698000.00' + vgo_amount: '130000.00' + eliminated_auto: '100000.00' + eliminated_manual: '30000.00' + goodwill_adjust: '0.00' + bank_amount: '568000.00' + deviation_amount: null + comment: null + - line_code: '1600' + line_name: БАЛАНС + ordinal: 60 + is_total: true + is_threshold_base: false + companies: + - legal_entity_id: 11111111-1111-4111-8111-111111111111 + client_amount: '590000.00' + vgo_amount: '177500.00' + cleaned_amount: '412500.00' + share_percent: '71.06' + - legal_entity_id: 22222222-2222-4222-8222-222222222222 + client_amount: '130000.00' + vgo_amount: '10000.00' + cleaned_amount: '120000.00' + share_percent: '20.67' + - legal_entity_id: 33333333-3333-4333-8333-333333333333 + client_amount: '48000.00' + vgo_amount: '0.00' + cleaned_amount: '48000.00' + share_percent: '8.27' + sum_amount: '768000.00' + vgo_amount: '187500.00' + eliminated_auto: '155000.00' + eliminated_manual: '32500.00' + goodwill_adjust: '0.00' + bank_amount: '580500.00' + deviation_amount: null + comment: null + - line_code: '1310' + line_name: Уставный капитал + ordinal: 70 + is_total: false + is_threshold_base: false + companies: + - legal_entity_id: 11111111-1111-4111-8111-111111111111 + client_amount: '100000.00' + vgo_amount: '0.00' + cleaned_amount: '100000.00' + share_percent: '100.00' + - legal_entity_id: 22222222-2222-4222-8222-222222222222 + client_amount: '40000.00' + vgo_amount: '40000.00' + cleaned_amount: '0.00' + share_percent: '0.00' + - legal_entity_id: 33333333-3333-4333-8333-333333333333 + client_amount: '10000.00' + vgo_amount: '10000.00' + cleaned_amount: '0.00' + share_percent: '0.00' + sum_amount: '150000.00' + vgo_amount: '50000.00' + eliminated_auto: '50000.00' + eliminated_manual: '0.00' + goodwill_adjust: '0.00' + bank_amount: '100000.00' + deviation_amount: '0.00' + comment: null + - line_code: '1350' + line_name: Добавочный капитал (без переоценки) + ordinal: 80 + is_total: false + is_threshold_base: false + companies: + - legal_entity_id: 11111111-1111-4111-8111-111111111111 + client_amount: '0.00' + vgo_amount: '0.00' + cleaned_amount: '0.00' + share_percent: null + - legal_entity_id: 22222222-2222-4222-8222-222222222222 + client_amount: '0.00' + vgo_amount: '0.00' + cleaned_amount: '0.00' + share_percent: null + - legal_entity_id: 33333333-3333-4333-8333-333333333333 + client_amount: '3000.00' + vgo_amount: '3000.00' + cleaned_amount: '0.00' + share_percent: null + sum_amount: '3000.00' + vgo_amount: '3000.00' + eliminated_auto: '3000.00' + eliminated_manual: '0.00' + goodwill_adjust: '0.00' + bank_amount: '0.00' + deviation_amount: '0.00' + comment: null + - line_code: '1370' + line_name: Нераспределенная прибыль (непокрытый убыток) + ordinal: 90 + is_total: false + is_threshold_base: false + companies: + - legal_entity_id: 11111111-1111-4111-8111-111111111111 + client_amount: '280000.00' + vgo_amount: '0.00' + cleaned_amount: '280000.00' + share_percent: '106.46' + - legal_entity_id: 22222222-2222-4222-8222-222222222222 + client_amount: '-20000.00' + vgo_amount: '0.00' + cleaned_amount: '-20000.00' + share_percent: '-7.60' + - legal_entity_id: 33333333-3333-4333-8333-333333333333 + client_amount: '5000.00' + vgo_amount: '2000.00' + cleaned_amount: '3000.00' + share_percent: '1.14' + sum_amount: '265000.00' + vgo_amount: '2000.00' + eliminated_auto: '2000.00' + eliminated_manual: '0.00' + goodwill_adjust: '0.00' + bank_amount: '263000.00' + deviation_amount: '0.00' + comment: null + - line_code: '1300' + line_name: Итого по разделу III + ordinal: 100 + is_total: true + is_threshold_base: true + companies: + - legal_entity_id: 11111111-1111-4111-8111-111111111111 + client_amount: '380000.00' + vgo_amount: '0.00' + cleaned_amount: '380000.00' + share_percent: '104.68' + - legal_entity_id: 22222222-2222-4222-8222-222222222222 + client_amount: '20000.00' + vgo_amount: '40000.00' + cleaned_amount: '-20000.00' + share_percent: '-5.51' + - legal_entity_id: 33333333-3333-4333-8333-333333333333 + client_amount: '18000.00' + vgo_amount: '15000.00' + cleaned_amount: '3000.00' + share_percent: '0.83' + sum_amount: '418000.00' + vgo_amount: '55000.00' + eliminated_auto: '55000.00' + eliminated_manual: '0.00' + goodwill_adjust: '0.00' + bank_amount: '363000.00' + deviation_amount: null + comment: null + - line_code: '1410' + line_name: Заемные средства + ordinal: 110 + is_total: false + is_threshold_base: false + companies: + - legal_entity_id: 11111111-1111-4111-8111-111111111111 + client_amount: '50000.00' + vgo_amount: '0.00' + cleaned_amount: '50000.00' + share_percent: '100.00' + - legal_entity_id: 22222222-2222-4222-8222-222222222222 + client_amount: '0.00' + vgo_amount: '0.00' + cleaned_amount: '0.00' + share_percent: '0.00' + - legal_entity_id: 33333333-3333-4333-8333-333333333333 + client_amount: '0.00' + vgo_amount: '0.00' + cleaned_amount: '0.00' + share_percent: '0.00' + sum_amount: '50000.00' + vgo_amount: '0.00' + eliminated_auto: '0.00' + eliminated_manual: '0.00' + goodwill_adjust: '0.00' + bank_amount: '50000.00' + deviation_amount: '0.00' + comment: null + - line_code: '1400' + line_name: Итого по разделу IV + ordinal: 120 + is_total: true + is_threshold_base: false + companies: + - legal_entity_id: 11111111-1111-4111-8111-111111111111 + client_amount: '50000.00' + vgo_amount: '0.00' + cleaned_amount: '50000.00' + share_percent: '100.00' + - legal_entity_id: 22222222-2222-4222-8222-222222222222 + client_amount: '0.00' + vgo_amount: '0.00' + cleaned_amount: '0.00' + share_percent: '0.00' + - legal_entity_id: 33333333-3333-4333-8333-333333333333 + client_amount: '0.00' + vgo_amount: '0.00' + cleaned_amount: '0.00' + share_percent: '0.00' + sum_amount: '50000.00' + vgo_amount: '0.00' + eliminated_auto: '0.00' + eliminated_manual: '0.00' + goodwill_adjust: '0.00' + bank_amount: '50000.00' + deviation_amount: null + comment: null + - line_code: '1520' + line_name: Кредиторская задолженность + ordinal: 130 + is_total: false + is_threshold_base: false + companies: + - legal_entity_id: 11111111-1111-4111-8111-111111111111 + client_amount: '160000.00' + vgo_amount: '10000.00' + cleaned_amount: '150000.00' + share_percent: '89.55' + - legal_entity_id: 22222222-2222-4222-8222-222222222222 + client_amount: '110000.00' + vgo_amount: '100000.00' + cleaned_amount: '10000.00' + share_percent: '5.97' + - legal_entity_id: 33333333-3333-4333-8333-333333333333 + client_amount: '30000.00' + vgo_amount: '22500.00' + cleaned_amount: '7500.00' + share_percent: '4.48' + sum_amount: '300000.00' + vgo_amount: '132500.00' + eliminated_auto: '100000.00' + eliminated_manual: '32500.00' + goodwill_adjust: '0.00' + bank_amount: '167500.00' + deviation_amount: '40000.00' + comment: null + - line_code: '1500' + line_name: Итого по разделу V + ordinal: 140 + is_total: true + is_threshold_base: false + companies: + - legal_entity_id: 11111111-1111-4111-8111-111111111111 + client_amount: '160000.00' + vgo_amount: '10000.00' + cleaned_amount: '150000.00' + share_percent: '89.55' + - legal_entity_id: 22222222-2222-4222-8222-222222222222 + client_amount: '110000.00' + vgo_amount: '100000.00' + cleaned_amount: '10000.00' + share_percent: '5.97' + - legal_entity_id: 33333333-3333-4333-8333-333333333333 + client_amount: '30000.00' + vgo_amount: '22500.00' + cleaned_amount: '7500.00' + share_percent: '4.48' + sum_amount: '300000.00' + vgo_amount: '132500.00' + eliminated_auto: '100000.00' + eliminated_manual: '32500.00' + goodwill_adjust: '0.00' + bank_amount: '167500.00' + deviation_amount: null + comment: null + - line_code: '1700' + line_name: БАЛАНС + ordinal: 150 + is_total: true + is_threshold_base: false + companies: + - legal_entity_id: 11111111-1111-4111-8111-111111111111 + client_amount: '590000.00' + vgo_amount: '10000.00' + cleaned_amount: '580000.00' + share_percent: '99.91' + - legal_entity_id: 22222222-2222-4222-8222-222222222222 + client_amount: '130000.00' + vgo_amount: '140000.00' + cleaned_amount: '-10000.00' + share_percent: '-1.72' + - legal_entity_id: 33333333-3333-4333-8333-333333333333 + client_amount: '48000.00' + vgo_amount: '37500.00' + cleaned_amount: '10500.00' + share_percent: '1.81' + sum_amount: '768000.00' + vgo_amount: '187500.00' + eliminated_auto: '155000.00' + eliminated_manual: '32500.00' + goodwill_adjust: '0.00' + bank_amount: '580500.00' + deviation_amount: null + comment: null + income: + lines: + - line_code: '2110' + line_name: Выручка + ordinal: 10 + is_total: false + is_threshold_base: false + companies: + - legal_entity_id: 11111111-1111-4111-8111-111111111111 + client_amount: '200000.00' + vgo_amount: '10000.00' + cleaned_amount: '190000.00' + share_percent: '70.37' + - legal_entity_id: 22222222-2222-4222-8222-222222222222 + client_amount: '80000.00' + vgo_amount: '0.00' + cleaned_amount: '80000.00' + share_percent: '29.63' + - legal_entity_id: 33333333-3333-4333-8333-333333333333 + client_amount: '0.00' + vgo_amount: '0.00' + cleaned_amount: '0.00' + share_percent: '0.00' + sum_amount: '280000.00' + vgo_amount: '10000.00' + eliminated_auto: '10000.00' + eliminated_manual: '0.00' + goodwill_adjust: '0.00' + bank_amount: '270000.00' + deviation_amount: '0.00' + comment: null + - line_code: '2120' + line_name: Себестоимость продаж + ordinal: 20 + is_total: false + is_threshold_base: false + companies: + - legal_entity_id: 11111111-1111-4111-8111-111111111111 + client_amount: '-120000.00' + vgo_amount: '0.00' + cleaned_amount: '-120000.00' + share_percent: '70.59' + - legal_entity_id: 22222222-2222-4222-8222-222222222222 + client_amount: '-60000.00' + vgo_amount: '-10000.00' + cleaned_amount: '-50000.00' + share_percent: '29.41' + - legal_entity_id: 33333333-3333-4333-8333-333333333333 + client_amount: '0.00' + vgo_amount: '0.00' + cleaned_amount: '0.00' + share_percent: '0.00' + sum_amount: '-180000.00' + vgo_amount: '-10000.00' + eliminated_auto: '-10000.00' + eliminated_manual: '0.00' + goodwill_adjust: '0.00' + bank_amount: '-170000.00' + deviation_amount: '0.00' + comment: null + - line_code: '2100' + line_name: Валовая прибыль (убыток) + ordinal: 30 + is_total: true + is_threshold_base: false + companies: + - legal_entity_id: 11111111-1111-4111-8111-111111111111 + client_amount: '80000.00' + vgo_amount: '10000.00' + cleaned_amount: '70000.00' + share_percent: '70.00' + - legal_entity_id: 22222222-2222-4222-8222-222222222222 + client_amount: '20000.00' + vgo_amount: '-10000.00' + cleaned_amount: '30000.00' + share_percent: '30.00' + - legal_entity_id: 33333333-3333-4333-8333-333333333333 + client_amount: '0.00' + vgo_amount: '0.00' + cleaned_amount: '0.00' + share_percent: '0.00' + sum_amount: '100000.00' + vgo_amount: '0.00' + eliminated_auto: '0.00' + eliminated_manual: '0.00' + goodwill_adjust: '0.00' + bank_amount: '100000.00' + deviation_amount: null + comment: null + - line_code: '2210' + line_name: Коммерческие расходы + ordinal: 40 + is_total: false + is_threshold_base: false + companies: + - legal_entity_id: 11111111-1111-4111-8111-111111111111 + client_amount: '-20000.00' + vgo_amount: '0.00' + cleaned_amount: '-20000.00' + share_percent: '80.00' + - legal_entity_id: 22222222-2222-4222-8222-222222222222 + client_amount: '-5000.00' + vgo_amount: '0.00' + cleaned_amount: '-5000.00' + share_percent: '20.00' + - legal_entity_id: 33333333-3333-4333-8333-333333333333 + client_amount: '0.00' + vgo_amount: '0.00' + cleaned_amount: '0.00' + share_percent: '0.00' + sum_amount: '-25000.00' + vgo_amount: '0.00' + eliminated_auto: '0.00' + eliminated_manual: '0.00' + goodwill_adjust: '0.00' + bank_amount: '-25000.00' + deviation_amount: '0.00' + comment: null + - line_code: '2220' + line_name: Управленческие расходы + ordinal: 50 + is_total: false + is_threshold_base: false + companies: + - legal_entity_id: 11111111-1111-4111-8111-111111111111 + client_amount: '-10000.00' + vgo_amount: '0.00' + cleaned_amount: '-10000.00' + share_percent: '100.00' + - legal_entity_id: 22222222-2222-4222-8222-222222222222 + client_amount: '0.00' + vgo_amount: '0.00' + cleaned_amount: '0.00' + share_percent: '0.00' + - legal_entity_id: 33333333-3333-4333-8333-333333333333 + client_amount: '0.00' + vgo_amount: '0.00' + cleaned_amount: '0.00' + share_percent: '0.00' + sum_amount: '-10000.00' + vgo_amount: '0.00' + eliminated_auto: '0.00' + eliminated_manual: '0.00' + goodwill_adjust: '0.00' + bank_amount: '-10000.00' + deviation_amount: '0.00' + comment: null + - line_code: '2200' + line_name: Прибыль (убыток) от продаж + ordinal: 60 + is_total: true + is_threshold_base: false + companies: + - legal_entity_id: 11111111-1111-4111-8111-111111111111 + client_amount: '50000.00' + vgo_amount: '10000.00' + cleaned_amount: '40000.00' + share_percent: '61.54' + - legal_entity_id: 22222222-2222-4222-8222-222222222222 + client_amount: '15000.00' + vgo_amount: '-10000.00' + cleaned_amount: '25000.00' + share_percent: '38.46' + - legal_entity_id: 33333333-3333-4333-8333-333333333333 + client_amount: '0.00' + vgo_amount: '0.00' + cleaned_amount: '0.00' + share_percent: '0.00' + sum_amount: '65000.00' + vgo_amount: '0.00' + eliminated_auto: '0.00' + eliminated_manual: '0.00' + goodwill_adjust: '0.00' + bank_amount: '65000.00' + deviation_amount: null + comment: null + warnings: + - code: FORM_MISSING + message: Нет подтверждённой формы ОФР у ООО «Гамма» + legal_entity_id: 33333333-3333-4333-8333-333333333333 + statement_type: income + count: null + frozen: + summary: 'Версия «Верифицирован»: только чтение, обоснование и комментарий заполнены' + value: + version_id: 99999999-9999-4999-8999-999999999999 + computed_at: '2026-11-10T09:15:00Z' + is_frozen: true + editable: false + read_only_reason: VERSION_NOT_EDITABLE + units: thousand_rub + companies: + - legal_entity_id: 11111111-1111-4111-8111-111111111111 + name: ООО «Альфа» + inn: '7701000001' + - legal_entity_id: 22222222-2222-4222-8222-222222222222 + name: ООО «Бета» + inn: '7701000002' + - legal_entity_id: 33333333-3333-4333-8333-333333333333 + name: ООО «Гамма» + inn: '7701000003' + requisites: + company_group_name: ГК «Альфа» + related_group_name: ГСК «Альфа» + reporting_date: '2025-10-01' + version_no: 1 + version_status: VERIFIED + scenario: CREATE + approach: BASIC + methodology_deviations: Отклонений от Методики нет + uob_decision_no: УОБ-118 + uob_decision_date: '2025-11-20' + corrections_balance: + count: 2 + amount: '65000.00' + corrections_income: + count: 0 + amount: '0.00' + summary: + balance: + deviation_total: '42900.00' + base_kind: NET_ASSETS + base_amount: '371000.00' + limit_percent: '10.00' + limit_amount: '37100.00' + deviation_percent: '11.56' + exceeded: true + income: + deviation_total: '0.00' + base_kind: SALES_PROFIT + base_amount: '65000.00' + limit_percent: '10.00' + limit_amount: '6500.00' + deviation_percent: '0.00' + exceeded: false + justification_required: true + threshold_justification: Расхождение по 1520 — Бета → Альфа, сверка в работе; риск принят + goodwill: + enabled: true + total: '18000.00' + balance: + lines: + - line_code: '1170' + line_name: Финансовые вложения + ordinal: 10 + is_total: false + is_threshold_base: false + companies: + - legal_entity_id: 11111111-1111-4111-8111-111111111111 + client_amount: '70000.00' + vgo_amount: '67500.00' + cleaned_amount: '2500.00' + share_percent: '100.00' + - legal_entity_id: 22222222-2222-4222-8222-222222222222 + client_amount: '0.00' + vgo_amount: '0.00' + cleaned_amount: '0.00' + share_percent: '0.00' + - legal_entity_id: 33333333-3333-4333-8333-333333333333 + client_amount: '0.00' + vgo_amount: '0.00' + cleaned_amount: '0.00' + share_percent: '0.00' + sum_amount: '70000.00' + vgo_amount: '67500.00' + eliminated_auto: '65000.00' + eliminated_manual: '2500.00' + goodwill_adjust: '0.00' + bank_amount: '2500.00' + deviation_amount: '0.00' + comment: null + - line_code: GOODWILL + line_name: Гудвилл + ordinal: 20 + is_total: false + is_threshold_base: false + companies: [] + sum_amount: '0.00' + vgo_amount: '0.00' + eliminated_auto: '0.00' + eliminated_manual: '0.00' + goodwill_adjust: '18000.00' + bank_amount: '18000.00' + deviation_amount: '0.00' + comment: null + - line_code: '1100' + line_name: Итого по разделу I + ordinal: 30 + is_total: true + is_threshold_base: false + companies: + - legal_entity_id: 11111111-1111-4111-8111-111111111111 + client_amount: '70000.00' + vgo_amount: '67500.00' + cleaned_amount: '2500.00' + share_percent: '12.20' + - legal_entity_id: 22222222-2222-4222-8222-222222222222 + client_amount: '0.00' + vgo_amount: '0.00' + cleaned_amount: '0.00' + share_percent: '0.00' + - legal_entity_id: 33333333-3333-4333-8333-333333333333 + client_amount: '0.00' + vgo_amount: '0.00' + cleaned_amount: '0.00' + share_percent: '0.00' + sum_amount: '70000.00' + vgo_amount: '67500.00' + eliminated_auto: '65000.00' + eliminated_manual: '2500.00' + goodwill_adjust: '18000.00' + bank_amount: '20500.00' + deviation_amount: null + comment: null + - line_code: '1230' + line_name: Дебиторская задолженность + ordinal: 40 + is_total: false + is_threshold_base: false + companies: + - legal_entity_id: 11111111-1111-4111-8111-111111111111 + client_amount: '520000.00' + vgo_amount: '120000.00' + cleaned_amount: '400000.00' + share_percent: '70.42' + - legal_entity_id: 22222222-2222-4222-8222-222222222222 + client_amount: '130000.00' + vgo_amount: '10000.00' + cleaned_amount: '120000.00' + share_percent: '21.13' + - legal_entity_id: 33333333-3333-4333-8333-333333333333 + client_amount: '48000.00' + vgo_amount: '0.00' + cleaned_amount: '48000.00' + share_percent: '8.45' + sum_amount: '698000.00' + vgo_amount: '130000.00' + eliminated_auto: '100000.00' + eliminated_manual: '30000.00' + goodwill_adjust: '0.00' + bank_amount: '568000.00' + deviation_amount: '2900.00' + comment: null + - line_code: '1200' + line_name: Итого по разделу II + ordinal: 50 + is_total: true + is_threshold_base: false + companies: + - legal_entity_id: 11111111-1111-4111-8111-111111111111 + client_amount: '520000.00' + vgo_amount: '120000.00' + cleaned_amount: '400000.00' + share_percent: '70.42' + - legal_entity_id: 22222222-2222-4222-8222-222222222222 + client_amount: '130000.00' + vgo_amount: '10000.00' + cleaned_amount: '120000.00' + share_percent: '21.13' + - legal_entity_id: 33333333-3333-4333-8333-333333333333 + client_amount: '48000.00' + vgo_amount: '0.00' + cleaned_amount: '48000.00' + share_percent: '8.45' + sum_amount: '698000.00' + vgo_amount: '130000.00' + eliminated_auto: '100000.00' + eliminated_manual: '30000.00' + goodwill_adjust: '0.00' + bank_amount: '568000.00' + deviation_amount: null + comment: null + - line_code: '1600' + line_name: БАЛАНС + ordinal: 60 + is_total: true + is_threshold_base: false + companies: + - legal_entity_id: 11111111-1111-4111-8111-111111111111 + client_amount: '590000.00' + vgo_amount: '187500.00' + cleaned_amount: '402500.00' + share_percent: '68.39' + - legal_entity_id: 22222222-2222-4222-8222-222222222222 + client_amount: '130000.00' + vgo_amount: '10000.00' + cleaned_amount: '120000.00' + share_percent: '20.39' + - legal_entity_id: 33333333-3333-4333-8333-333333333333 + client_amount: '48000.00' + vgo_amount: '0.00' + cleaned_amount: '48000.00' + share_percent: '8.16' + sum_amount: '768000.00' + vgo_amount: '197500.00' + eliminated_auto: '165000.00' + eliminated_manual: '32500.00' + goodwill_adjust: '18000.00' + bank_amount: '588500.00' + deviation_amount: null + comment: null + - line_code: '1310' + line_name: Уставный капитал + ordinal: 70 + is_total: false + is_threshold_base: false + companies: + - legal_entity_id: 11111111-1111-4111-8111-111111111111 + client_amount: '100000.00' + vgo_amount: '0.00' + cleaned_amount: '100000.00' + share_percent: '92.59' + - legal_entity_id: 22222222-2222-4222-8222-222222222222 + client_amount: '40000.00' + vgo_amount: '32000.00' + cleaned_amount: '8000.00' + share_percent: '7.41' + - legal_entity_id: 33333333-3333-4333-8333-333333333333 + client_amount: '10000.00' + vgo_amount: '10000.00' + cleaned_amount: '0.00' + share_percent: '0.00' + sum_amount: '150000.00' + vgo_amount: '42000.00' + eliminated_auto: '42000.00' + eliminated_manual: '0.00' + goodwill_adjust: '0.00' + bank_amount: '108000.00' + deviation_amount: '0.00' + comment: null + - line_code: '1350' + line_name: Добавочный капитал (без переоценки) + ordinal: 80 + is_total: false + is_threshold_base: false + companies: + - legal_entity_id: 11111111-1111-4111-8111-111111111111 + client_amount: '0.00' + vgo_amount: '0.00' + cleaned_amount: '0.00' + share_percent: null + - legal_entity_id: 22222222-2222-4222-8222-222222222222 + client_amount: '0.00' + vgo_amount: '0.00' + cleaned_amount: '0.00' + share_percent: null + - legal_entity_id: 33333333-3333-4333-8333-333333333333 + client_amount: '3000.00' + vgo_amount: '3000.00' + cleaned_amount: '0.00' + share_percent: null + sum_amount: '3000.00' + vgo_amount: '3000.00' + eliminated_auto: '3000.00' + eliminated_manual: '0.00' + goodwill_adjust: '0.00' + bank_amount: '0.00' + deviation_amount: '0.00' + comment: null + - line_code: '1370' + line_name: Нераспределенная прибыль (непокрытый убыток) + ordinal: 90 + is_total: false + is_threshold_base: false + companies: + - legal_entity_id: 11111111-1111-4111-8111-111111111111 + client_amount: '280000.00' + vgo_amount: '0.00' + cleaned_amount: '280000.00' + share_percent: '106.46' + - legal_entity_id: 22222222-2222-4222-8222-222222222222 + client_amount: '-20000.00' + vgo_amount: '0.00' + cleaned_amount: '-20000.00' + share_percent: '-7.60' + - legal_entity_id: 33333333-3333-4333-8333-333333333333 + client_amount: '5000.00' + vgo_amount: '2000.00' + cleaned_amount: '3000.00' + share_percent: '1.14' + sum_amount: '265000.00' + vgo_amount: '2000.00' + eliminated_auto: '2000.00' + eliminated_manual: '0.00' + goodwill_adjust: '0.00' + bank_amount: '263000.00' + deviation_amount: '0.00' + comment: null + - line_code: '1300' + line_name: Итого по разделу III + ordinal: 100 + is_total: true + is_threshold_base: true + companies: + - legal_entity_id: 11111111-1111-4111-8111-111111111111 + client_amount: '380000.00' + vgo_amount: '0.00' + cleaned_amount: '380000.00' + share_percent: '102.43' + - legal_entity_id: 22222222-2222-4222-8222-222222222222 + client_amount: '20000.00' + vgo_amount: '32000.00' + cleaned_amount: '-12000.00' + share_percent: '-3.23' + - legal_entity_id: 33333333-3333-4333-8333-333333333333 + client_amount: '18000.00' + vgo_amount: '15000.00' + cleaned_amount: '3000.00' + share_percent: '0.81' + sum_amount: '418000.00' + vgo_amount: '47000.00' + eliminated_auto: '47000.00' + eliminated_manual: '0.00' + goodwill_adjust: '0.00' + bank_amount: '371000.00' + deviation_amount: null + comment: null + - line_code: '1410' + line_name: Заемные средства + ordinal: 110 + is_total: false + is_threshold_base: false + companies: + - legal_entity_id: 11111111-1111-4111-8111-111111111111 + client_amount: '50000.00' + vgo_amount: '0.00' + cleaned_amount: '50000.00' + share_percent: '100.00' + - legal_entity_id: 22222222-2222-4222-8222-222222222222 + client_amount: '0.00' + vgo_amount: '0.00' + cleaned_amount: '0.00' + share_percent: '0.00' + - legal_entity_id: 33333333-3333-4333-8333-333333333333 + client_amount: '0.00' + vgo_amount: '0.00' + cleaned_amount: '0.00' + share_percent: '0.00' + sum_amount: '50000.00' + vgo_amount: '0.00' + eliminated_auto: '0.00' + eliminated_manual: '0.00' + goodwill_adjust: '0.00' + bank_amount: '50000.00' + deviation_amount: '0.00' + comment: null + - line_code: '1400' + line_name: Итого по разделу IV + ordinal: 120 + is_total: true + is_threshold_base: false + companies: + - legal_entity_id: 11111111-1111-4111-8111-111111111111 + client_amount: '50000.00' + vgo_amount: '0.00' + cleaned_amount: '50000.00' + share_percent: '100.00' + - legal_entity_id: 22222222-2222-4222-8222-222222222222 + client_amount: '0.00' + vgo_amount: '0.00' + cleaned_amount: '0.00' + share_percent: '0.00' + - legal_entity_id: 33333333-3333-4333-8333-333333333333 + client_amount: '0.00' + vgo_amount: '0.00' + cleaned_amount: '0.00' + share_percent: '0.00' + sum_amount: '50000.00' + vgo_amount: '0.00' + eliminated_auto: '0.00' + eliminated_manual: '0.00' + goodwill_adjust: '0.00' + bank_amount: '50000.00' + deviation_amount: null + comment: null + - line_code: '1520' + line_name: Кредиторская задолженность + ordinal: 130 + is_total: false + is_threshold_base: false + companies: + - legal_entity_id: 11111111-1111-4111-8111-111111111111 + client_amount: '160000.00' + vgo_amount: '10000.00' + cleaned_amount: '150000.00' + share_percent: '89.55' + - legal_entity_id: 22222222-2222-4222-8222-222222222222 + client_amount: '110000.00' + vgo_amount: '100000.00' + cleaned_amount: '10000.00' + share_percent: '5.97' + - legal_entity_id: 33333333-3333-4333-8333-333333333333 + client_amount: '30000.00' + vgo_amount: '22500.00' + cleaned_amount: '7500.00' + share_percent: '4.48' + sum_amount: '300000.00' + vgo_amount: '132500.00' + eliminated_auto: '100000.00' + eliminated_manual: '32500.00' + goodwill_adjust: '0.00' + bank_amount: '167500.00' + deviation_amount: '40000.00' + comment: 'Расхождение Бета → Альфа по 62/60: акт сверки на 01.10 не получен' + - line_code: '1500' + line_name: Итого по разделу V + ordinal: 140 + is_total: true + is_threshold_base: false + companies: + - legal_entity_id: 11111111-1111-4111-8111-111111111111 + client_amount: '160000.00' + vgo_amount: '10000.00' + cleaned_amount: '150000.00' + share_percent: '89.55' + - legal_entity_id: 22222222-2222-4222-8222-222222222222 + client_amount: '110000.00' + vgo_amount: '100000.00' + cleaned_amount: '10000.00' + share_percent: '5.97' + - legal_entity_id: 33333333-3333-4333-8333-333333333333 + client_amount: '30000.00' + vgo_amount: '22500.00' + cleaned_amount: '7500.00' + share_percent: '4.48' + sum_amount: '300000.00' + vgo_amount: '132500.00' + eliminated_auto: '100000.00' + eliminated_manual: '32500.00' + goodwill_adjust: '0.00' + bank_amount: '167500.00' + deviation_amount: null + comment: null + - line_code: '1700' + line_name: БАЛАНС + ordinal: 150 + is_total: true + is_threshold_base: false + companies: + - legal_entity_id: 11111111-1111-4111-8111-111111111111 + client_amount: '590000.00' + vgo_amount: '10000.00' + cleaned_amount: '580000.00' + share_percent: '98.56' + - legal_entity_id: 22222222-2222-4222-8222-222222222222 + client_amount: '130000.00' + vgo_amount: '132000.00' + cleaned_amount: '-2000.00' + share_percent: '-0.34' + - legal_entity_id: 33333333-3333-4333-8333-333333333333 + client_amount: '48000.00' + vgo_amount: '37500.00' + cleaned_amount: '10500.00' + share_percent: '1.78' + sum_amount: '768000.00' + vgo_amount: '179500.00' + eliminated_auto: '147000.00' + eliminated_manual: '32500.00' + goodwill_adjust: '0.00' + bank_amount: '588500.00' + deviation_amount: null + comment: null + income: + lines: + - line_code: '2110' + line_name: Выручка + ordinal: 10 + is_total: false + is_threshold_base: false + companies: + - legal_entity_id: 11111111-1111-4111-8111-111111111111 + client_amount: '200000.00' + vgo_amount: '10000.00' + cleaned_amount: '190000.00' + share_percent: '70.37' + - legal_entity_id: 22222222-2222-4222-8222-222222222222 + client_amount: '80000.00' + vgo_amount: '0.00' + cleaned_amount: '80000.00' + share_percent: '29.63' + - legal_entity_id: 33333333-3333-4333-8333-333333333333 + client_amount: '0.00' + vgo_amount: '0.00' + cleaned_amount: '0.00' + share_percent: '0.00' + sum_amount: '280000.00' + vgo_amount: '10000.00' + eliminated_auto: '10000.00' + eliminated_manual: '0.00' + goodwill_adjust: '0.00' + bank_amount: '270000.00' + deviation_amount: '0.00' + comment: null + - line_code: '2120' + line_name: Себестоимость продаж + ordinal: 20 + is_total: false + is_threshold_base: false + companies: + - legal_entity_id: 11111111-1111-4111-8111-111111111111 + client_amount: '-120000.00' + vgo_amount: '0.00' + cleaned_amount: '-120000.00' + share_percent: '70.59' + - legal_entity_id: 22222222-2222-4222-8222-222222222222 + client_amount: '-60000.00' + vgo_amount: '-10000.00' + cleaned_amount: '-50000.00' + share_percent: '29.41' + - legal_entity_id: 33333333-3333-4333-8333-333333333333 + client_amount: '0.00' + vgo_amount: '0.00' + cleaned_amount: '0.00' + share_percent: '0.00' + sum_amount: '-180000.00' + vgo_amount: '-10000.00' + eliminated_auto: '-10000.00' + eliminated_manual: '0.00' + goodwill_adjust: '0.00' + bank_amount: '-170000.00' + deviation_amount: '0.00' + comment: null + - line_code: '2100' + line_name: Валовая прибыль (убыток) + ordinal: 30 + is_total: true + is_threshold_base: false + companies: + - legal_entity_id: 11111111-1111-4111-8111-111111111111 + client_amount: '80000.00' + vgo_amount: '10000.00' + cleaned_amount: '70000.00' + share_percent: '70.00' + - legal_entity_id: 22222222-2222-4222-8222-222222222222 + client_amount: '20000.00' + vgo_amount: '-10000.00' + cleaned_amount: '30000.00' + share_percent: '30.00' + - legal_entity_id: 33333333-3333-4333-8333-333333333333 + client_amount: '0.00' + vgo_amount: '0.00' + cleaned_amount: '0.00' + share_percent: '0.00' + sum_amount: '100000.00' + vgo_amount: '0.00' + eliminated_auto: '0.00' + eliminated_manual: '0.00' + goodwill_adjust: '0.00' + bank_amount: '100000.00' + deviation_amount: null + comment: null + - line_code: '2210' + line_name: Коммерческие расходы + ordinal: 40 + is_total: false + is_threshold_base: false + companies: + - legal_entity_id: 11111111-1111-4111-8111-111111111111 + client_amount: '-20000.00' + vgo_amount: '0.00' + cleaned_amount: '-20000.00' + share_percent: '80.00' + - legal_entity_id: 22222222-2222-4222-8222-222222222222 + client_amount: '-5000.00' + vgo_amount: '0.00' + cleaned_amount: '-5000.00' + share_percent: '20.00' + - legal_entity_id: 33333333-3333-4333-8333-333333333333 + client_amount: '0.00' + vgo_amount: '0.00' + cleaned_amount: '0.00' + share_percent: '0.00' + sum_amount: '-25000.00' + vgo_amount: '0.00' + eliminated_auto: '0.00' + eliminated_manual: '0.00' + goodwill_adjust: '0.00' + bank_amount: '-25000.00' + deviation_amount: '0.00' + comment: null + - line_code: '2220' + line_name: Управленческие расходы + ordinal: 50 + is_total: false + is_threshold_base: false + companies: + - legal_entity_id: 11111111-1111-4111-8111-111111111111 + client_amount: '-10000.00' + vgo_amount: '0.00' + cleaned_amount: '-10000.00' + share_percent: '100.00' + - legal_entity_id: 22222222-2222-4222-8222-222222222222 + client_amount: '0.00' + vgo_amount: '0.00' + cleaned_amount: '0.00' + share_percent: '0.00' + - legal_entity_id: 33333333-3333-4333-8333-333333333333 + client_amount: '0.00' + vgo_amount: '0.00' + cleaned_amount: '0.00' + share_percent: '0.00' + sum_amount: '-10000.00' + vgo_amount: '0.00' + eliminated_auto: '0.00' + eliminated_manual: '0.00' + goodwill_adjust: '0.00' + bank_amount: '-10000.00' + deviation_amount: '0.00' + comment: null + - line_code: '2200' + line_name: Прибыль (убыток) от продаж + ordinal: 60 + is_total: true + is_threshold_base: false + companies: + - legal_entity_id: 11111111-1111-4111-8111-111111111111 + client_amount: '50000.00' + vgo_amount: '10000.00' + cleaned_amount: '40000.00' + share_percent: '61.54' + - legal_entity_id: 22222222-2222-4222-8222-222222222222 + client_amount: '15000.00' + vgo_amount: '-10000.00' + cleaned_amount: '25000.00' + share_percent: '38.46' + - legal_entity_id: 33333333-3333-4333-8333-333333333333 + client_amount: '0.00' + vgo_amount: '0.00' + cleaned_amount: '0.00' + share_percent: '0.00' + sum_amount: '65000.00' + vgo_amount: '0.00' + eliminated_auto: '0.00' + eliminated_manual: '0.00' + goodwill_adjust: '0.00' + bank_amount: '65000.00' + deviation_amount: null + comment: null + warnings: + - code: FORM_MISSING + message: Нет подтверждённой формы ОФР у ООО «Гамма» + legal_entity_id: 33333333-3333-4333-8333-333333333333 + statement_type: income + count: null + '403': + description: Нет права KFO_VIEW + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorOut' + '404': + description: Версия не найдена или вне видимости — NOT_FOUND + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorOut' + /api/v1/consolidations/versions/{version_id}/kfo/annotations: + put: + tags: + - consolidations + summary: Ручные поля КФО + description: Право CONSOLIDATION_EDIT, блокировка версии. Комментарии строк, обоснование порога, причины отклонений + от Методики — одной транзакцией; отсутствующее поле не меняется, null очищает. Аудит KFO_EDIT. Ответ — KfoResultOut + целиком. + operationId: kfo_annotations_put + security: + - bearerAuth: [] + parameters: *id001 + requestBody: + required: true + content: + application/json: + schema: + $ref: '#/components/schemas/KfoAnnotationsIn' + examples: + justify: + summary: Обоснование и комментарий строки + value: + comments: + - statement_type: balance + line_code: '1520' + comment: 'Расхождение Бета → Альфа по 62/60: акт сверки на 01.10 не получен' + threshold_justification: Расхождение по 1520 — Бета → Альфа, сверка в работе; риск принят + responses: + '200': + description: Результат КФО после сохранения + content: + application/json: + schema: + $ref: '#/components/schemas/KfoResultOut' + '403': + description: Нет права CONSOLIDATION_EDIT + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorOut' + '404': + description: NOT_FOUND + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorOut' + '409': + description: VERSION_NOT_EDITABLE | LOCK_REQUIRED | LOCKED_BY_OTHER + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorOut' + '422': + description: UNKNOWN_LINE (detail.statement_type, detail.line_code) или массив ошибок валидации тела (длины 2000/4000) + content: + application/json: + schema: + oneOf: + - $ref: '#/components/schemas/ErrorOut' + - type: object +components: + schemas: + KfoLineCompanyOut: + type: object + additionalProperties: false + properties: + legal_entity_id: + type: string + format: uuid + client_amount: + type: string + pattern: ^-?\d{1,16}\.\d{2}$ + examples: &id002 + - '588500.00' + description: «По данным клиента», тыс. руб.; строки расходов приведены к −|x| (§8 «КФО» п. 2) + vgo_amount: + type: string + pattern: ^-?\d{1,16}\.\d{2}$ + examples: *id002 + description: «В т. ч. взаимные», тыс. руб. до целых, со знаком строки (п. 6) + cleaned_amount: + type: string + pattern: ^-?\d{1,16}\.\d{2}$ + examples: *id002 + description: «Очищенные показатели» = client_amount − vgo_amount + share_percent: + type: &id004 + - string + - 'null' + pattern: ^-?\d{1,5}\.\d{2}$ + description: «Доля в показателе по группе, %» от bank_amount строки; null при нулевом итоге + required: + - legal_entity_id + - client_amount + - vgo_amount + - cleaned_amount + - share_percent + KfoLineOut: + type: object + additionalProperties: false + properties: + line_code: + type: string + description: код строки бланка редакции на отчётную дату или GOODWILL + line_name: + type: string + ordinal: + type: integer + description: порядок строки в бланке + is_total: + type: boolean + description: итоговая строка бланка (1100, 1600, 2100 …) + is_threshold_base: + type: boolean + description: строка — база порога (1300, 1600, 2110 или 2200), подсветка при превышении + companies: + type: array + items: + $ref: '#/components/schemas/KfoLineCompanyOut' + description: по компаниям в порядке KfoResultOut.companies; у GOODWILL — пусто + sum_amount: + type: string + pattern: ^-?\d{1,16}\.\d{2}$ + examples: *id002 + description: Σ client_amount + vgo_amount: + type: string + pattern: ^-?\d{1,16}\.\d{2}$ + examples: *id002 + description: Σ vgo_amount = eliminated_auto + eliminated_manual + eliminated_auto: &id003 + type: string + pattern: ^-?\d{1,16}\.\d{2}$ + examples: *id002 + eliminated_manual: *id003 + goodwill_adjust: + type: string + pattern: ^-?\d{1,16}\.\d{2}$ + examples: *id002 + description: Σ G — у GOODWILL и итогов 1100, 1600 + bank_amount: + type: string + pattern: ^-?\d{1,16}\.\d{2}$ + examples: *id002 + description: «КФО, подготовленная банком» = sum_amount − vgo_amount + goodwill_adjust + deviation_amount: + type: + - string + - 'null' + pattern: ^-?\d{1,16}\.\d{2}$ + description: «Расхождения» (§8 «КФО» п. 9); у итогов — null + comment: + type: + - string + - 'null' + maxLength: 2000 + required: + - line_code + - line_name + - ordinal + - is_total + - is_threshold_base + - companies + - sum_amount + - vgo_amount + - eliminated_auto + - eliminated_manual + - goodwill_adjust + - bank_amount + - deviation_amount + - comment + KfoStatementOut: + type: object + additionalProperties: false + properties: + lines: + type: array + items: + $ref: '#/components/schemas/KfoLineOut' + required: + - lines + KfoThresholdOut: + type: object + additionalProperties: false + properties: + deviation_total: *id003 + base_kind: + type: string + enum: + - NET_ASSETS + - BALANCE_TOTAL + - SALES_PROFIT + - REVENUE + base_amount: *id003 + limit_percent: + type: string + enum: + - '10.00' + - '1.00' + limit_amount: *id003 + deviation_percent: + type: *id004 + pattern: ^-?\d{1,5}\.\d{2}$ + description: deviation_total / base_amount × 100; null при нулевой базе + exceeded: + type: boolean + description: deviation_total > limit_amount (равно — норма) + required: + - deviation_total + - base_kind + - base_amount + - limit_percent + - limit_amount + - deviation_percent + - exceeded + KfoSummaryOut: + type: object + additionalProperties: false + properties: + balance: + $ref: '#/components/schemas/KfoThresholdOut' + income: + $ref: '#/components/schemas/KfoThresholdOut' + required: + - balance + - income + KfoCompanyOut: + type: object + additionalProperties: false + properties: + legal_entity_id: + type: string + format: uuid + name: + type: string + inn: + type: string + required: + - legal_entity_id + - name + - inn + KfoCorrectionsOut: + type: object + additionalProperties: false + properties: + count: + type: integer + minimum: 0 + amount: *id003 + required: + - count + - amount + description: агрегаты с применённой корректировкой и Σ их исключений, тыс. руб. + KfoRequisitesOut: + type: object + additionalProperties: false + properties: + company_group_name: + type: string + related_group_name: + type: + - string + - 'null' + reporting_date: + type: string + format: date + version_no: + type: integer + version_status: + type: string + description: consolidation_version.status + scenario: + type: string + enum: + - CREATE + - CONFIRM + approach: + type: string + enum: + - BASIC + - EXTENDED + methodology_deviations: + type: + - string + - 'null' + maxLength: 4000 + uob_decision_no: + type: + - string + - 'null' + uob_decision_date: + type: + - string + - 'null' + format: date + corrections_balance: + $ref: '#/components/schemas/KfoCorrectionsOut' + corrections_income: + $ref: '#/components/schemas/KfoCorrectionsOut' + required: + - company_group_name + - related_group_name + - reporting_date + - version_no + - version_status + - scenario + - approach + - methodology_deviations + - uob_decision_no + - uob_decision_date + - corrections_balance + - corrections_income + KfoGoodwillOut: + type: object + additionalProperties: false + properties: + enabled: + type: boolean + total: *id003 + required: + - enabled + - total + KfoWarningOut: + type: object + additionalProperties: false + properties: + code: + type: string + enum: + - FORM_MISSING + - FORM_AMBIGUOUS + - FORM_UNITS_UNKNOWN + - LINE_OUTSIDE_BLANK + - UNALLOCATED_ROWS + - INCOME_RULES_MISSING + - GOODWILL_NOT_APPLIED + - GOODWILL_ROW_REASSIGNED + message: + type: string + legal_entity_id: + type: + - string + - 'null' + format: uuid + statement_type: + type: + - string + - 'null' + enum: + - balance + - income + - null + count: + type: + - integer + - 'null' + required: + - code + - message + KfoResultOut: + type: object + additionalProperties: false + properties: + version_id: + type: string + format: uuid + computed_at: + type: string + format: date-time + is_frozen: + type: boolean + editable: + type: boolean + read_only_reason: + type: + - string + - 'null' + enum: + - VERSION_NOT_EDITABLE + - LOCK_REQUIRED + - LOCKED_BY_OTHER + - null + units: + type: string + const: thousand_rub + companies: + type: array + items: + $ref: '#/components/schemas/KfoCompanyOut' + requisites: + $ref: '#/components/schemas/KfoRequisitesOut' + summary: + $ref: '#/components/schemas/KfoSummaryOut' + justification_required: + type: boolean + threshold_justification: + type: + - string + - 'null' + maxLength: 4000 + goodwill: + $ref: '#/components/schemas/KfoGoodwillOut' + balance: + $ref: '#/components/schemas/KfoStatementOut' + income: + $ref: '#/components/schemas/KfoStatementOut' + warnings: + type: array + items: + $ref: '#/components/schemas/KfoWarningOut' + required: + - version_id + - computed_at + - is_frozen + - editable + - read_only_reason + - units + - companies + - requisites + - summary + - justification_required + - threshold_justification + - goodwill + - balance + - income + - warnings + KfoCommentIn: + type: object + additionalProperties: false + properties: + statement_type: + type: string + enum: + - balance + - income + line_code: + type: string + comment: + type: + - string + - 'null' + maxLength: 2000 + required: + - statement_type + - line_code + - comment + KfoAnnotationsIn: + type: object + additionalProperties: false + properties: + comments: + type: array + items: + $ref: '#/components/schemas/KfoCommentIn' + threshold_justification: + type: + - string + - 'null' + maxLength: 4000 + methodology_deviations: + type: + - string + - 'null' + maxLength: 4000 + required: [] + description: Отсутствующее поле не меняется, null — очищает + ErrorDetail: + type: object + additionalProperties: false + properties: + code: + type: string + message: + type: string + line_code: + type: + - string + - 'null' + statement_type: + type: + - string + - 'null' + required: + - code + - message + ErrorOut: + type: object + additionalProperties: false + properties: + detail: + $ref: '#/components/schemas/ErrorDetail' + required: + - detail + securitySchemes: + bearerAuth: + type: http + scheme: bearer + bearerFormat: JWT diff --git a/dev/frontend-api-guide.md b/dev/frontend-api-guide.md index 0e7b9ea..af9bb24 100644 --- a/dev/frontend-api-guide.md +++ b/dev/frontend-api-guide.md @@ -653,6 +653,13 @@ legal_entity_id, counterparty_id, account_id, account_code, closing_debit?, clos Суммы — строки в рублях с двумя знаками, со знаком (как в шахматке); `deviation_amount = |ΣA − ΣB|`, `deviation_percent` — к меньшей стороне, `null`, если она ≤ 0. Упаковка сумму элиминации не меняет: в КФО идёт `eliminated_amount` тройки. +### 5.7.3 Результат КФО (AURORA-1546/1547; контракт до реализации) + +Вкладка «КФО» отчёта версии: `GET …/kfo` (право `KFO_VIEW`) и `PUT …/kfo/annotations` (`CONSOLIDATION_EDIT`, блокировка +версии). **Деньги — в тыс. руб.** (`units = "thousand_rub"`), не в рублях, как в остальных разделах. Полностью — +`dev/api-contract-kfo.md` и `dev/api-contract-kfo.openapi.yaml` (три полных примера ответа для фейка); правила — +`05-domain-rules.md` §8 «КФО». + ### 5.8 Схемы ответов (кратко) Поля с `?` могут быть `null`, но ключ присутствует всегда. Полные схемы — `/openapi.json` и контракты по областям.