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

Кассовый сервер хранит информацию о справочниках, которые переданы на кассы в магазине. При получении новых данных кассовый сервер вычисляет разницу и передает на кассу только измененную информацию. Сервер запрашивает продажи с кассы в соответствии с расписанием. Для новой кассы, у которой не было продаж, запрашивается информация за последние сутки.

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

Взаимодействие между кассой и сервером осуществляется через механизм очередей. Для осуществления взаимодействия необходимо настроить параметры кассы на сервере и клиентский модуль на кассе. На стороне кассы за взаимодействие отвечает Sync-agent.

Клиентский модуль для кассы устанавливается пакетом artix-syncagent.

Настройка сервиса

Параметры работы сервиса на кассе задаются в конфигурационной файле /linuxcash/cash/sync/properties/cash.ini в секции [Properties] (настройки в cash.ini передаются с кассового сервера).

НаименованиеТип данныхВозможные значенияОписаниеПримечания

dept.broker.ip

строковый


IP-адрес кассового сервера


dept.broker.port

целочисленный


Порт кассового сервера


brokerconnectionheartbeat

целочисленный


Частота проверки доступности соединения до сервера во время подключения и забора сообщений из очереди КС

Значение параметра указывается в секундах.

Если соединение потеряно, то подключение закроется и заблокированное (обрабатываемое) сообщение освободится и станет доступно для повторного считывания из очереди КС.
Если установлено значение 0, то доступность соединения проверяться не будет и подключение будет открыто, пока его принудительно не закрыть

cash.code

строковый


ID кассового узла

Получается с кассового сервера при первичной стыковке. Используется в качестве значения идентификатора терминала при работе с модулями "Артикс:Бонус" и "Подарочные сертификаты"

storeid

строковый


ID магазина на кассовом сервере

Получается с кассового сервера при первичной стыковке

modeстроковый
  • cash (для использования на кассе)
  • server (для использования на МКС)
Режим работы сервиса Sync-agentПо умолчанию cash
unloadscriptстроковый
Скрипт для выгрузки продажПо умолчанию /linuxcash/cash/exchangesystems/exchangers/src/unload/service/cash/startReader.py
usequeueinuploadлогический
  • true

  • false


Использовать очередь при загрузке справочников

По умолчанию true.

  • при значении false используется для обмена потоками с кассовым сервером, запрещено использование обмена через файловую систему,
  • при значении true для обмена справочниками используется очередь
uploadscriptстроковый
Скрипт для загрузки справочников напрямую в БД

По умолчанию /linuxcash/cash/exchangesystems/exchangers/src/upload/converter/aif.py.

Используется при прямой загрузке на КС, если useQueueInUpload=false

maxcountbackupfilesцелочисленный
Количество хранимых файлов бэкаповПо умолчанию сохраняются последние 30 файлов

actualcountdaysforbackupfiles

целочисленный


Количество дней, в течение которых файлы бэкапов остаются актуальными

По умолчанию 30

cashserverrestport

целочисленный


Порт кассового сервера

По умолчанию 8080

dicturlhostcs

строковый


Адрес сервера для загрузки файла справочников

По умолчанию 127.0.0.1

dicturlportcsцелочисленный
Порт сервера для загрузки файла справочниковПо умолчанию 80

grpchostcs

строковый


Адрес сервиса GRPC


grpcportcsцелочисленный
Порт сервиса GRPC
grpccacertpathстроковый
Путь до корневого сертификата для отправки продаж по GRPC с использованием SSL. Сертификат GRPC сервиса должен быть подписан этим корневым сертификатом
protocolversionцелочисленный
  • 2 – сообщение со справочником содержит идентификаторы статусов загрузки справочников на кассы, количество идентификаторов равно количеству касс, для которых был сгенерирован справочник.
  • 3 – в сообщение со справочником помещается один идентификатор статуса генерации справочника.
  • 4 – загрузка продаж с кассы на кассовый сервер осуществляется по протоколу grpc. 
  • 5сообщения справочников будут попадать в БД artixcsAll (либо <clusterId>artixcsAll для кластерного режима), таблица forward_message. Данную версию протокола можно выбрать, только если включена передача справочников по HTTP.


Версия протокола обмена с кассой

По умолчанию используется 5 версия протокола обмена с кассой для Artix Control Center (начиная с версии 4.6.149-5  кассового ПО Artix).

Версия протокола обмена с кассой указывается в веб-интерфейсе кассового сервера


unloadsalesrequestthroughcsлогический
  • true
  • false


Отправка запроса на КС для выгрузки продаж

По умолчанию true.

Значение настройки указывается в кассовом сервере в конфигурационном файле /opt/artixcs-rest/application.properties:

su.artix.cashserver.cashcommunication.thrift.cash.communication.unload.sales.request.through.cs:

  • при значении true при запуске выгрузки продаж касса отправляет REST-запрос на кассовый сервер с уведомлением о получении данных. Выгрузка продаж инициируется по запросу с КС при отсутствии сообщений в очереди,
  • при значении false продажи выгружаются в БД КС без REST-запроса на кассовый сервер с уведомлением о получении данных. Выгрузка продаж инициируется кассой

Отправка кассой уведомления в виде REST-запроса позволит получить более целостное состояние документов продаж, так как КС при получении уведомления запросит данные, начиная со времени последнего чека, имеющегося в БД КС.

Пример
На кассе в БД имеется 10 чеков. Настроена почековая выгрузка продаж, но по какой-то причине на КС доставлено не 10 чеков, а только 1, 2 . В том случае, если настройка имеет значение true КС запросит полные данные со времени последнего чека, т.е. со 2-го.

filequeueroot

строковый

Путь до корневой директории файл-очереди

По умолчанию /opt/queues

queuechunksize

целочисленный


Количество aif-объектов в одном сообщении файл-очереди

По умолчанию 25000

httphostcsстроковый
Адрес HTTP-сервиса


isdebugdictstatussendлогический
  • true
  • false
Отправлять в КЦ подробные статусы о прогрузке справочниковПо умолчанию true
isdebugsalestatussendлогический
  • true
  • false
Отправлять в КЦ подробные статусы о выгрузке продажПо умолчанию true
Пример настройки
[Properties]
dept.broker.ip = 127.0.0.1
dept.broker.port = 5672
brokerconnectionheartbeat = 0
cash.code = _cash_8_99dec44a
storeid = _shop_8_dac059e6
mode = cash
unloadscript = /linuxcash/cash/exchangesystems/exchangers/src/unload/service/cash/startReader.py
usequeueinupload = True
uploadscript = /linuxcash/cash/exchangesystems/exchangers/src/upload/converter/aif.py
maxcountbackupfiles = 30
actualcountdaysforbackupfiles = 30
cashserverrestport = 8080
dicturlhostcs = 127.0.0.1
dicturlportcs = 8080
grpchostcs = 127.0.0.1
grpcportcs = 10001
grpccacertpath =
protocolversion = 5
unloadsalesrequestthroughcs = True
filequeueroot = /linuxcash/cash/data/queues
queuechunksize = 25000
httphostcs = 127.0.0.1
isdebugdictstatussend = True
isdebugsalestatussend = True

Настройка логирования сервиса задается:

  • на кассе в конфигурационной файле /linuxcash/cash/sync/properties/logging.conf
  • на МКС в конфигурационном файле /opt/sync/properties/logging.conf
СекцияНаименованиеТип данныхВозможные значенияОписаниеПримечания

[logger_sync]

level


  • DEBUG
  • INFO
  • WARN
  • ERROR
Уровень логированияПо умолчанию INFO

[handler_fileHandler]

level


  • DEBUG
  • INFO
  • WARN
  • ERROR
Уровень логированияПо умолчанию INFO

[handler_fileHandler]

args



Путь до хранения файлов-логов

Самый детальный уровень логирования - DEBUG, самый строгий - ERROR. В зависимости от выбранного уровня в лог записывается информация, которая соответствует уровню, или строже.

Уровень логированияОписание
ERRORошибка в приложении, приложение может работать дальше без возникновения проблем, причина проблемы может состоять в неправильных входных данных или доступе к внешним сервисам
WARNнекритичная ошибка, приложение может работать дальше без возникновения проблем, вероятно одна из функций приложения дала сбой, который может быть исправлен
INFOважная информация о работе приложения, например, запуск/остановка приложения, использование конфигурационных файлов или аутентификация пользователя в системе
DEBUGотладочная информация работы приложения, например, технические данные, полученные при работе с внешними системами, или информация о вызове методов объектов, включая список параметров
Пример настройки
[loggers]
keys=root,sync

[handlers]
keys=fileHandler

[formatters]
keys=loggerSyncFormatter

[logger_root]
level=INFO
handlers=fileHandler

[logger_sync]
level=INFO
handlers=fileHandler
qualname=sync
propagate=0

[handler_fileHandler]
class=logging.handlers.WatchedFileHandler
delay=False
formatter=loggerSyncFormatter
level=INFO
args=('%(sync)s',)

[formatter_loggerSyncFormatter]
format=%(asctime)s %(thread)d %(levelname)-8s %(message)s %(module)5s(%(lineno)s)

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

Внесение изменений в конфигурационный файл требуется только для изменения размеров очередей или количества резервных копий, остальные настройки получаются кассой с кассового сервера.

Параметры передаются на кассу при каждом сеансе связи, который инициирует сервер:

  • при запросе продаж с кассового сервера,
  • при выгрузке справочников с кассового сервера.

При замене параметров конфигурационный файл обновляется.

С сервера передаются параметры, которые предназначены для осуществления обмена и идентифицируют кассу на сервере:

  • идентификаторы магазина и кассы,
  • хост и порт для обращения к серверу по gRPC,
  • хост и порт для обращения к серверу по HTTP.

При изменении параметров автоматически изменяется маршрутизация очередей.

Если указана настройка grpcCaCertPath, то настройка grpcHostCS на кассе настраивается только вручную и при запросах с КС настройка grpcHostCS не будет изменяться. Если настройка grpcCaCertPath не указана, то поведение остается старым при запросах с КС автоматически изменится настройка grpcHostCS, если она не соответствует IP-адресу КС.

Обмен данными

Обмен между кассовым сервером и кассой

Обмен данными между кассовым сервером и кассой представляет собой процессы передачи справочников и данных продаж.

Загрузка справочников может осуществляться двумя способами:

  • с использованием очереди при загрузке справочников,
  • без использования очереди, напрямую в БД кассы.

Справочники из БД кассового сервера прогружаются на кассу по расписанию либо по требованию пользователя. 

Загрузка справочников с использованием очереди на кассе

Для обмена данными с использованием очереди настройка useQueueInUpload в конфигурационном файле /linuxcash/cash/sync/properties/cash.ini должна принимать значение true.

Для загрузки справочников необходимо, чтобы были запущены службы Sync-agent, БД кассы.

При загрузке справочников с КС на кассу можно параллельно настраивать обмен АСТУ-касса.

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

  1. Направление запросов на выгрузку справочников осуществляется кассовым сервером.
  2. Справочники из БД кассового сервера помещаются в файловую систему и ставятся в очередь на выгрузку.
  3. Как только справочники появились в очереди, сервису Sync-agent с кассового сервера передаются ссылки на скачивание файлов-справочников.
  4. После передачи на сервис Sync-agent ссылок файлы-справочники скачиваются и помещаются в очередь File-Queue на кассе. 
  5. Сервис Nes производит мониторинг файловой очереди на кассе, при появлении в ней справочников происходит их передача в БД кассы.

Загрузка справочников напрямую в БД кассы

Прямая загрузка в БД кассы позволяет загружать справочники большого объема, не ограничиваясь размерами очереди. В этом случае службы exchangers-upload и nes не используются напрямую и могут быть отключены, что позволяет экономить используемую оперативную память.

Обмен без использования очереди задается настройкой useQueueInUpload в конфигурационном файле /linuxcash/cash/sync/properties/cash.ini, которая в этом случае должна принимать значение false. Скрипт загрузки справочников указывается в параметре uploadScript

Алгоритм обмена в этом случае будет следующий:

  1. Направление запросов на выгрузку справочников осуществляется кассовым сервером.
  2. Cправочники из БД КС помещаются в файловую систему и ставятся в очередь на выгрузку. Также отправляется сигнал на получение данных в Sync-agent на кассе.
  3. Sync-agent, используя код служб exchangers-upload и nes, загружает справочники в БД кассы.

Выгрузка продаж

Выгрузка продаж из БД кассы в БД кассового сервера происходит по закрытию смены, либо по запросу КС. Выгрузка продаж выполняется по скрипту unloadScript в конфигурационном файле /linuxcash/cash/sync/properties/cash.ini. В этом случае служба exchangers-unload не используется напрямую и может быть отключена, что позволяет экономить используемую оперативную память.

Алгоритм обмена между кассой и кассовым сервером следующий:

  1. Направление запросов на выгрузку продаж осуществляется со стороны кассового сервера.
  2. Sync-agent, используя exchangers, выполняет выгрузку и формирует файл продаж.
  3. Далее exchanger преобразует файл и передает его Sync-agent, который направляет объекты в сервис Sales-loader
  4. Сервис Sales-loader помещает полученные объекты в файловую систему. Кассовый сервер периодически проверяет файловую систему на наличие новых объектов и загружает их в БД КС.

Обмен между ЦКС и МКС

Обмен данными между ЦКС и МКС представляет собой процессы передачи справочников и данных продаж.

Справочники из БД ЦКС прогружаются в БД All на МКС по расписанию либо по требованию пользователя. В БД магазина на МКС справочники могут быть загружены посредством REST и SOAP сервисов.

Загрузка справочников с использованием очереди на МКС

Алгоритм обмена между ЦКС и МКС следующий:

  1. Из АСТУ в БД МКС загрузка справочников осуществляется через сервис Exchanger.
  2. Сгенерированные справочники помещаются в очередь для последующей загрузки в БД МКС.
  3. ЦКС отправляет сигнал на получение данных в Sync-agent МКС.
  4. Sync-agent получает справочники и отправляет их в очередь File-Queue на МКС. 
  5. Сервис Nes мониторит состояние очереди на МКС и при появлении в ней справочников загружает их в БД All на МКС.

Выгрузка продаж МКС-ЦКС

Выгрузка продаж из БД МКС в БД ЦКС происходит по расписанию или запросу ЦКС.

Алгоритм обмена между МКС и ЦКС по протоколу 3 (thrift) следующий:

  1. ЦКС посылает сигнал на выгрузку продаж в Sync-agent
  2. Sync-agent используя exchangers выполняет выгрузку и формирует файл продаж.
  3. Sync-agent направляет полученные объекты в сервис Sales-loader на ЦКС.
  4. Данные из очереди на ЦКС загружаются в БД ЦКС.

Подробнее о выгрузке продаж с МКС на ЦКС по протоколу 4 (grpc) можно прочитать в разделе "Особенности загрузки продаж по протоколу GRPC".


Выгрузка продаж касса - МКС - ЦКС

Выгрузка продаж с кассы на ЦКС инициируется каждый раз, когда продажи запрашиваются магазинным или центральным кассовым сервером у кассовой программы по расписанию либо по запросу пользователя. Выгрузка продаж может выполняться в БД МКС или одновременно в БД ЦКС и БД МКС.

Алгоритм обмена между кассой, МКС и ЦКС по протоколу 3 (thrift) следующий:

  1. Сигнал на выгрузку продаж в Sync-agent посылается с МКС вручную или по расписанию.
  2. Sync-agent на кассе, используя сервис Exchangers, выполняет выгрузку и формирует файл продаж.
  3. Sync-agent направляет полученные объекты в сервис Sales-loader на МКС. 
  4. Данные из Sales-loader загружаются в БД МКС и отправляются в сервис Sales-loader на ЦКС.

Подробнее о выгрузке продаж с МКС на ЦКС по протоколу 4 (grpc) можно прочитать в разделе "Особенности загрузки продаж по протоколу GRPC".

Логирование и резервные копии

Журнал обращений к Sync-agent сохраняется в файл:

  • /linuxcash/logs/current/sync.log на кассе,
  • /opt/sync/logs/sync.log на МКС.

Информация, которая передается во время сеанса обмена, архивируется и сохранятся в директории:

  • /linuxcash/cash/sync/backup на кассе,
  • /opt/sync/backup на МКС.

Количество резервных копий и период хранения задается в конфигурационном файле:

  • /linuxcash/cash/sync/properties/cash.ini на кассе,
  • /opt/sync/properties/cash.ini на МКС.
  • No labels