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

Логика импорта рекламных акций из ERP и настройка

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

В SetRetail10 импорт рекламных акций из ERP реализован только через Web-сервис.

Загрузить рекламную акцию с помощью файла можно с помощью инструмента SetConsole.

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

Обратная связь при импорте данных

Начиная с версии SetRetail 10.2.5.0 существует возможность получать обратную связь от сервера приложений о статусе импортируемых данных. Подробнее описано в статье /wiki/spaces/SR10SUPPORT/pages/468123676 

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

Сохранение рекламных акций на сервере

Первым этапом загружаемые рекламные акции сохраняются в таблицах базы данных set:
  • discounts_advertisingactions- список рекламных акций
  • discounts_action_plugin и discounts_action_plugin_property плагинные свойства (содержимое) рекламных акций.
  • erp_imported_actions - рекламная акция, загруженная из ERP (ActionsCatalogErpi). Через эту таблицу SetRetail10 принимает очередь заданий, складывает сами XML и постепенно их обрабатывает, перекладывая дальше в таблички discounts_advertisingactions и discounts_action_plugin и discounts_action_plugin_property, и отправляя акции далее.


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

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

  1. Новые рекламные акции попадают в таблицу discounts_not_received_to_cash.
  2. Рекламные акции "собираются" в "пачки" (задания) для отправки на конкретный магазин/кассу, которые хранятся в папке \SetRetail10\nginx\html\advertactions.
  3. За отправку файлов отвечает веб-сервер nginx (служба nginx устанавливается вместе с сервером приложений, по-умолчанию запускается автоматически)
  4. При использовании топологии SetCentrum ↔  SetRetail ↔ POS.
  5. SetCentrum готовит задания рекламных акций для магазинов.
  6. Задания сохраняются в таблице discounts_file_for_shop:
Основные поля таблицы:
ПолеНазначение
idИдентификатор записи
file_nameНазвание файла в nginx
import_dateДата создания файла
action_idСсылка (внешний ключ) на рекламную акцию
Номер магазинаНомер магазина
  1. После загрузки файла сервером, модуль Лояльность начинает его обработку.
  2. После разбора файла и сохранения данных рекламных акций, идентификатор обработанного файла обновляет запись в  базе данных set таблице → discounts_last_file_for_shop.
  3. Когда сервер SetRetail загрузил задания с рекламными акциями, задания в таблице discounts_file_for_shop удаляются, аналогично файлам в директории \SetRetail10\nginx\html\advertactions

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

Основные поля таблицы:
ПолеНазначение
idПервичный ключ
cash_numberНомер кассы, для которой предназначено это сообщение; если NULL - для всех касс
shop_numberНомер Магазина
file_nameИмя файла, содержащего каталог акций в nginx
import_dateДата импорта/создания этого фала-каталога
objects_countКоличество акций в файле-каталоге

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

ВАЖНО!

Ошибки обработки рекламных акций кассой можно проследить в лог-файле на кассе \\IP кассы\storage\crystal-cash\logs\loyal.log предварительно расширив уровень логирования по инструкции Настройка логирования кассовой программы

  1. При нажатии на кнопку Новая касса очередь формируется аналогичноdiscounts_not_received_to_cash → discounts_file_for_cashes
  2. После скачивания файла кассой,модуль «Лояльность» начинает его обработку. 
  3. После разбора файла и сохранения данных рекламных акций, идентификатор обработанного файла обновляет запись в базе данных кассы discount на кассы → таблица loy_lastdiscountsid
  4. Когда касса загрузила задания с акциями → задания в таблице discounts_file_for_cashes удаляются, аналогично файлам в директории \SetRetail10\nginx\html\advertactions

Запросы для мониторинга и работы с очередями

Мониторинг статуса обработки очереди:
select count(id) from erp_imported_actions where status = 'NEW';

-

Запрос для мониторинга с группировкой по статусам:
SELECT status, COUNT(status) FROM erp_imported_actions GROUP BY 1;

-

Отключение обработки очереди:
update erp_imported_actions set status = 'ERROR';

-

Полная очистка очереди:
delete from update erp_imported_actions;



© 1994-2023, ООО «Кристалл Сервис Интеграция».
Все права защищены..

Политика обработки персональных данных