Логика импорта товаров из ERP и настройка

Публичное пространство

Логика импорта товаров из ERP и настройка

Логика импорта

Топологические схемы импорта

Импорт данных производится в соответствие со схемами импорта топологий:

Для чтения интеграционной документации используйте Элементы и атрибуты на схеме XSD. Правила использования

Краткая схема транспорта товаров

Первичный импорт:
ERP → erpi_goodscatalog/erpi_goodscatalog_parted → un_cg_product → таблицы товарного справочника (un_cg_) → un_cg_product_file_for_shops → un_cg_product_file_for_cashes → касса

  • Ошибочные товары, не прошедшие валидацию: ERP → erpi_goodscatalog → un_cg_rejected_product / un_cg_rejected_product_in_shop

  • Загруженные штрихкоды, не привязанные к товарам: ERP → erpi_goodscatalog → un_cg_rejected_product → un_cg_barcode_not_linked

  • Загруженные свойства товаров, не привязанные к товарам: ERP → erpi_goodscatalog → un_cg_rejected_product → un_cg_plugin_properties_not_linked

Перевыгрузка данных по товару с сервера на кассу:
Новая касса → cash_cash_event → un_cg_not_received_to_cash_product / un_cg_resend_restriction_to_cash / un_cg_not_received_to_cash_sale_group → un_cg_product_file_for_cashes → касса

 

Настройка импорта

В SetRetail реализованы 2 протокола импорта товаров из ERP:

  • Файловый транспорт

  • Web-сервис

Настройка импорта через веб-сервис

  • Как настроить интеграцию ERP с SetRetail через веб-сервис можно ознакомиться в разделе Интеграционная документация.

  • В SetRetail с настроенным протоколом импорта через веб-сервис, есть возможность Сохранять xml-копии загружаемых данных.

1. Перейдите в Интеграция → Импорт/Экспорт → кликните 

.

 

2. Установите флажок 

Протокол Set Retail 10: веб-сервисы → кликните 
.

 

3. Не выходя из раздела Импорт/Экспорт → кликните 

.

image-20260408-100341.png

 

4. Установите флажок

Протокол Set Retail 10: выгрузка данных в веб-версию ERP → кликните
.

image-20260408-101344.png

 

5. Кликните на Протокол Set Retail 10: выгрузка данных в веб-сервис на стороне ERP.

image-20260408-102820.png

 

6. На вкладке ЭКСПОРТ ДАННЫХ установите периодичности экспорта данных в ERP-систему.

image-20260408-103304.png

 

7. Установите адреса веб-сервисов для экспорта данных → кликните 

.

image-20260408-103522.png

 

8. Перезапустите службу сервера JBOSS:

  • Windows:

    • net stop JBOSS_SVC

    • net start JBOSS_SVC

  • Linux: service JBOSS_SVC restart

 

 

Настройка файлового импорта

1. Перейдите в Интеграция → Импорт/Экспорт → кликните 

.

2. Установите флажок 

Протокол Set Retail 10: файлы → кликните 
.

3. Кликните по протоколу импорта Протокол Set Retail 10: файлы.

4. Установите путь импорта → кликните 

.

Алгоритм импорта

Проверка импортируемых данных товарного справочника

Как настроить интеграцию ERP с SetRetail через веб-сервис можно ознакомиться в разделе Интеграционная документация

  1. Файлы с товарами попадают в папку импорта (по-умолчанию \products\source).

  2. Cервер приложений перемещает файл в папку\products\tmp и проводит валидацию файла на корректность (специальные символы, теги).

  3. Корректные файлы попадают \products\success. Если валидация прошла не успешно то в файл помещается \products\error.

  4. Если часть файла валидна, а часть нет, то он разобьется и, соответственно, часть его пройдет дальше, а часть отклонится.

  5. При импорте товаров через web-сервис, отклонение товаров можно отследить по лог-файлам.

  6. После успешной валидации и загрузки, файлы переходят в обработку следующего шага товарного техпроцесса.

Сохранение товарного справочника на сервере

Первым этапом данные товарного справочника поступают в базу данных 

set → таблицу
erpi_goodscatalog для обработки и дальнейшей передачи в модуль «Товары» → далее данные по товарам попадают в основную таблицу
un_cg_product → затем данные по товарам такие как плагинные свойства распределяются по типам товаров для которых предназначена каждая таблица, например
un_cg_productpiece (Штучный товар).

image-20260408-104542.png

 

Если товар не прошел валидацию при импорте, его импорт не производится и он падает на полку отклоненных товаров, что отображается в таблице

un_cg_rejected_product

image-20260408-105004.png

 

Все данные по товарам также распределяются в остальные таблицы приведенные ниже:

Таблица

Описание

un_cg_action_ident

Список идентификаторов скидки, к которым [могут быть] "привязаны" ценники

un_cg_barcode

Штрих-код (BarcodeEntityBillet)

un_cg_barcode_not_linked

Не присоединенные баркоды (отдельный импорт баркодов)

un_cg_brand

Единицы измерения (BrandEntityBillet)

un_cg_clothing_cis

КиЗ (Контрольный идентификационный знак, CR-681)

un_cg_country

Страна (CountryEntityBillet)

un_cg_currency

Валюта (CurrencyEntityBillet)

un_cg_currency_banknote

Банкнота (CurrencyBanknoteEntityBillet)

un_cg_currency_course

Курсы валют (CurrencyCourseEntityBillet)

un_cg_depart

Отдел (DepartEntityBillet)

un_cg_group

Товарная группа (GroupEntityBillet)

un_cg_last_file_for_shop

Хранит последний принятый файл с товарами для магазина

un_cg_likond

Функциональность только для клиентов под платные доработки: Likond - правила разрешения продажи товара (LikondEntity)

un_cg_likond_file_for_cash

Список с файлами, содержащими ликонды для касс (LikondsForCashEntity)

un_cg_likond_to_send

Ликонды, которые надо доставить до касс (LikondToSendEntity)

un_cg_limits_age

Ограничение продажи по возрасту покупателя

un_cg_limits_alcohol

Ограничение времени продажи алкогольной продукции

un_cg_limits_base

Ограничения продажи внутри системы SET10

un_cg_limits_links

Список ограничений связь многие-ко-многим

un_cg_manufacturer

Производитель (ManufacturerEntityBillet)

un_cg_max_discount_percent_restrictions

Разновидность ограничения продажи: максимальный размер скидки (MaxDiscountPercentRestrictionEntityBillet)

un_cg_measure

Единицы измерения (MeasureEntityBillet)

un_cg_min_price_restrictions

Разновидность ограничения продажи: минимальная цена (MinPriceRestrictionEntityBillet)

un_cg_not_received_to_cash_product

Товары, которые не удалось принять на кассе (NotReceivedToCashProductEntity)

un_cg_not_received_to_cash_sale_group

Очередь на отправку групп продаж на кассы

un_cg_plugin_properties_not_linked

Плагинные свойства несуществующих товаров (PluginPropertiesNotLinkedEntityBillet)

un_cg_price

Цена (PriceEntityBillet)

un_cg_product

Товар (ProductEntityBillet)

un_cg_product_additional_properties

Таблица, которая содержит дополнительные свойства товаров

un_cg_product_bonus_points

Разновидность товара: "Зачисление бонусных баллов" (ProductBonusPointsEntityBillet)

un_cg_product_cft_gift_card

Разновидность товара: "Подарочная карта ЦФТ" (ProductCFTGiftCardEntityBillet)

un_cg_product_cg_salegroup

Таблица связи @ManyToMany: ProductEntityBillet - SaleGroupEntityBillet

un_cg_product_consignor_link

Таблица привязок товаров к комитентам (поставщикам) в магазинах (ConsignorLinkEntity)

un_cg_product_consignor_link_event

Таблица событий изменения привязок товаров к комитентам (поставщикам) (ConsignorLinkEventEntity)

un_cg_product_consignor_link_for_cash

Очередь на отправку привязок комитентов на кассу

un_cg_product_discount_card

Разновидность товара: "Дисконтная карта" (ProductDiscountCardEntityBillet)

un_cg_product_extra_goods

Таблица товаров спутников

un_cg_product_extra_gtins

Таблица дополнительных GTIN товаров

un_cg_product_file_for_cashes

Список ссылок на файлы - куски товарного справочника для отправки на кассы (ProductForCashesEntity)

un_cg_product_file_for_shops

Список ссылок на файлы - куски товарного справочника для отправки на магазины (ProductForShopEntity)

un_cg_product_gift_card

Разновидность товара: "Подарочная карта" (ProductGiftCardEntityBillet)

un_cg_product_piece_weight

Разновидность товара: "Штучно-Весовой товар" (ProductPieceWeightEntityBillet)

un_cg_product_setapi

Таблица для хранения комплектов товаров

un_cg_product_siebel_gift_card

Разновидность товара: "Подарочная карта Siebel" (ProductSiebelGiftCardEntityBillet)

un_cg_product_spirits

Разновидность товара: "Крепкий алкоголь" (ProductSpiritsEntityBillet)

un_cg_product_spirits_bottle

Бутылка акцизного алкогольного товара, когда алкогольный товар является набором

un_cg_product_spirits_bottle_alcocode

Алко-коды акцизных бутылок

un_cg_product_spirits_bottle_barcode

Таблица штрихкодов для акцизных бутылок в (промо)наборах

un_cg_product_spirits_bottle_price

Минимальная розничная цена (МРЦ) бутылки в наборе с датами действия (либо без дат)

un_cg_product_to_salegroup_shops

Таблица-развязка, которая хранит привязку групп продаж к товарам с конкретизацией по магазинам

un_cg_product_to_scales

Таблица очереди товаров на весы

un_cg_product_weight

Разновидность товара: "Весовой товар" (ProductWeightEntityBillet)

un_cg_productciggy

Разновидность товара: "Табачные изделия" (ProductCiggyEntityBillet)

un_cg_productciggy_price

Минимальные розничные цены для товара: "Табачные изделия" (ProductCiggyEntityBillet)

un_cg_productclothing

Разновидность товара: "Одежда" (ProductClothingEntityBillet)

un_cg_productjewel

Разновидность товара: "Ювелирные изделия" (ProductJewelEntityBillet)

un_cg_productkit

Таблица для хранения комплектов товаров

un_cg_productkit_components

Таблица для хранения артикулов, находящихся внутри комплекта

un_cg_productmetric

Разновидность товара: "Метрический товар (товар, продающийся по длине: ткань, шланг, провод, и.т.п.)" (ProductMetricEntityBillet)

un_cg_productpiece

Разновидность товара: "Штучный товар" (ProductPieceEntityBillet)

un_cg_products_to_cash_queue

Очередь запросов на отправку товаров на кассы

un_cg_rejected_product

Записи отражающие факты отклонения товаров (при импорте) (RejectedProductEntity)

un_cg_rejected_product_in_shop

Статистика по отклонённым товарам в магазинах. Статистика собирается в ЦО (RejectedProductsInShopEntity).

un_cg_resend_restriction_to_cash

Ограничения, которые надо переотправить кассе

un_cg_sale_denied_restrictions

Разновидность ограничения продажи: запрет продажи (SaleDeniedRestrictionEntityBillet)

un_cg_sale_restrictions

[Базовое] Ограничение продажи (BaseRestrictionEntityBillet)

un_cg_salegroup

Группа продаж (SaleGroupEntityBillet)

un_cg_section

Секции расположения товаров в магазине

un_cg_sub_pricetag

Привязки основных шаблонов ценников к вложенным шаблонам ценников

un_cg_uz_ffd_data

Таблица ИКПУ и кодов упаковки для Узбекистана

un_cg_wholesale_level

Оптовый порог продукта, по достижению которого могут начисляться бонусы

 

Скрипты для анализа

Количество записей в таблице импортируемых товаров
select count(1) from erpi_goodscatalog
Какие данные за какое время обрабатывает сервер
select whenloaded from erpi_goodscatalog where status=0 order by whenloaded

 

XML не прошел внутреннюю проверку и отклонен
select count(1) from erpi_goodscatalog where status=3

 

Следует удалить все записи в таблице, перезапустить службу и попробовать загрузить товар еще раз. В случае повторного попадания в 3 тип искать проблему в логах и XML.

ВАЖНО!

Ошибки, возникающие при импорте данных можно проследить в логе {inst dir}\SetRetail10\standalone\log\set-retailx-erpi.log предварительно расширив уровень логирования по инструкции Настройка логирования сервера приложений

Вторым этапом следует проверка товаров на целостность.

При проверке валидности обязательными являются следующие проверки:

  • Наличие кода товара

  • Наличие наименования товара

  • Наличие в системе плагина товара данного типа

  • Наличие у товара хотя бы одной первой ненулевой цены с незаконченным сроком действия

  • Наличие штрихового кода

  • Наличие ставки НДС

Пользователь может дополнительно включить или выключить следующие проверки:

  • Наличие штрихового кода

В случае прохождения валидации товар проходит в дальнейший шаг техпроцесса. В обратном случае товар попадает на «Полку отклоненных товаров» (статус на товарных полках является тупиковой, алгоритмов выхода товара с нее не предусмотрено). Товары, которые оказались на «Полке отклоненных товаров» хранятся в таблице un_cg_rejected_product

ВАЖНО!

Необходимо обеспечить механизм автоматической периодической чистки данной полки, согласно графику, заданному пользователем в конфигурационном файле {Disk}:\SetRetail10\standalone\configuration\modules\products\products.properties параметру rejected.products.clean.time (по-умолчанию, установлен параметр 05\:30\:00).

Успешно проверенные товары сохраняются в таблицах:

  • un_cg_product - товарный справочник

  • un_cg_barcode - список штрихкодов

  • un_cg_price - цены

  • un_cg_group - группы товаров

  • un_cg_depart - отделы для цен

Создание очереди для отправки на кассу

Дальнейшим шагом является создание очереди на отправку.

Новые товары попадают в таблицу

un_cg_not_received_to_cash_product → Далее товары "собираются" в "пачки" (задания) для отправки на кассы (1 задание - не более 100 товаров. Параметр настраиваемый), которые хранятся в директории {inst dir}\SetRetail10\nginx\html\products.

За отправку файлов отвечает веб-сервер nginx (служба nginx устанавливается вместе с сервером приложений, по-умолчанию запускается автоматически ) .

При использовании топологии SetCentrum - SetRetail - POS. SetCentrum готовит задания товарного справочника для магазинов.

 

Задания сохраняются в таблице 

un_cg_product_file_for_shops

Основные поля:

Поле

Назначение

shop_number

Номер магазина, для которого предназначен указанный файл; если NULL -> все магазины

file_name

Имя файла в nginx

import_date

Дата записи данных в этот файл

objects_count

Количество объектов/сущностей, записанных в этот файл

object_type

Тип данных

 

Задания для отправки на кассу хранятся в

un_cg_product_file_for_cashes

Основные поля:

Поле

Назначение

cash_number

Номер кассы, для которой предназначен указанный файл; если NULL - все кассы

shop_number

Номер магазина, в котором эта касса зарегистрирована

file_name

само имя файла в nginx

import_date

Дата записи данных в этот файл

objects_count

Количество объектов/сущностей, записанных вэтот файл

sourcefilename

Источник данных, если допустимо (например,конкретный xml)

Процесс отправки заданий можно проследить в визуализации или в таблице

cash_activity.

При нажатии на кнопку Новая касса очередь формируется:

un_cg_not_received_to_cash_product→ 
un_cg_product_file_for_cashes