arm-ka-docs/source/tz/АРМ КА.Техническое задание - 07_8. Формирование отчетов - 05_Сводная ОСВ.md

18 KiB
Raw Blame History

code, title
code title
DOC-221278 Сводная ОСВ

Сводная ОСВ

Макрос "Оглавление"

Описание:

Сводная ОСВ - это единая оборотно-сальдовая ведомость по всем компаниям группы, собранная в одном месте и приведенная к общему виду. У каждой компании периметра есть свои ОСВ, выгруженные поквартально, сводная ОСВ собирает их в единый набор строк. Суммы остаются исходными, сервис дополняет каждую строку недостающими признаками (Тип контрагента) и приводит значения к единому виду.

Отдельные ОСВ компаний между собой могут отличаться - контрагент указан текстом (иногда присутствует ИНН), из-за чего нельзя понять внутригрупповая это операция или расчет с внешним контрагентом. Сводная ОСВ становится единым источником данных, из которого дальше строятся все отчеты - Шахматка, Гудвилл, таблица корректировок, консолидированный отчет. Сводная ОСВ ничего не исключает, ее задача подготовить данные, а исключение внутригрупповых оборотов происходит в других таблицах.

Формирование ОСВ:

  • Проверка загруженных ОСВ - по каждой компании периметра должны быть загружены все обязательные ОСВ.
  • Контрагент, записанный в строке текстом, сопоставляется со справочником организаций - сначала по ИНН, затем по наименованию и синонимам. Каждой строке проставляется признак: ГСК (контрагент входит в периметр), ГК (входит в группу, но не в периметр) или Внешний.
  • В результате получается единый набор строк. У каждой строки видна - компания, номер счета, контрагент, признак контрагента, сальдо на начало и конец, обороты за период.

Источник данных:

consolidation related_group_id Идентификатор ГСК, для которой выполняется консолидация SELECT c.related_group_id, c.year, c.quarter, rg.company_group_id FROM consolidation_version cv JOIN consolidation c ON c.id = cv.consolidation_id JOIN related_group rg ON rg.id = c.related_group_id WHERE cv.id = consolidation_version_id*
consolidation year Отчетный год
consolidation quarter Отчетный квартал
related_group company_group_id ГК, к которой относится ГСК. Используется для определения типа контрагента
consolidation_member legal_entity_id Организация, включенная в периметр выбранной версии консолидации SELECT cm.legal_entity_id, le.name, le.inn FROM consolidation_member cm JOIN legal_entity le ON le.id = cm.legal_entity_id WHERE cm.consolidation_version_id = consolidation_version_id*
legal_entity name Наименование организации в колонке Компания ГК
legal_entity inn ИНН организации-владельца ОСВ
stored_file id Идентификатор файла ОСВ SELECT sf.id, sf.legal_entity_id, sf.period_year, sf.period_quarter, sf.current_recognition_job_id FROM stored_file sf JOIN recognition_job rj ON rj.id = sf.current_recognition_job_id AND rj.file_id = sf.id WHERE sf.legal_entity_id = legal_entity_ids* AND sf.document_type = 'ОСВ' AND sf.period_year = period_year* AND sf.period_quarter = period_quarter* AND sf.status = 'Загружен' AND rj.status = 'done'
stored_file legal_entity_id Организация-владелец файла ОСВ
stored_file period_year Год, за который загружена ОСВ
stored_file period_quarter Квартал, за который загружена ОСВ
stored_file current_recognition_job_id Авторитетный прогон распознавания
recognition_job status Статус распознавания. Используются задания со статусом done
osv_entry id Идентификатор исходной строки ОСВ SELECT oe.id, oe.recognition_job_id, oe.account_code, oe.account_id, oe.account_root, oe.counterparty_name, oe.counterparty_inn, oe.counterparty_id, oe.opening_debit, oe.opening_credit, oe.turnover_debit, oe.turnover_credit, oe.closing_debit, oe.closing_credit FROM osv_entry oe WHERE oe.recognition_job_id = recognition_job_id*
osv_entry account_code Исходный код счета из файла ОСВ
osv_entry account_id Ссылка на нормализованный счет
osv_entry account_root Корневой счет
osv_entry counterparty_name Наименование контрагента для колонки Контрагенты
osv_entry counterparty_inn ИНН контрагента для колонки ИНН
osv_entry counterparty_id Сопоставленная организация-контрагент
osv_entry opening_debit Сальдо на начало периода, дебет
osv_entry opening_credit Сальдо на начало периода, кредит
osv_entry turnover_debit Обороты за период, дебет
osv_entry turnover_credit Обороты за период, кредит
osv_entry closing_debit Сальдо на конец периода, дебет
osv_entry closing_credit Сальдо на конец периода, кредит
chart_of_account code Нормализованный код счета для колонки Счет SELECT coa.id, coa.code, coa.name, coa.parent_id FROM chart_of_account coa WHERE coa.id = account_id*
chart_of_account name Наименование счета
chart_of_account parent_id Родительский счет в иерархии
legal_entity id Идентификатор ЮЛ, найденного по ИНН SELECT le.id, le.inn, le.name, le.company_group_id FROM legal_entity le
legal_entity inn ИНН ЮЛ для приоритетного сопоставления
legal_entity company_group_id ГК найденного контрагента
legal_entity name Наименование ЮЛ для сопоставления SELECT DISTINCT le.id, le.inn, le.name, le.company_group_id FROM legal_entity le LEFT JOIN legal_entity_alias lea ON lea.legal_entity_id = le.id WHERE le.name = counterparty_name OR lea.normalized_alias = counterparty_name
legal_entity_alias normalized_alias Нормализованный вариант наименования
legal_entity_alias legal_entity_id ЮЛ, которому принадлежит алиас

Алгоритм формирование сводной ОСВ

  1. По id версии консолидации из таблицы consolidation_version определяется запись consolidation. Из нее берутся отчетный год, отчетный квартал и идентификатор ГСК. Через таблицу related_group определяется ГК, в рамках которой выполняется консолидация.
  2. Из таблицы consolidation_member выбираются все организации, включенные в выбранную версию консолидации. Этот состав считается зафиксированным периметром. Изменение текущего состава related_group_member не должно автоматически изменять состав уже созданной версии.
  3. Для каждой организации периметра из таблицы stored_file выбираются все подтвержденные файлы ОСВ за год и квартал консолидации.
  4. Для каждого файла используется задание распознавания, указанное в stored_file.current_recognition_job_id. Связанная запись recognition_job должна иметь статус done. Результаты предыдущих запусков распознавания этого же файла в сводную ОСВ не включаются.
  5. Все выбранные файлы организации должны относиться к одному отчетному периоду. Если один и тот же файл был загружен повторно как новая версия ранее загруженного файла, необходимо использовать только подтвержденную версию файла
  6. Из таблицы osv_entry выбираются строки, относящиеся к актуальным заданиям распознавания выбранных файлов ОСВ. Для определения назначения строки используется связь osv_entry.grouping_schema_id -> osv_grouping_schema.id. В расчетный набор сводной ОСВ включаются строки, для которых osv_grouping_schema.group_type = COUNTERPARTY.
  7. Каждая запись osv_entry представляет отдельную строку исходной ОСВ.
  8. Организация-владелец строки определяется через legal_entity.id. Наименование организации для колонки "Компания ГК" берется из legal_entity.name.
  9. Год и квартал строки определяются через stored_file.period_year и stored_file.period_quarter. Значение колонки "Период" формируется как 2026 Q2.
  10. Для каждой строки обрабатывается счет. Если osv_entry.account_id заполнен, код счета берется из chart_of_account.code. Если account_id отсутствует, выполняется поиск счета по нормализованному osv_entry.account_code. Строки с одинаковым счетом не объединяются. Если у организации есть сто строк по счету 60.01, в сводной ОСВ также должно остаться сто строк по этому счету.
  11. Наименование контрагента для отображения берется из osv_entry.counterparty_name. Оно не заменяется справочным наименованием организации, чтобы аналитик видел значение из исходной ОСВ.
  12. ИНН контрагента берется из osv_entry.counterparty_inn. Пустое значение преобразуется в NULL.
  13. Если osv_entry.counterparty_id уже заполнен, используется сохраненное сопоставление. Если поле не заполнено, сначала выполняется поиск организации по ИНН. Если по ИНН найдено юридическое лицо, его идентификатор записывается как сопоставленный контрагент. Если контрагент не найден по ИНН, выполняется поиск по legal_entity.name и значениям legal_entity_alias.normalized_alias. Если найдено несколько организаций, строка передается на ручное сопоставление.
  14. Если osv_entry.counterparty_id входит в consolidation_member текущей consolidation_version, строке присваивается тип "ГСК". Если контрагент не входит в периметр версии, но его legal_entity.company_group_id совпадает с company_group_id ГК текущей консолидации, присваивается тип "ГК". Если контрагент относится к другой ГК или не был сопоставлен, строке присваивается тип "Внешний".
  15. Шесть показателей переносятся из osv_entry без изменения. Значения opening_debit, opening_credit, turnover_debit, turnover_credit, closing_debit и closing_credit не суммируются и не пересчитываются.
  16. Количество строк сводной ОСВ должно быть равно количеству выбранных детальных строк osv_entry.

Алгоритм ручного сопоставления компании из ОСВ

  1. Пользователь открывает строку сводной ОСВ, для которой osv_entry.counterparty_id не заполнен.
  2. Система формирует список организаций, с которыми можно сопоставить контрагента. В список включаются компании ГСК и компании ГК.
  3. Поиск организации выполняется по:
    • legal_entity.inn
    • legal_entity.name
    • legal_entity_alias.alias
    • legal_entity_alias.normalized_alias
  4. Пользователь выбирает одну организацию из результатов поиска.
  5. После выбора система определяет тип сопоставленного контрагента.

    Если выбранная организация входит в consolidation_member текущей версии - "ГСК"

    Если организация не входит в периметр версии, но ее company_group_id совпадает с ГК консолидации -"ГК"

    Если организация не входит в текущий ГК - "Внешний"

  6. Система получает исходное наименование контрагента из osv_entry.counterparty_name, а так же ИНН из legal_entity.inn.
  7. Перед добавлением алиаса система проверяет, существует ли в legal_entity_alias запись с таким же legal_entity_id и normalized_alias.
  8. Если такой алиас уже связан с текущей организацией, новая запись не создается. Используется существующий алиас.
  9. Если алиас отсутствует, в legal_entity_alias создается запись.
  10. Если такой же normalized_alias уже связан с другой организацией, система должна проинформировать пользователя о наличии дубля в другой компании. Пользователю должен даваться выбор добавить алиас в текущую компанию и удалить у предыдущей, либо отменить добавление алиаса к текущей компании.
  11. После успешного сохранения алиаса в текущей строке ОСВ заполняется osv_entry.counterparty_id = legal_entity.id выбранной организации. Поля osv_entry.counterparty_name и osv_entry.counterparty_inn не изменяются. Они должны сохранять исходные значения из файла ОСВ.
  12. В рамках текущей версии консолидации система ищет другие строки osv_entry с таким же наименованием контрагента.
  13. Для найденных строк система может применить сопоставление автоматически, если выполняются условия:
    • counterparty_id еще не заполнен
    • нормализованный алиас связан только с одним ЮЛ
    • в строке ОСВ нет ИНН, противоречащего выбранной организации