Обмен между кассой и кассовым сервером осуществляется в автоматическом режиме. Инициатором обмена, как правило, выступает кассовый сервер, который оповещает кассу о необходимости принять изменения справочников или выгрузить данные о продажах. В отдельных случаях касса может инициировать выгрузку продаж.
Кассовый сервер хранит информацию о справочниках, которые переданы на кассы в магазине. При получении новых данных кассовый сервер вычисляет разницу и передает на кассу только измененную информацию. Сервер запрашивает продажи с кассы в соответствии с расписанием. Для новой кассы, у которой не было продаж, запрашивается информация за последние сутки.
| При добавлении новой кассы требуется выгрузить полный справочник, чтобы синхронизировать состояние кассы и кассового сервера. |
Взаимодействие между кассой и сервером осуществляется через механизм очередей. Для осуществления взаимодействия необходимо настроить параметры кассы на сервере и клиентский модуль на кассе. На стороне кассы за взаимодействие отвечает Sync-agent.
Клиентский модуль для кассы устанавливается пакетом artix-syncagent. |
Параметры работы сервиса на кассе задаются в конфигурационной файле /linuxcash/cash/sync/properties/cash.ini в секции [Properties] (настройки в cash.ini передаются с кассового сервера).
| Наименование | Тип данных | Возможные значения | Описание | Примечания | |
|---|---|---|---|---|---|
dept.broker.ip | строковый | IP-адрес кассового сервера | |||
dept.broker.port | целочисленный | Порт кассового сервера | |||
brokerconnectionheartbeat | целочисленный | Частота проверки доступности соединения до сервера во время подключения и забора сообщений из очереди КС | Значение параметра указывается в секундах. Если соединение потеряно, то подключение закроется и заблокированное (обрабатываемое) сообщение освободится и станет доступно для повторного считывания из очереди КС. | ||
cash.code | строковый | ID кассового узла | Получается с кассового сервера при первичной стыковке. Используется в качестве значения идентификатора терминала при работе с модулями "Артикс:Бонус" и "Подарочные сертификаты" | ||
storeid | строковый | ID магазина на кассовом сервере | Получается с кассового сервера при первичной стыковке | ||
| mode | строковый |
| Режим работы сервиса Sync-agent | По умолчанию cash | |
| unloadscript | строковый | Скрипт для выгрузки продаж | По умолчанию /linuxcash/cash/exchangesystems/exchangers/src/unload/service/cash/startReader.py | ||
| usequeueinupload | логический |
| Использовать очередь при загрузке справочников | По умолчанию
| |
| uploadscript | строковый | Скрипт для загрузки справочников напрямую в БД | По умолчанию Используется при прямой загрузке на КС, если | ||
| maxcountbackupfiles | целочисленный | Количество хранимых файлов бэкапов | По умолчанию сохраняются последние 30 файлов | ||
actualcountdaysforbackupfiles | целочисленный | Количество дней, в течение которых файлы бэкапов остаются актуальными | По умолчанию | ||
cashserverrestport | целочисленный | Порт кассового сервера | По умолчанию | ||
dicturlhostcs | строковый | Адрес сервера для загрузки файла справочников | По умолчанию | ||
| dicturlportcs | целочисленный | Порт сервера для загрузки файла справочников | По умолчанию 80 | ||
grpchostcs | строковый | Адрес сервиса GRPC | |||
| grpcportcs | целочисленный | Порт сервиса GRPC | |||
| grpccacertpath | строковый | Путь до корневого сертификата для отправки продаж по GRPC с использованием SSL. Сертификат GRPC сервиса должен быть подписан этим корневым сертификатом | |||
| protocolversion | целочисленный |
| Версия протокола обмена с кассой | По умолчанию используется Версия протокола обмена с кассой указывается в веб-интерфейсе кассового сервера | |
| unloadsalesrequestthroughcs | логический |
| Отправка запроса на КС для выгрузки продаж | По умолчанию Значение настройки указывается в кассовом сервере в конфигурационном файле
Отправка кассой уведомления в виде REST-запроса позволит получить более целостное состояние документов продаж, так как КС при получении уведомления запросит данные, начиная со времени последнего чека, имеющегося в БД КС.
| |
filequeueroot | строковый | Путь до корневой директории файл-очереди | По умолчанию | ||
queuechunksize | целочисленный | Количество aif-объектов в одном сообщении файл-очереди | По умолчанию | ||
| httphostcs | строковый | Адрес HTTP-сервиса | |||
| isdebugdictstatussend | логический |
| Отправлять в КЦ подробные статусы о прогрузке справочников | По умолчанию true | |
isdebugsalestatussend | логический |
| Отправлять в КЦ подробные статусы о выгрузке продаж | По умолчанию true | |
| errorsFilePath | строковый | Путь до файла-флага с количеством ошибок сервиса | По умолчанию не задано. Файл-флаг представляет собой json-объект вида:
Если возникают новые ошибки в сервисе, то значение параметра |
[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 errorsFilePath ="" |
Настройка логирования сервиса задается:
/linuxcash/cash/sync/properties/logging.conf/opt/sync/properties/logging.conf| Секция | Наименование | Тип данных | Возможные значения | Описание | Примечания |
|---|---|---|---|---|---|
[logger_sync] | level |
| Уровень логирования | По умолчанию INFO | |
[handler_fileHandler] | level |
| Уровень логирования | По умолчанию 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) |
Внесение изменений в конфигурационный файл требуется только для изменения размеров очередей или количества резервных копий, остальные настройки получаются кассой с кассового сервера.
Параметры передаются на кассу при каждом сеансе связи, который инициирует сервер:
При замене параметров конфигурационный файл обновляется.
С сервера передаются параметры, которые предназначены для осуществления обмена и идентифицируют кассу на сервере:
При изменении параметров автоматически изменяется маршрутизация очередей.
Если указана настройка grpcCaCertPath, то настройка grpcHostCS на кассе настраивается только вручную и при запросах с КС настройка grpcHostCS не будет изменяться. Если настройка grpcCaCertPath не указана, то поведение остается старым при запросах с КС автоматически изменится настройка grpcHostCS, если она не соответствует IP-адресу КС. |
Обмен данными между кассовым сервером и кассой представляет собой процессы передачи справочников и данных продаж.
Загрузка справочников может осуществляться двумя способами:
Справочники из БД кассового сервера прогружаются на кассу по расписанию либо по требованию пользователя.
Для обмена данными с использованием очереди настройка useQueueInUpload в конфигурационном файле /linuxcash/cash/sync/properties/cash.ini должна принимать значение true.
Для загрузки справочников необходимо, чтобы были запущены службы Sync-agent, БД кассы.
При загрузке справочников с КС на кассу можно параллельно настраивать обмен АСТУ-касса.
Алгоритм обмена между кассовым сервером и кассой в случае использования очереди на кассе следующий:
Sync-agent с кассового сервера передаются ссылки на скачивание файлов-справочников.Sync-agent ссылок файлы-справочники скачиваются и помещаются в очередь File-Queue на кассе. Nes производит мониторинг файловой очереди на кассе, при появлении в ней справочников происходит их передача в БД кассы.Прямая загрузка в БД кассы позволяет загружать справочники большого объема, не ограничиваясь размерами очереди. В этом случае службы exchangers-upload и nes не используются напрямую и могут быть отключены, что позволяет экономить используемую оперативную память.
Обмен без использования очереди задается настройкой useQueueInUpload в конфигурационном файле /linuxcash/cash/sync/properties/cash.ini, которая в этом случае должна принимать значение false. Скрипт загрузки справочников указывается в параметре uploadScript.
Алгоритм обмена в этом случае будет следующий:
Sync-agent на кассе.Sync-agent, используя код служб exchangers-upload и nes, загружает справочники в БД кассы.Выгрузка продаж из БД кассы в БД кассового сервера происходит по закрытию смены, либо по запросу КС. Выгрузка продаж выполняется по скрипту unloadScript в конфигурационном файле /linuxcash/cash/sync/properties/cash.ini. В этом случае служба exchangers-unload не используется напрямую и может быть отключена, что позволяет экономить используемую оперативную память.
Алгоритм обмена между кассой и кассовым сервером следующий:
Sync-agent, используя exchangers, выполняет выгрузку и формирует файл продаж.exchanger преобразует файл и передает его Sync-agent, который направляет объекты в сервис Sales-loader. Sales-loader помещает полученные объекты в файловую систему. Кассовый сервер периодически проверяет файловую систему на наличие новых объектов и загружает их в БД КС.Обмен данными между ЦКС и МКС представляет собой процессы передачи справочников и данных продаж.
Справочники из БД ЦКС прогружаются в БД All на МКС по расписанию либо по требованию пользователя. В БД магазина на МКС справочники могут быть загружены посредством REST и SOAP сервисов.
Алгоритм обмена между ЦКС и МКС следующий:
Exchanger.Sync-agent МКС.Sync-agent получает справочники и отправляет их в очередь File-Queue на МКС. Nes мониторит состояние очереди на МКС и при появлении в ней справочников загружает их в БД All на МКС.Выгрузка продаж из БД МКС в БД ЦКС происходит по расписанию или запросу ЦКС.
Алгоритм обмена между МКС и ЦКС по протоколу 3 (thrift) следующий:
Sync-agent. Sync-agent используя exchangers выполняет выгрузку и формирует файл продаж.Sync-agent направляет полученные объекты в сервис Sales-loader на ЦКС.Подробнее о выгрузке продаж с МКС на ЦКС по протоколу 4 (grpc) можно прочитать в разделе "Особенности загрузки продаж по протоколу GRPC".
Выгрузка продаж с кассы на ЦКС инициируется каждый раз, когда продажи запрашиваются магазинным или центральным кассовым сервером у кассовой программы по расписанию либо по запросу пользователя. Выгрузка продаж может выполняться в БД МКС или одновременно в БД ЦКС и БД МКС.
Алгоритм обмена между кассой, МКС и ЦКС по протоколу 3 (thrift) следующий:
Sync-agent посылается с МКС вручную или по расписанию.Sync-agent на кассе, используя сервис Exchangers, выполняет выгрузку и формирует файл продаж.Sync-agent направляет полученные объекты в сервис Sales-loader на МКС. 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 на МКС.