Публичное пространство
Логика импорта товаров из 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. Не выходя из раздела Импорт/Экспорт → кликните .
4. Установите флажок Протокол Set Retail 10: выгрузка данных в веб-версию ERP → кликните .
5. Кликните на Протокол Set Retail 10: выгрузка данных в веб-сервис на стороне ERP.
6. На вкладке ЭКСПОРТ ДАННЫХ установите периодичности экспорта данных в ERP-систему.
7. Установите адреса веб-сервисов для экспорта данных → кликните .
8. Перезапустите службу сервера JBOSS:
Windows:
net stop JBOSS_SVCnet start JBOSS_SVC
Linux:
service JBOSS_SVC restart
Настройка файлового импорта
1. Перейдите в Интеграция → Импорт/Экспорт → кликните .
2. Установите флажок Протокол Set Retail 10: файлы → кликните .
3. Кликните по протоколу импорта Протокол Set Retail 10: файлы.
4. Установите путь импорта → кликните .
Алгоритм импорта
Проверка импортируемых данных товарного справочника
Как настроить интеграцию ERP с SetRetail через веб-сервис можно ознакомиться в разделе Интеграционная документация.
Файлы с товарами попадают в папку импорта (по-умолчанию \products\source).
Cервер приложений перемещает файл в папку\products\tmp и проводит валидацию файла на корректность (специальные символы, теги).
Корректные файлы попадают \products\success. Если валидация прошла не успешно то в файл помещается \products\error.
Если часть файла валидна, а часть нет, то он разобьется и, соответственно, часть его пройдет дальше, а часть отклонится.
При импорте товаров через web-сервис, отклонение товаров можно отследить по лог-файлам.
После успешной валидации и загрузки, файлы переходят в обработку следующего шага товарного техпроцесса.
Сохранение товарного справочника на сервере
Первым этапом данные товарного справочника поступают в базу данных set → таблицу erpi_goodscatalog для обработки и дальнейшей передачи в модуль «Товары» → далее данные по товарам попадают в основную таблицу un_cg_product → затем данные по товарам такие как плагинные свойства распределяются по типам товаров для которых предназначена каждая таблица, например un_cg_productpiece (Штучный товар).
Если товар не прошел валидацию при импорте, его импорт не производится и он падает на полку отклоненных товаров, что отображается в таблице un_cg_rejected_product
Все данные по товарам также распределяются в остальные таблицы приведенные ниже:
Таблица | Описание |
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