Контрольная сумма (КС)
Это значение, рассчитанное по блоку данных путём применения определенного алгоритма.
Совпадение КС на стороне API SO+ с КС на стороне клиента гарантирует согласованность блока данных между системами.
Расчет КС
На стороне SellOut+
Отправить запрос вида:
<API_URL>/checksum?object=<ИМЯ_ОБЪЕКТА>, который вернет КС по всем блокам объекта.На стороне внешней системы клиента
Рассчитать КС отдельно для каждого блока данных.
Сформировать блок данных объекта с помощью SQL-запроса с группировкой:
Если в объекте есть источник, то группируем данные по ID или коду источника (оба этих поля уникальны). API SO+ отдает КС по ID источника, поэтому для дальнейшего сравнения удобнее использовать именно ID источника для группировки. Таблица с источниками — объекта источников.
Если в объекте есть и источник, и дата факта, то группируем данные по обоим полям.
Если в объекте нет ни источника, ни даты, то не группируем данные.
Вычислить хэш (алгоритм SHA-256) от конкатенации суммы по полю
RowVersionи кол-ва всех записей, содержащихся в блоке. Пример расчета для MS SQL Server:hashbytes('SHA2_256', cast(concat(sum(cast(RowVersion as bigint)), count(RowVersion)) as varchar(255))) as HashValue