...
Валидация данных. Справочная информация:
|
Бизнес процесс.
Описание: клиенты, использующие СуперМаг Плюс заинтересованы в интеграции с СуперМаг DS для использования прайс-дисплеев и esl-ценников.
Для интеграции СуперМаг Плюс и DS - используется расширенный XML-протокол, с помощью которого сейчас интегрируются УКМ5 и ДС
Интерфейс и реализация.
В настоящее время УКМ5 интегрируется с СуперМаг DS по следующей схеме (рис.1.):
Рис.1.
...
Справка: Apache Kafka — распределённая система обмена сообщениями между серверными приложениями в режиме реального времени.
Описание форматов обмена.
Формат данных для публикации.
| Wiki разметка |
|---|
СуперМаг Плюс должен публиковать в 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, с некоторыми изменениями, в частности:
- Имена файлов должны быть строго такими, как они отражены в описании, иначе конвертер DS их проигнорирует.
- Структура файлов расширена новыми данными.
Файлы обмена (общий список).
Ниже представлен общий список файлов, которые требуется формировать. Часть файлов (их структура) не претерпела изменений по отношению к конвертеру СуперМаг XML, и не описывается в данном ТЗ.
№ | Имя файла | Описание назначения | Комментарий |
|---|---|---|---|
1. | store | магазины | Новый файл. Ранее СуперМаг плюс такой не формировал. |
2. | classif | Классификатор товаров | Без изменений. |
3. | updateItems | товары | Файл расширен новыми тегами. |
4. | storePrices | цены по месту хранения | Без изменений. |
5. | priceTagInfo | акционные цены | Новый файл. Ранее СуперМаг плюс такой не формировал. |
6. | itemInfo | QR-коды и PLU | Новый файл. Ранее СуперМаг плюс такой не формировал. |
Общее описание.
Ниже описывается расширение существующего протокола обмена данными (СуперМаг XML) для создания готового "коробочного" решения, которое позволит клиентам, использующим СуперМаг Плюс, избежать отдельной интеграции с «СуперМаг DS» для использования электронных ценников (ESL) и Прайс-дисплеев.
Ранее данные из Торговой системы выгружались данные исключительно для кассовых систем и систем контроля цен. Теперь этот процесс дополняется: фактически те же самые данные будут параллельно передаваться и в DS. Это позволит системе «СуперМаг DS» получать актуальную информацию о товаре и их ценах.
Описание расширения.
- Наименование файла строго как в описание. (операционная система LINUX регистрозависима)
- Формат представления информации – XML.
- Кодировка – UTF-8.
- Десятичный разделитель – точка
- Каждый тип информации передаётся с помощью отдельного файла, который имеет название, соответствующее типу передаваемой информации. В одном файле может содержаться только один тип информации
...
Тип информации | Имя файла и головного тега |
Акционные цены на товары | priceTagInfo |
QR-коды и PLU | itemInfo |
Файл store (магазины).
Наименование файла: store (например, store_[1234]_[I].xml).
...
Название тега | Примечание | Формат | Источник данных из СуперМаг Плюс |
|---|---|---|---|
<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 (например: updateItems_[1234]_[F].xml).
...
Название тега | Примечание | Формат | Источник данных из СуперМаг Плюс |
|---|---|---|---|
<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> |
Файл priceTagInfo (акционные цены).
Источником данных для акционных ценников будут выступать документы «Маркетинговая акция».
...
Пример:
<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 (QR-коды и PLU).
Наименование файла: 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> |
Правила наполнения данными для файла priceTagInfo.
Источником данных для акционных ценников будут выступать документы «Маркетинговая акция».
Следует учитывать, что у данного документа имеются следующие атрибуты, значение которых напрямую может оказывать влияние на цену товара, и как следствие цену на ценнике СуперМаг DS. К атрибутам относится:
...
- «Цены» - должна выгружаться текущая цена из карточки, она же на этот момент будет являться акционной.
- «Старой цены» - должна быть выгружена цена, которая была зафиксирована как «цена до акции».
- «Название акции» - название акции, которая породила акционную цену.
- «Дата и время начала акции» - Планируемая Дата и время старта акции
- «Дата и время окончания акции» - Планируемая Дата и время окончания акции
Публикация файлов в kafka (топики).
Каждый клиент идентифицируется уникальным ID (partner_id). Для каждого клиента создается отдельная группа топиков в формате: partner_id.doc_type
partner_id - id партнера на сервере DS
doc_type - тип передаваемой информации
...
