КОНТРОЛЬ КАЧЕСТВАP0L3

Парная сверка межфирменных остатков до консолидации

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

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

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

Перед консолидацией нужно выяснить, почему требование компании A к компании B отличается от встречного обязательства B перед A. Это сравнение двух самостоятельных учётных представлений, а не проверка копии одного набора событий. Разные локальные идентификаторы документов допустимы; равенство сумм без подтверждённой связи документов недостаточно.

Ниже предложен проектный контракт EDWH для торговой дебиторской и кредиторской задолженности внутри согласованного периметра группы. Алгоритм элиминации, трансляция зарубежных операций, займы и полный процесс консолидации вне рамок. Правила сопоставления и допуска расхождений не объявляются требованиями IFRS. Материал не описывает опыт автора или реализацию лаборатории.

Зерно, идентичность и знаки#

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

Версионируемое отображение справочников связывает локального клиента или поставщика с юридическим лицом группы. Проверяют обратность: A указывает партнёра B, а B указывает партнёра A. Неизвестное или неоднозначное отображение блокирует автоматическое сопоставление. Канонический ключ пары упорядочивает два устойчивых ID, но сохраняет направление требования. Встречные требования A к B и B к A не взаимозачитывают автоматически.

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

Согласованный срез и валюты#

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

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

Сопоставление и частичное совпадение#

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

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

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

Воспроизводимость обеспечивают run_id, версии входов и правил, список членов группы, результаты и история решений. Альтернатива документному matching - сверка агрегатов по паре и валюте: она дешевле, но не объясняет компенсирующие ошибки и требует явно ограниченного вывода.

Пример и инварианты#

Синтетическая арифметическая иллюстрация в целых копейках RUB: A показывает требование +10000, B показывает две связанные позиции -6000 и -3000. Для группы разница равна 10000 - 6000 - 3000 = 1000. Можно назначить 9000 с каждой стороны, оставив у A 1000. Это частичное согласование, а не полное совпадение. Без подтверждённой общей ссылки даже совпавшие 9000 остаются кандидатом.

Контрольные инварианты проектного контракта:

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

Исполняемых SQL/Python примеров здесь нет; алгоритм и арифметическая иллюстрация не являются проверенным кодом и не зависят от поведения конкретной СУБД.

Причины расхождений и решение#

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

Допуск классифицирует величину, но не удаляет её. Результат различает точное совпадение, частичное совпадение, неоднозначность, отсутствие встречной позиции и неполный вход. Принятие объяснённого расхождения ответственными сторонами сохраняется отдельно от числового результата. Исправление приходит новой версией входа или отдельной учётной корректировкой; прежний протокол остаётся доступным.

Источники и самостоятельная подготовка#

Обзор SAP Learning рассматривает matching и reconciliation в SAP S/4HANA, включая причины расхождений по времени и валюте. Manage Assignments описывает работу с назначениями ведущей и партнёрской стороны. Это примеры возможностей продукта, а не спецификация предложенного EDWH-контракта. Для внедрения нужно отдельно выбрать релиз и проверить доступные функции; статья не даёт инструкций настройки SAP.

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

После согласования документов см. исключение внутригрупповых оборотов: сверка задолженности сама по себе не подтверждает согласование дохода и расхода для консолидационной корректировки.

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

  1. SAP Learning - Intercompany Matching and Reconciliation Overview ↗
  2. SAP S/4HANA - Manage Assignments ↗

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