ФИНАНСОВАЯ ОБЛАСТЬP0L3

Исключение внутригрупповых оборотов в EDWH-витрине

Контракт исключения согласованных доходов и расходов: периметр, валютный basis, версии правил, баланс корректировок и защита от повторного применения.

Справочный материал. Контракты данных, архитектурные решения и ограничения применения. Источники приведены в материалах, где используются внешние основания.

Задача и границы#

В самостоятельной отчётности компании A доход от услуги компании B и расход B допустимы, но групповой показатель должен учитывать утверждённые консолидационные корректировки. Задача EDWH - сохранить исходные обороты и отдельно построить воспроизводимый слой исключений, а не удалить внутренние операции из журналов компаний.

Рассматривается проектный контракт для согласованной услуги, полностью признанной доходом и расходом в одном периоде двумя компаниями выбранного периметра. Исключение остатков задолженности, нереализованной прибыли в запасах, инвестиций, налоговых эффектов, денежных потоков и изменение периметра внутри периода вне рамок. Это не полная реализация консолидации, не лабораторный результат и не опыт автора. Исполняемых SQL/Python примеров нет.

Стандарт, продукт и проектное решение#

Официальный обзор IFRS 10 определяет консолидированную отчётность как представление группы в качестве единой экономической единицы. Обзор не задаёт ключей EDWH, очередности загрузок или политики обработки расхождений. Применимую редакцию полного стандарта и учётную политику определяет ответственный за отчётность; доступ к полному тексту может требовать регистрации или подписки.

Урок SAP показывает вариант, где инициатором исключения доходов и затрат служат данные продавца, а записи создаются для обеих сторон. Это свойство описанного продуктового сценария, а не универсальный алгоритм. Ниже выбран более узкий двухсторонний контракт: он требует подтверждённых оборотов обеих сторон. При отсутствии детализации покупателя нельзя заявлять документное согласование; односторонний метод потребует отдельной политики и контролей. Статья не является инструкцией настройки конкретного релиза SAP и не утверждает поведения какой-либо СУБД.

Зерно, пара, период и версии#

Зерно входа - строка признанного дохода или расхода по документу услуги в зафиксированном снимке книги юридического лица. Ключ включает систему, юридическое лицо, книгу, документ, строку и версию события. Дебет положителен, кредит отрицателен: доход A имеет отрицательный знак, расход B положительный. Это соглашение примера. Сумма хранится в целых минимальных единицах с явно закреплёнными валютой и масштабом.

Пара имеет канонический ключ двух компаний, но направление продавец-покупатель сохраняется. Обе компании должны входить в одну утверждённую версию периметра. business_date относит оборот к периоду, observed_at ограничивает известность версии единым cutoff с часовым поясом. Фиксируют также полноту источников: отсутствие расхода в неполном снимке не означает нулевой расход.

Зерно выхода - строка консолидационной корректировки внутри документа исключения, отдельно от локального учёта. Манифест выпуска содержит release_id, период, группу, версии периметра, входов, правил исключения, отображения статей, валютного basis и протокола согласования. Версия правила закрепляет допустимые статьи, направления, критерии допуска, знаки и порядок обработки разницы; изменение правила создаёт новый выпуск.

Согласование входа и порядок валютного basis#

Межфирменная сверка разбирает остатки требований и обязательств. Её результат помогает установить связь документов, но не доказывает равенство оборотов дохода и расхода: оплата могла закрыть задолженность, а расход мог быть капитализирован. Здесь нужен отдельный протокол согласования именно признанных оборотов услуги с их исходными строками и версиями. Алгоритм поиска пар повторно не рассматривается.

До исключения проверяют принадлежность периметру, период, встречность партнёров, отсутствие повторного назначения строк и подтверждение допуска. Частичное совпадение, неизвестный партнёр и неполный вход блокируют автоматическое исключение этой группы в выбранном узком контракте. Допуск не разрешает молча удалить разницу. Коррекция источника или отдельное утверждённое решение сохраняются с происхождением; это проектная политика допуска, а не разрешение оставить обязательное бухгалтерское исключение невыполненным. Нерешённые группы блокируют готовность соответствующего выпуска.

Сначала согласуют экономическую величину в валюте операции, затем приводят обе стороны к утверждённому basis групповой витрины, затем формируют корректировки в этом же basis. Не сравнивают непосредственно разные функциональные валюты. Контракт конвертации задаёт курс, направление котировки, дату, версию и округление. Разные курсы могут дать разные групповые суммы даже при совпадении исходных величин. Разницу пересчёта отделяют от расхождения операции; порядок её признания задаёт отдельная учётная политика. Самостоятельный выбор общего курса ради равенства сторон недопустим.

Синтетический пример и симметричность#

Допустим, утверждённый basis - RUB с масштабом 2, обе стороны уже приведены к нему без разницы пересчёта. A признала доход -10000 копеек, B расход +10000 копеек за полностью потреблённую услугу. Обе строки принадлежат одному периоду и подтверждённой группе согласования.

Строка До исключения, копейки RUB Корректировка После исключения
Доход A -10000 +10000 0
Расход B +10000 -10000 0
Сумма двух строк 0 0 0

Корректировка дебетует доход и кредитует расход в консолидационном слое. Симметричность означает, что обе стороны одной допустимой операции исключены согласованно, а не что каждая компания получила самостоятельный сбалансированный локальный документ. В примере баланс проверяется у документа исключения на уровне группы в одной валюте. Если модель требует баланс по каждой единице, нужны отдельно утверждённые технические встречные статьи и контроль их погашения на уровне группы.

При расходе B +9900 копеек простое обращение знаков даст несбалансированную корректировку +100. Исключить по 10000 с обеих сторон тоже неверно: у B появится остаток -100. Выбранный контракт блокирует такой документ до решения расхождения. Нулевая общая сумма исходного набора ничего не доказывает: доход и расход проверяют раздельно. Арифметика таблицы является иллюстрацией, не результатом исполнения кода.

Повторное применение и альтернативы#

Псевдокод процесса, не проверенная реализация:

Закрепить исходный снимок без консолидационных корректировок.
Проверить входы, версии правил и протоколы согласования оборотов.
Получить допустимые группы в утверждённом валютном basis.
Сформировать документ исключения и связи с исходными строками.
Проверить баланс, покрытие и отсутствие повторного использования.
Опубликовать целый выпуск исходных данных и корректировок.

Идентичность логического документа включает группу, период, basis, правило и группу согласования в пределах выпуска. run_id попытки исполнения хранится отдельно: новый запуск не создаёт новое экономическое исключение. Повтор тех же зависимостей должен дать тот же набор строк; конфликт содержания под тем же ключом блокируется. Генератор никогда не читает собственные исключения как исходный оборот.

При изменении входов или правил новый выпуск заменяет активное представление целиком; прежний остаётся для аудита. Нельзя суммировать корректировки старого и нового выпуска. Альтернатива для накопительного журнала - явное сторно прежнего документа и новый документ, с отдельной проверкой цепочки. Смешивать эти стратегии опасно. Согласованное переключение результата - требование проекта; механизмы транзакций и конкурентного доступа выбранной СУБД требуют самостоятельной проверки.

Контроли, связи и вопросы#

Для каждой группы и валютного basis проверяют баланс документа, противоположность корректировок допущенным входным суммам по каждой статье, охват обеих сторон и уникальность использования исходной доли. Отдельно проверяют, что внешние обороты не изменились, исключённые суммы не превысили допущенные и итог равен исходному набору плюс корректировки выбранного выпуска. Баланс всей витрины не заменяет эти проверки.

Граничные случаи: позднее сторно, разные периоды признания, отрицательная услуга/возврат, повторная доставка, смена периметра, отсутствующий курс и уже исключённый вход. Для возврата применяют знаковую корректировку подтверждённой операции, а не модуль суммы. Позднее изменение инвалидирует затронутый выпуск по контракту закрытия; lineage показателя связывает каждую корректировку с входными строками, согласованием и версией правила. Это перечень требуемых проверок будущей реализации, не заявление об успешных тестах.

  1. Почему сверка погашенной задолженности не доказывает согласование дохода и расхода?
  2. Где должен балансироваться документ, если корректировки распределены между компаниями?
  3. Как повторный запуск после смены курса может удвоить исключение и как этого избежать?

Источники и документация

  1. IFRS Foundation - IFRS 10 ↗
  2. SAP Learning - Eliminating Intercompany Revenue and Cost ↗

Источники нужны для самостоятельной проверки. Примеры и интерпретации на сайте могут быть учебными упрощениями.