В случае обмена данными (справочниками и продажами) между кассовым сервером и кассой в качестве инициатора обмена может выступать кассовая программа.

Для выгрузки продаж и загрузки справочников по инициативе кассы на нее необходимо установить пакет artix-sync-watchdog, выполнив команду:

aptitude install artix-sync-watchdog

При установке пакета в директорию /linuxcash/cash/sync/bin добавляются скрипты:

  • forcedUnload.py – обеспечивает выгрузку продаж на КС. Продажи выгружаются за период с момента последней выгруженной продажи по текущую дату,
  • forcedLoad.py – обеспечивает загрузку справочников на кассу, при условии, что справочники имеются в очереди на КС,
  • serviceLock.py – отвечает за блокировку процесса. При запуске одного из скриптов, обеспечивающих обмен данными, в директории создается файл блокировки, который после завершения транзакции удаляется,
  • если в процессе обмена кассовая программа будет перезапущена, то при включении кассы скрипты будут запущены по расписанию. При запуске скрипта в файле блокировки проверяется id процесса, если такой процесс не запущен, то в лог записывается ошибка "Предыдущая сессия была завершена с ошибкой". В файл блокировки записывается новый id сессии и по ее завершении файл блокировки удаляется.

В директорию /etc/cron.d помещаются правила принудительного запуска скриптов обмена. Правила передают соответствующим скриптам 2 параметра работы:

  • количество попыток выполнения в случае неудачи, по умолчанию 5,
  • таймаут между попытками, по умолчанию 20 секунд.

Правило sync-watchdog-load отвечает за запуск скрипта forcedLoad.py:

Пример файла
# Starting forced dictionaries load
0 */2 * * * root cd /linuxcash/cash/sync/bin && /usr/bin/python /linuxcash/cash/sync/bin/forcedLoad.py 5 20

Правило sync-watchdog-unload отвечает за запуск скрипта forcedUnload.py:

Пример файла
# Starting forced dictionaries load
0 */2 * * * root cd /linuxcash/cash/sync/bin && /usr/bin/python /linuxcash/cash/sync/bin/forcedUnload.py 5 20

Логирование работы скриптов ведется в файле linuxcash/cash/sync/sync.log.

  • No labels