SMP-2097 ID 2464 Интеграция СуперМаг Плюс и DS_РитейлСофт
ID: 2464
SALE: 3226
|
|
| Валидация данных. Справочная информация:
|
Описание: клиенты, использующие СуперМаг Плюс заинтересованы в интеграции с СуперМаг DS для использования прайс-дисплеев и esl-ценников.
Для интеграции СуперМаг Плюс и DS - используется расширенный XML-протокол, с помощью которого сейчас интегрируются УКМ5 и ДС
В настоящее время УКМ5 интегрируется с СуперМаг DS по следующей схеме (рис.1.):
Рис.1.
Схема интеграции через СуперМаг Плюс претерпит следующие изменения (Рис.2.):
Рис.2.
Подготовкой данных занимается служба Кассовый сервер СуперМаг Плюс.
Справка: Apache Kafka — распределённая система обмена сообщениями между серверными приложениями в режиме реального времени.
СуперМаг Плюс должен публиковать в Kafka файлы в следующем виде:
{
"content_base64": "здесь содержимое в base64",
"event_type": "F",
"number": "1",
"original_filename": "storePrices_[262]_[1]_[F].xml",
"store_id": "262",
"part": "1",
"part_status": "process"
}
|
Название тега | Примечание |
|---|---|
content_base64 | содержимое Xml файла в кодировке base64 (SKU и цены) |
event_type | тип выгрузки (F/I - полная/частичная выгрузка) |
number | порядковый номер файла (целое число) |
original_filename | Имена файлов имеют формат TAGNAME_[Store][Number][P]_[Error].xml, где:
|
store_id | Id магазина во внешней системе |
part | номер части для больших файлов |
part_status | статус части. Варианты:
|
За основу формата обмена данными взят конвертер СуперМаг XML, с некоторыми изменениями, в частности:
Ниже представлен общий список файлов, которые требуется формировать. Часть файлов (их структура) не претерпела изменений по отношению к конвертеру СуперМаг XML, и не описывается в данном ТЗ.
№ | Имя файла | Описание назначения | Комментарий |
|---|---|---|---|
1. | store | магазины | Новый файл. Ранее СуперМаг плюс такой не формировал. |
2. | classif | Классификатор товаров | Без изменений. |
3. | updateItems | товары | Файл расширен новыми тегами. |
4. | storePrices | цены по месту хранения | Без изменений. |
5. | priceTagInfo | акционные цены | Новый файл. Ранее СуперМаг плюс такой не формировал. |
6. | itemInfo | QR-коды и PLU | Новый файл. Ранее СуперМаг плюс такой не формировал. |
Ниже описывается расширение существующего протокола обмена данными (СуперМаг XML) для создания готового "коробочного" решения, которое позволит клиентам, использующим СуперМаг Плюс, избежать отдельной интеграции с «СуперМаг DS» для использования электронных ценников (ESL) и Прайс-дисплеев.
Ранее данные из Торговой системы выгружались данные исключительно для кассовых систем и систем контроля цен. Теперь этот процесс дополняется: фактически те же самые данные будут параллельно передаваться и в DS. Это позволит системе «СуперМаг DS» получать актуальную информацию о товаре и их ценах.
Расширение существующих файлов в протоколе:
Тип информации | Имя файла и головного тега |
Магазины | store |
Товары | updateItems |
Добавление новых файлов в протокол:
Тип информации | Имя файла и головного тега |
Акционные цены на товары | priceTagInfo |
QR-коды и PLU | itemInfo |
Наименование файла: store (например, store_[1234]_[I].xml).
Описание изменений: Файл расширяется двумя новыми полями:
Описание файла "store":
Название тега | Примечание | Формат | Источник данных из СуперМаг Плюс |
|---|---|---|---|
<stores |
| ||
<version=""> | String(20) | ||
<store> | |||
<code> | Код магазина в торговой системе | String(100) | Код магазина в торговой системе. ID места хранения. Для МХ Центральный офис выгружается значение -1. |
<name> | Название магазина | String(100) | Название магазина |
<jurName> | Название юр. лица | String(100) | Собственный контрагент места хранения. Единственный из списка, или первый попавшийся. |
<address> | Адрес магазина | String(100) | Адрес магазина |
<director> | Новое поле: Директор магазина | String(100) | Собственный контрагент места хранения. Контрагенты - Сотрудники. Выгружается ФИО сотрудника - Директор или Руководитель. |
<description> | Новое поле: Описание магазина | String(100) | Собственный контрагент места хранения. Комментарий. |
<INN> | ИНН юр. лица | String(40) | ИНН Собственного контрагента. |
<KPP> | КПП | String(40) | КПП Места хранения. |
<phone> | Телефон | String(40) | Телефон Места хранения. |
<active> | Активный/неактивный | Boolean | Фиксированное значение «true» |
<egaisIP> | IP-адрес и порт УТМ | String(255) | Не используется. |
<CFA> | Код ЦФО – открытый идентификационный код, определяющий центр финансовой ответственности (идентификатор магазина для казначеев) | String(255) | Не используется. |
<validatorIP> | IP-адрес и порт валидатора | String(255) | Не используется. |
<localModuleIP> | IP-адрес локального модуля (для обращения в случае отсутствия связи с системой "Честный знак") | String (255) | Не используется. |
<fsrarID> | Идентификатор организации в ФС РАР | String(255) | Не используется. |
<prismaIP> | IP-адрес и порт системы "Трассир" | String(255) | Не используется.. |
<storeIP> | IP модуля интеграции магазина | String(100) | Не используется. |
<inputURL> | Полный URL входного каталога модуля интеграции магазина | String(255) | Не используется. |
<outputURL> | Полный URL выходного каталога модуля интеграции магазина | String(255) | Не используется. |
<region> | Код региона, к которому относится магазин | Int(11) | Код региона места хранения. |
<storeType> | Код формата магазина из справочника форматов магазинов | Int(11) | Не используется. |
</store> | |||
</stores> |
Наименование файла: updateItems (например: updateItems_[1234]_[F].xml).
Описание изменений: Файл расширяется тремя новыми полями, которые являются необязательными для передачи:
Описание файла "updateItems":
Название тега | Примечание | Формат | Источник данных из СуперМаг Плюс |
|---|---|---|---|
<updateItems |
| ||
<version=""> | String(20) | ||
<item> | |||
<article> | String(40) | ||
<name> | String(255) | ||
<measure> | Сокращение (шт, кг, л) | String(40) | |
<measprec> | Количество знаков в дробной части; точность – 1, 0.001, 0.01, 0.1 | String(one of 1; 0.1; 0.01; 0.001) | |
<groupId> | Ссылка на узел классификатора | String(40) | |
<producer> | Новое поле: Страна производства | String(255) | Карточка складского учёта- Страна |
<description> | Новое поле: Описание товара
| String(255) | Значение генерируется автоматически. Учитывается параметр: ценники за 0,1 единицы. Учитывается название единицы измерения (название для отчетов). |
<customType> | Новое поле: Атрибут товара | Int(11) | Справочники - Дизайн ценников - Код DS ценника. Дополнительное описание смотри ниже. |
<egaisType> | Тип маркировки товара | Int(11) | |
<SubExcise> | Признак подакцизности товара | Int(11) | |
<crptNotUnique> | Признак неуникальности контрольной марки | 0 – уникальная марка | |
<taxgroupId> | Код налоговой группы | ||
<propertyId> | Доп. свойство «Размер» | String(40) | |
<addProperty> | Доп. свойства | ||
<id> | String(40) | ||
<name> | String(80) | ||
<value> | String(100) | ||
</addProperty> | |||
<barcode> | Перечень штрихкодов Один штриховой код товара. | ||
<id> | Непосредственно штрихкод | String(40) | Первый попавшийся, или тот, что отмечен как «Использовать при EDI обмене \ GTIN» |
<propertyValue> | String(100) | ||
<quantity> | «Количество» для штрихкода | Decimal(16.3) | |
</barcode> | |||
<TNVDcode> | Идентификатор записи из справочника ТН ВЭД | String(50) | |
<productAlcCodes> | |||
<alcCode> | Специальный идентификатор кода алкогольной продукции | String(40) | |
</productAlcCodes> | |||
<supplierLink> | |||
<supplierINN> | ИНН поставщика | String(12) | |
<supplierTax> | НДС поставщика из контракта с поставщиком | Возможные значения: «22%», | |
</supplierLink> | |||
</item> | |||
</updateItems> |
Реализация заполнения значения <customType>:
В справочнике «Категория ценников» поле «Только для мобильного принтера» заменено полем «Применение» с возможностью выбора области применения ценника:
- для стандартного принтера,
- для мобильного принтера,
- для DS

Примечание: опция «Обязательна для печати» действует только при выборе применения «для стандартного принтера».
Выбор применения «для DS» означает, что ценники этой категории предполагается использовать в системе управления медиаконтентом Супермаг DS, и они будут воспроизводиться только в этой системе.
В справочнике «Дизайн ценников» поле «Файл ценника» получило название «Файл или код DS ценника». Для ценников с применением «для стандартного принтера» или «для мобильного принтера» в это поле по-прежнему надо заносить название файла ценника, для ценников «для DS» в это поле надо заносить код ценника*, известный системе Супермаг DS:

Разным группам товаров и разным артикулам можно задавать разные дизайны ценников для DS так же, как для печати на бумажном носителе. Также можно назначать разные дизайны ценников для DS для артикулов, участвующих в тех или иных маркетинговых акциях.
Код ценника* - Целое число — э, которое не имеет дробной части и включает в себя:
Натуральные числа — положительные числа, используемые для счёта (1, 2, 3 и т. д.).
Источником данных для акционных ценников будут выступать документы «Маркетинговая акция».
С помощью данного файла в DS возможно отразить следующие акционные кампании:
№ п.п. | Название компании в DS | Комментарий |
|---|---|---|
1. | Процентная скидка | Реализовано в СМ+ с помощью Маркетинговых акций. |
2. | «N по цене M» | Не реализована в СМ+, выгружаться не будет. |
3. | «Скидка от количества» | Не реализована в СМ+, выгружаться не будет. |
Название тега | Примечание | Формат | Источник данных из СуперМаг Плюс | |
|---|---|---|---|---|
<priceTagInfofullness= "F/I"storeId = "" > | Значение может быть F или I (обязательное)Код магазина во внешней системе (обязательное) | |||
<item article=""> | Код товара (артикул) (секция должна быть указана хотя бы один раз) | String(40) | Артикул из спецификации документа Маркетинговая акция. | |
description | Название акции (обязательное) | String(100) | Название акции. | |
dateFrom | Дата и время начала акции | DateTime() | Планируемая Дата и время начала акции | |
dateTo | Дата и время окончания акции | DateTime() | Панируемая \ или \ Фактическая (при наличии) Дата и время окончания акции | |
campaigntype | Тип компании. Один из предопределенных: (обязательное)
| String(40) | Фиксированное значение «discountbypercent» | |
<campaign> | ||||
Внутри секции <campaign> настройки кампании, которые зависят от типа кампании (см. таблицы далее) | <campaign> | |||
</campaign> | ||||
</item> | ||||
</priceTagInfo> |
Секция campaign:
| Название тега | Примечание | Формат | Источник данных из СуперМаг Плюс |
|---|---|---|---|
| <campaign> | |||
price | цена (обязательное) | Decimal(16.2) | Цена артикула из документа Маркетинговая акция. |
oldPrice | старая цена | Decimal(16.2) | Старая цена из документа Маркетинговая акция. |
discount | процент скидки | Decimal(16.2) | Процент скидки. Требуется рассчитать и округлить до целого числа в меньшую сторону. |
</campaign> |
Пример:
<priceTagInfo fullness="I" storeId="2">
<version>1.0</version>
<item article="000177">
<description>Покупайте наших слонов</description>
<dateFrom>01.01.2025</dateFrom>
<dateTo>31.12.2025</dateTo>
<campaigntype>discountbypercent</campaigntype><campaign>
<price>45</price>
<oldPrice>50</oldPrice>
<discount>10</discount></campaign>
</item>
</priceTagInfo>
Наименование файла: itemInfo (например: itemInfo_[Store]_[Number]_[P].xml)
Название тега | Примечание | Формат | Источник данных из СуперМаг Плюс |
|---|---|---|---|
< itemInfofullness= "F/I"storeId = > | Значение может быть F или IКод магазина во внешней системе (обязательное) | ||
<item article=""> | Код товара (артикул) (секция должна быть указана хотя бы один раз) | String(40) | |
<qr> | содержимое QR-кода для ценника (необязательное) | String(100) | Не заполняем |
<plu> | Код на весах (необязательное) | String(40) | PLU код из списка товаров для весов по месту хранения. |
</item> | |||
</itemInfo> |
Источником данных для акционных ценников будут выступать документы «Маркетинговая акция».
Следует учитывать, что у данного документа имеются следующие атрибуты, значение которых напрямую может оказывать влияние на цену товара, и как следствие цену на ценнике СуперМаг DS. К атрибутам относится:
Так же не исключены ситуации, при которых возможно пересечение артикулов в созданных маркетинговых акциях, а также досрочное завершение акции (вручную сотрудником).
Так как стоит задача, получить в DS акционные цены в строгом в соответствии в ценами в кассовой системе, то логика выгрузки определена следующая:
Маркетинговая акция запустилась (однократная выгрузка).
Задача: проинформировать DS о значении и начале действия аукционной цены.
Маркетинговая акция завершена (однократная выгрузка).
Задача: проинформировать DS о завершения действия аукционной цены.
Маркетинговая акция завершена, но артикул продолжает участвовать в другой акции (однократная выгрузка).
Задача: проинформировать DS о новом значении и начале действия новой аукционной цены.
Каждый клиент идентифицируется уникальным ID (partner_id). Для каждого клиента создается отдельная группа топиков в формате: partner_id.doc_type
partner_id - id партнера на сервере DS
doc_type - тип передаваемой информации
СуперМаг Плюс - 1.059 сп2 - https://manual.retail-soft.pro/x/GgQ7Cg