Для продажи маркированного пива в бутылках необходимо использовать модуль маркированных товаров.
Система мониторинга оборота разливного пива создана с целью информационного обеспечения маркировки товаров средствами идентификации и мониторинга оборота разливного пива.
Система охватывает все этапы оборота товара: от производителя до потребителя. На каждом шаге код проверяется, а после продажи товар снимается с оборота.
Для контроля разливного пива используется двумерный штрих-код Data Matrix, наносимый на поверхность кег. Data Matrix содержит в себе сведения о штрих-коде товара и коде идентификации.
Для продажи разливного пива у товара должен быть установлен признак tmctype = 8
(БД Dictionaries
таблица Barcodes
) или товар должен входить в каталог с атрибутом 11
(БД Dictionaries
таблица Catalogattribute
поле attribute
).
В кассовом ПО Artix поддержана возможность продажи разливного пива в тару. О продаже товаров в тару можно прочитать в статье "Продажа в тару".
Конфигурирование модуля
Модуль активируется параметром draftbeer
в конфигурационном файле /linuxcash/cash/conf/ncash.ini.d/draftbeer.ini
в секции [plugins]
.
Наименование | Тип данных | Возможные значения | Описание | Примечания |
---|---|---|---|---|
draftbeer | логический |
| Мониторинг оборота разливного пива | По умолчанию off |
[plugins] ; Мониторинг оборота разливного пива ;draftbeer = off
Настройка модуля производится в конфигурационном файле /linuxcash/cash/conf/ncash.ini.d/draftbeer.ini
в секции [DraftBeer
]:
Маска для проверки кода маркировки разливного пива задается параметром dataMatrixMask
.
Наименование | Тип данных | Описание | Примечания |
---|---|---|---|
dataMatrixMask | строковый | Маска для проверки Data Matrix разливного пива | По умолчанию |
uniqueIdPattern | строковый | Шаблон для формирования уникального идентификатора операции резервирования | По умолчанию %(document.shopCode[04d])%(document.cashCode[02d])%(document.shift[04d])%(document.num[07d])%(position.posnum[04d]) |
[DraftBeer] ; Настройки плагина мониторинга оборота разливного пива ... ; Маска для проверки DataMatrix разливного пива ; По умолчанию 01(?<barcode>[0-9]{14})21.{7}(\x{001d}|\s*)93.{4}(335[0-6]{1}[0-9]{6}){0,1}\s* ;dataMatrixMask=01(?<barcode>[0-9]{14})21.{7}(\x{001d}|\s*)93.{4}(335[0-6]{1}[0-9]{6}){0,1}\s* ; Шаблон для формирования уникального идентификатора операции резервирования ; По умолчанию %(document.shopCode[04d])%(document.cashCode[02d])%(document.shift[04d])%(document.num[07d])%(position.posnum[04d]) ;uniqueIdPattern = %(document.shopCode[04d])%(document.cashCode[02d])%(document.shift[04d])%(document.num[07d])%(position.posnum[04d])
Код маркировки должен подходить только под одну маску для проверки Data Matrix.
Продажа разливного пива без учета остатков
Добавление разливного пива без учета остатков
Добавление в чек товара с кодом маркировки осуществляется несколькими способами:
- последовательным сканированием штрих-кода товара и кода маркировки или использованием горячей клавиши (с назначением товара по коду/штрих-коду) и сканированием кода маркировки:
- если код/штрих-код товара соответствует коду маркировки, то товар будет добавлен в чек,
- если код/штрих-код товара не соответствует коду маркировки, то на экран будет выведена ошибка "Код маркировки не соответствует штрих-коду", товар в чек не будет добавлен.
- сканированием кода маркировки (код маркировки содержит в себе данные кода/штрих-кода, поэтому сканировать код/штрих-код не требуется).
Добавление в чек разливного пива без ввода кода маркировки определяется параметром addWithoutScanMark
в конфигурационном файле /linuxcash/cash/conf/ncash.ini.d/draftbeer.ini
в секции [DraftBeer]
:
- при значении
true
при добавлении товара в чек на экран будет выведен диалог сканирования кода маркировки, в котором есть возможность добавить разливное пиво без маркировки, - при значении
false
при добавлении товара в чек на экран будет выведен диалог сканирования кода маркировки.
Наименование | Тип данных | Возможные значения | Описание | Примечания |
---|---|---|---|---|
addWithoutScanMark | логический |
| Добавлять разливное пиво в чек без ввода кода маркировки | По умолчанию false |
[DraftBeer] ... ; Добавлять разливное пиво в чек без ввода кода маркировки ; По умолчанию false ;addWithoutScanMark = false
В кассовом ПО Artix реализована возможность блокировать сканер при отображении диалога подтверждения ошибки сканирования кода маркировки. Данная возможность задается при помощи параметра showScanErrorDialog
в конфигурационном файле /linuxcash/cash/conf/ncash.ini.d/draftbeer.ini
в секции [DraftBeer]
. В случае возникновения ошибки сканирования:
при значении
true
сканер будет заблокирован, будет отображен диалог подтверждения ошибки с сообщением "Ошибка сканирования кода маркировки", товар не добавляется в чек,После закрытия диалога сканер будет разблокирован.- при значении
false
блокировка сканера не осуществляется, будет отображен диалог сканирования кода маркировки "Ошибка считывания кода маркировки, повторите сканирование", товар не добавляется в чек.
После ввода верного кода маркировки товар добавляется в чек.
Наименование | Тип данных | Возможные значения | Описание | Примечания |
---|---|---|---|---|
showScanErrorDialog | логический |
| Блокировать сканер и отображать диалог подтверждения ошибки сканирования кода маркировки | По умолчанию false |
[DraftBeer] ... ; Блокировать сканер и отображать диалог подтверждения ошибки сканирования кода маркировки ; По умолчанию false ;showScanErrorDialog = false
Разрешенные типы данных для ввода кода маркировки
В кассовом ПО Artix реализована возможность настройки разрешенных типов данных для ввода кода маркировки, задается параметром permittedInput
в конфигурационном файле /linuxcash/cash/conf/ncash.ini.d/draftbeer.ini
в секции [DraftBeer]
:
При добавлении в чек маркированного товара:
- сканированием кода маркировки с типом данных, не указанным в настройке, на экран будет выведена ошибка "Неверный тип ввода данных",
- последовательным сканированием штрих-кода и кода маркировки с типом данных, не указанным в настройке, код маркировки будет проигнорирован.
Наименование | Тип данных | Возможные значения | Описание | Примечания |
---|---|---|---|---|
permittedInput | целочисленный |
| Разрешенные типы вводимых данных | По умолчанию разрешены все типы вводимых данных |
[DraftBeer] ... ; Разрешенные типы вводимых данных ; По умолчанию "" - все типы вводимых данных ;permittedInput =
Сторнирование разливного пива без учета остатков
При сторнировании разливного пива требуется считывание кода маркировки товара.
В кассовом ПО Artix реализована возможность удаления позиции с другим штрих-кодом при сторнировании по коду маркировки, задается параметром allowNotMatchingBarcodesOnStorno
в конфигурационном файле /linuxcash/cash/conf/ncash.ini.d/draftbeer.ini
в секции [DraftBeer]
:
- при значении
true
после сканирования кода маркировки из чека удаляется именно та позиция, данные которой были считаны, независимо от того, какая позиция была выбрана для сторнирования, - при значении
false
при сканировании кода маркировки, если он не соответствует выбранной позиции, на экран будет выведена ошибка "Отсканирована маркировка от другого товара". После подтверждения повторно отображается диалог сканирования кода маркировки.
Наименование | Тип данных | Возможные значения | Описание | Примечания |
---|---|---|---|---|
allowNotMatchingBarcodesOnStorno | логический |
| Разрешить удаление позиции с другим штрих-кодом при сторнировании по коду маркировки | По умолчанию true |
При сторнировании всего чека, содержащего разливное пиво, операция выполняется без считывания кодов маркировок.
Продажа разливного пива с учетом остатков
Установка и настройка сервиса учета остатков
В кассовом ПО Artix реализована возможность учета остатков разливного пива при помощи сервиса draftbeerservice
. Для возможности учета остатков необходимо:
Установить пакет
artix-draftbeerservice
командой:apt install artix-draftbeerservice
После установки сервис запустится автоматически.
Настроить сервис в конфигурационном файле
/linuxcash/cash
/draftbeerservice/config/draftbeerservice.ini
в секции[draftbeerservice]
.Наименование Тип данных Описание Примечания port целочисленный Порт HTTP-сервера для обработки REST-запросов По умолчанию 38085
remainDraftbeerItemsLifetime целочисленный Срок хранения записей в БД Dictionaries
таблицуRemaindraftbeer
с момента подключения (в днях)По умолчанию
0
(выключено)При превышении срока хранения запись удаляется, если для кода маркировки нет остатков
Пример настройки[draftbeerservice] ; Порт HTTP-сервера для обработки REST-запросов ; по умолчанию 38085 ;port=38085 ; Срок хранения записей в таблице dictionaries.remaindraftbeer с момента подключения. ; При превышении срока хранения запись удаляется, если для кода маркировки нет остатков ; по умолчанию 0 (выключено), указывается в днях ;remainDraftbeerItemsLifetime = 0
Логирование работы сервиса ведется в файле/linuxcash/logs/current/draftbeerservice.log
.Для использования сервиса по учету остатков необходимо задать параметр
useRemain
в конфигурационном файле/linuxcash/cash/conf/ncash.ini.d/draftbeer.ini
в секции[DraftBeer]
:- при значении
true
после успешного закрытия документа данные об остатках сохраняются в БДDictionaries
таблицуRemaindraftbeer
, при значении
false
учет остатков не осуществляется.
Наименование Тип данных Возможные значения Описание Примечания useRemain
логический - true
- false
Использовать сервис по учету остатков По умолчанию false
Пример настройки[DraftBeer] ... ; Использовать сервис по учету остатков ; По умолчанию false useRemain = true
- при значении
Указать объемы кега, которые могут быть добавлены в чек при постановке на кран, необходимо задать список значений с помощью параметра
kegVolume
в конфигурационном файле/linuxcash/cash/conf/ncash.ini.d/draftbeer.ini
в секции[DraftBeer]
.Наименование Тип данных Описание Примечания kegVolume строковый Предустановленные для выбора объемы кега при постановке на кран По умолчанию 20
,30
,50
Пример настройки[DraftBeer] ... ; Предустановленные для выбора объемы кега при постановке на кран ; По умолчанию 20,30,50 ;kegVolume = "20,30,50"
Для ввода предельной даты реализации при постановке кега на кран необходимо задать параметр
requireExpirationDate
в конфигурационном файле/linuxcash/cash/conf/ncash.ini.d/draftbeer.ini
в секции[DraftBeer]
:- при значении
true
будет запрошен ввод предельной даты реализации при постановке кега на кран, - при значении
false
ввод предельной даты реализации при постановке кега на кран запрошен не будет.
Возможность автоматически подставлять предельную дату реализации задается параметром
defaultExpirationDays
в конфигурационном файле/linuxcash/cash/conf/ncash.ini.d/draftbeer.ini
в секции[DraftBeer]
.Наименование Тип данных Возможные значения Описание Примечания requireExpirationDate логический - true
- false
Запрашивать предельную дату реализации при постановке кега на кран По умолчанию
false
При включенной настройке ввод предельной даты реализации обязателен. Если дата указана некорректно, то сохранить ее невозможно. Диалог закрывается только при вводе корректной даты
defaultExpirationDays целочисленный любое целое число Автоматически подставлять предельную дату реализации По умолчанию
-1
(выключено)В диалоге ввода предельной даты реализации будет отображаться текущая дата, увеличенная на значение настройки (в днях)
Пример настройки[DraftBeer] ... ; Запрашивать срок годности при постановке кега на кран ; По умолчанию false ;requireExpirationDate = false ; Автоматически подставлять предельную дату реализации ; Используется текущая дата, увеличенная на значение настройки (в днях) ; По умолчанию -1 (выключено) ;defaultExpirationDays = -1
Предельная дата реализации должна превышать текущую не менее чем на один день, и не более, чем на один год.
- при значении
Выполнить стыковку сервиса с кассой.
Для этого необходимо задать параметрыmarkVerifyUrl
иmarkVerifyTimeout
.
Возможность игнорировать ошибки обращения к сервису проверки кодов маркировок задается при помощи параметраignoreMarkVerifyErrors
:- при значении
true
ошибки обращения к сервису проверки кодов маркировок игнорируются, продажа может быть выполнена, - при значении
false
в случае возникновения ошибок при проверке кода маркировки будет выведено сообщение "Не удалось выполнить проверку кода маркировки (Ошибка соединения с сервером)", продажа не может быть выполнена.
Наименование Тип данных Возможные значения Описание Примечания markVerifyUrl строковый URL сервиса проверки кодов маркировок По умолчанию
http://localhost:38085
.Для корректной работы необходимо указать:
- хост – хост кассы, на которой установлен сервис
draftbeerservice
, - порт -- порт из настроек сервиса
draftbeerservice
.
markVerifyTimeout целочисленный Таймаут обращения к сервису проверки кодов маркировок в секундах По умолчанию 30
ignoreMarkVerifyErrors логический - true
- false
Игнорировать ошибки обращения к сервису проверки кодов маркировок По умолчанию false
Пример настройки[DraftBeer] ; Настройки плагина мониторинга оборота разливного пива ; Url сервиса проверки кодов маркировки ;markVerifyUrl = http://localhost:38085 ; Таймаут обращения к сервису проверки кодов маркировки в секундах ; По умолчанию 30 ;markVerifyTimeout = 30 ; Игнорировать ошибки обращения к сервису проверки кодов маркировки ; По умолчанию false ;ignoreMarkVerifyErrors = false
- при значении
Способы добавления остатков
Остатки могут быть добавлены следующими способами:
- Постановка кега на кран в кассовом ПО
- Загрузка остатков в виде справочников из внешней системы
Постановка кега на кран
Для постановки кега на кран необходимо:
- Создать пункт меню "Постановка кега на кран" с командой
COMMAND_CONNECT_TAP
в утилите администрирования Yuki. Подробнее о настройке действий и меню можно прочитать в разделе "Настройка действий".
При выборе пункта меню "Постановка кега на кран" осуществляется переход в режим постановки кега на кран. - Добавить товар:
- по штрих-коду с последующим сканированием кода маркировки,
- по коду маркировки.
- Выбрать объем кега.
- Ввести предельную дату реализации, если включена настройка
requireExpirationDate
.
После успешной проверки позиций формируется документ "Постановка кега на кран".
После закрытия документа данные об остатках записываются в БД Dictionaries
таблицу Remaindraftbeer
. Для печати документа постановки кега на кран используется шаблон connecttap.xml
из каталога /linuxcash/cash/reports/
.
Загрузка остатков в виде справочников
Справочники остатков разливного пива могут быть загружены на кассу следующими способами:
- напрямую на кассу – с помощью команд AIF,
- с кассового сервера.
Отключение кега от крана
Для отключения кега от крана необходимо:
Создать пункт меню "Отключение кега от крана" с командой
COMMAND_DISCONNECT_TAP
в утилите администрирования Yuki. Подробнее о настройке действий и меню можно прочитать в разделе "Настройка действий".
При выборе пункта меню осуществляется переход в режим отключения кега от крана.Отключить кег от крана также можно из формы просмотра подробной информации о товаре. В этом случае команда
COMMAND_DISCONNECT_TAP
вызывается по нажатию клавиши "Ввод".Ввод кода маркировки не требуется.
- Отсканировать код маркировки товара, остатки которого необходимо удалить.
После успешной проверки отсканированного кода маркировки формируется документ "Отключение от крана". После закрытия документа данные об остатках удаляются из БД Dictionaries
таблицы Remaindraftbeer
. Для печати документа отключения кега от крана используется шаблон disconnecttap.xml
из каталога /linuxcash/cash/reports/
.
Добавление разливного пива с учетом остатков
При попытке добавить пиво в чек по коду маркировки будет выведена ошибка: "Добавление пива по коду маркировки запрещено".
После добавления товара по штрих-коду или горячей клавише (с назначением товара по коду/штрих-коду) на сервис draftbeerservice
отправляется запрос списка доступных кодов маркировок для введенного штрих-кода:
если код/штрих-код соответствует коду маркировки и остатков пива достаточно для продажи, то товар будет добавлен в чек,
Если у первого кода маркировки в списке количество меньше, чем требуется для продажи, то в чек добавляются позиции на основе следующих по списку кодов маркировок с тем же штрих-кодом.
Список упорядочен по дате подключения кега, начиная с самой ранней.
если общее количество пива в подключенных кегах меньше требуемого, то будет выведено сообщение вида: "Подключите новый кег. Доступное количество:
<количество>
",- если введенный штрих-код (или код, который соответствует штрих-коду остатков) не был добавлен в остатки ранее, то будет выведено сообщение о неудачной попытке подключения: "Пиво с таким штрих-кодом не подключено".
В кассовом ПО Artix может быть задана возможность добавления товара по коду, определяется параметром inputByBarcode
в конфигурационном файле /linuxcash/cash/conf/ncash.ini.d/draftbeer.ini
в секции [DraftBeer]
:
- при значении
true:
- если введенный код принадлежит маркированному товару, то на сервис
draftbeerservice
отправляется запрос со списком штрих-кодов данного товара. В ответе на запрос от сервера будет получен код маркировки с остатками с самой ранней датой подключения. Товар будет добавлен в чек по штрих-коду, полученному из кода маркировки, - если товар не найден по коду, по полученному штрих-коду или введенный код не принадлежит маркированному товару, то товар не будет добавлен в чек.
- если введенный код принадлежит маркированному товару, то на сервис
- при значении
false
добавление товара по коду запрещено.
Наименование | Тип данных | Возможные значения | Описание | Примечания |
---|---|---|---|---|
inputByBarcode | логический |
| Добавлять товар по штрих-коду, если введён код разливного пива | По умолчанию false |
[DraftBeer] ... ; Добавлять товар по штрих-коду, если введён код разливного пива ; По умолчанию false inputByBarcode = true
При успешном добавлении в чек для каждого штрих-кода выполняется запрос на постановку в резерв (БД Documents
таблица Draftbeeritem
поле status
= 3
). При сторнировании пива в чеке, на сервис отправляется запрос с отменой резерва, соответствующая запись удаляется из таблицы.
В кассовом ПО Artix реализована возможность задавать соотнесение объема кега и уровня остатков для оповещения кассира о постановке на кран нового кега. Данное поведение регулируется параметром fewRemainNotificationLevel
в конфигурационном файле /linuxcash/cash/conf/ncash.ini.d/draftbeer.ini
в секции [DraftBeer]
.
Наименование | Тип данных | Описание | Примечания |
---|---|---|---|
fewRemainNotificationLevel | строковый | Соотнесение объема кега и уровня остатков для оповещения кассира о постановке на кран нового кега | По умолчанию не задано. Задается как список пар вида |
[DraftBeer] ... ; Соотнесение объема кега и уровня остатков для оповещения кассира о постановке на кран нового кега ; [<объем подключенного кега>:<остаток в кеге>] ; По умолчанию "" ;fewRemainNotificationLevel = "[20:2],[30:2],[50:5]"
Если уровень остатков в последнем подключенном кеге уменьшился до порогового значения, то при переходе в подытог будет выведено предупреждение "Остаток '<наименование товара>
' в кеге меньше <пороговое значение>
л. Скоро потребуется подключить новый кег".
При закрытии чека проданные позиции пива отправляются на подтверждение через очередь с типом сообщения partialreservation
(БД Documents
таблица Draftbeeritem
поле status
= 1
).
Сторнирование разливного пива с учетом остатков
При сторнировании позиции или всего чека с подключением к сервису по учету остатков операция выполняется без считывания кодов маркировок.
Просмотр остатков разливного пива
Для возможности просмотра остатков необходимо создать пункт меню "Просмотр остатков разливного пива" с командой COMMAND_DRAFTBEER_REMAINS
в утилите администрирования Yuki. Подробнее о настройке действий и меню можно прочитать в разделе "Настройка действий".
При выборе пункта меню на сервис отправляется запрос на получение списка актуальных остатков по подключенным кодам маркировки из БД Dictionaries
таблицы Remaindraftbeer
. Для просмотра подробной информации о каждой записи в списке кодов маркировок необходимо выбрать позицию или сканировать соответствующий код маркировки.
Если товаров нет на остатке, то при попытке просмотреть информацию об остатках пива будет выведено предупреждение: "Товаров нет на остатке".
Возврат разливного пива
При возврате разливного пива остатки не восстанавливаются, возврат осуществляется без обращения на сервис учета остатков draftbeerservice
.
Возврат разливного пива в торговую сеть может быть осуществлен в режиме возврата или возврата по чеку продажи.
В режиме возврата добавление разливного пива в чек выполняется аналогично добавлению в чек продажи. В режиме возврата по чеку продажи, независимо от настройки
useRemain
, пиво добавляется в чек с данными из чека продажи без контроля кода маркировки.
Если при возврате по чеку продажи не используется форма выбора товаров, то при переходе к формированию чека возврата разливное пиво удаляется из чека.
Выбор разливного пива в форме выбора товара для возврата не может быть отменен. Сторнирование разливного пива в этом случае выполняется в режиме формирования чека возврата.
Настройка отображения полей
"Информация о товаре"
При необходимости можно настроить отображение полей на следующих формах:
"Постановка кега на кран"
Стиль отображения списка позиций для формы постановки кега на кран можно изменить в конфигурационном файле/linuxcash/cash/conf/ncash.ini.d/draftbeer.ini
в секции[UI.ConnectTapForm.positions]
:Пример настройки[UI.ConnectTapForm.positions] ; Отображение списка позиций на форме постановки кега на кран ; По умолчанию bcode;Штрих-код;180;true;132, name;Наименование;-1;true;129, shelflifedatetime;Предельная дата реализации;-2;true;132;До dd-MM-yyyy, bquant;;-2;true;129 ;fields = "bcode;Штрих-код;180;true;132, name;Наименование;-1;true;129, shelflifedatetime;Предельная дата реализации;-2;true;132;До dd-MM-yyyy, bquant;;-2;true;129"
"Просмотр остатков по коду маркировки"
Стиль отображения списка позиций для формы просмотра остатков можно изменить в конфигурационном файле/linuxcash/cash/conf/ncash.ini.d/draftbeer.ini
в секции[UI.DraftBeerRemainForm.positions]
:Пример настройки[UI.DraftBeerRemainForm.positions] ; Отображение списка позиций на форме просмотра остатков ; По умолчанию barcode;Штрих-код;180;true;132, name;Наименование;-1;true;132, connectdate;Дата подключения;250;true;132;dd-MM-yyyy, expirationdate;Реализовать до;-2;false;132;dd-MM-yyyy, tapvolume;Объем кега;-2;false;132, remain;Количество;-2;true;132, markingcode;Код маркировки;-1;false;132 ;fields = "barcode;Штрих-код;180;true;132, name;Наименование;-1;true;132, connectdate;Дата подключения;250;true;132;dd-MM-yyyy, expirationdate;Реализовать до;-2;false;132;dd-MM-yyyy, tapvolume;Объем кега;-2;false;132, remain;Количество;-2;true;132, markingcode;Код маркировки;-1;false;132"
При разрешении экрана 1024х768 и выше предусмотрена возможность отображения дополнительных полей:
Пример настройки[UI.DraftBeerRemainForm.positions] ... ;Отображение дополнительных полей: "Реализовать до", "Объем кега" ;fields = "barcode;Штрих-код;170;true;132, name;Наименование;-1;true;132, connectdate;Дата подключения;230;true;132;dd-MM-yyyy, expirationdate;Реализовать до;155;true;132;dd-MM-yyyy, tapvolume;Объем кега;160;true;132, remain;Количество;120;true;132, markingcode;Код маркировки;-1;false;132"
- "Информация о товаре"
Стиль отображения дат для формы просмотра информации об остатках для товара можно изменить в конфигурационном файле/linuxcash/cash/conf/ncash.ini.d/draftbeer.ini
в секциях:[UI.DraftBeerInfoForm.draftBeerConnectDate]
– отображение даты постановки на кран:Пример настройки[UI.DraftBeerInfoForm.draftBeerConnectDate] ; Отображение даты постановки на кран на форме просмотра информации об остатках разливного пива ; Формат отображения даты и времени ; По умолчанию "dd-MM-yyyy hh:mm:ss" ;dataFormat = "dd-MM-yyyy hh:mm:ss"
[UI.DraftBeerInfoForm.draftBeerExpDate]
– отображение предельной даты реализации:Пример настройки[UI.DraftBeerInfoForm.draftBeerExpDate] ; Отображение предельной даты реализации на форме просмотра информации об остатках разливного пива ; Формат отображения даты и времени ; По умолчанию "dd-MM-yyyy hh:mm:ss" ;dataFormat = "dd-MM-yyyy hh:mm:ss"
Подробнее о задании параметров настройки можно прочитать в разделе "Графический интерфейс".
Разрешительный режим
Начиная с версии 4.6.272-7 кассового ПО Artix реализована возможность проверки кодов маркировок в локальном модуле системы "Честный знак".
В кассовом ПО Artix реализован разрешительный режим – обязательная проверка кодов маркировок в системе цифровой маркировки "Честный знак".
На основании Постановления Правительства Российской Федерации от 21.11.2023 № 1944 с 1 апреля 2024 года в розничных магазинах при продаже маркированных товаров должна осуществляться обязательная проверка кодов маркировок в системе цифровой маркировки "Честный знак".
Разрешительный режим вводится в несколько этапов и имеет отличия по срокам для товарных групп, категорий продавцов и применения проверок в онлайн и офлайн режимах.
Рекомендуется дополнительно ознакомиться с методическими рекомендациями по разрешительному режиму здесь, со сроками запуска разрешительного режима и с другой информацией на официальной странице "Честного знака".
Помимо проверки валидности марки осуществляется проверка срока годности товара. Если у срока годности товара указана дата, но не указано время (в часах, минутах и секундах), то данный товар будет запрещен к продаже в полночь того же дня.
При проверке кодов маркировок некоторых товаров, ввозимых в Россию из стран таможенного союза, могут возникать ошибки.
Разрешительный режим также поддержан для софт-чеков и онлайн-чеков:
- проверка кодов маркировок происходит при восстановлении онлайн-чеков,
- для софт-чеков проверка кода маркировки товара происходит при сканировании маркированной позиции в заказе.
Если параметры проверки заданы некорректно или задан недействительный токен авторизации, то:
- продажа маркированных товаров будет осуществляться без проверки в системе цифровой маркировки "Честный знак",
- тег 1265 с результатом проверки заполняться не будет.
Если в чек добавлено разливное пиво, то при повторном добавлении пива с таким же кодом маркировки его проверка в системе "Честный знак" производиться не будет.
Обязательная проверка кодов маркировок на сервере системы "Честный знак" задается при помощи параметра enableMarkVerifyCrpt
в конфигурационном файле /linuxcash/cash/conf/ncash.ini.d/draftbeer.ini
в секции [DraftBeer]
:
- при значении
true
осуществляется проверка кода маркировки на сервере системы "Честный знак", - при значении
false
проверка кода маркировки на сервере системы "Честный знак" не осуществляется.
Возможность игнорировать ошибки обращения к серверу системы "Честный знак" задается при помощи параметра ignoreMarkVerifyCrptConnectionErrors
в конфигурационном файле /linuxcash/cash/conf/ncash.ini.d/draftbeer.ini
в секции [DraftBeer]
:
- при значении
deny
в случае возникновения ошибок на экран будет выведен диалог с сообщением об ошибке: "Не удалось выполнить проверку кода маркировки (Ошибка соединения с сервером)", после закрытия диалога товар не будет добавлен в чек, - при значении
ask
в случае возникновения ошибок на экран будет выведен диалог с сообщением об ошибке: "Не удалось выполнить проверку кода маркировки (Ошибка соединения с сервером)", по нажатию клавиши "Продолжить" товар добавляется в чек, по нажатию клавиши "Отмена" товар не будет добавлен в чек, - при значении
allow
статус игнорируется, товар будет добавлен в чек.
Возможность запросить подтверждение добавления товара при провале проверки маркировки задается при помощи параметра markVerifyCrptAskConfirmation
в конфигурационном файле /linuxcash/cash/conf/ncash.ini.d/draftbeer
.ini
в секции [DraftBeer]
:
- при значении
true
на экран будет выведен диалог с сообщением об ошибке: по нажатию клавиши "Ввод" товар будет добавлен в чек, по нажатию клавиши "Отмена" товар не будет добавлен в чек, - при значении
false
на экран будет выведен диалог с сообщением об ошибке, после закрытия диалога товар не будет добавлен в чек.
Наименование | Типа данных | Возможные значения | Описание | Примечание |
---|---|---|---|---|
enableMarkVerifyCrpt | логический |
| Проверка кодов маркировок на сервере честного знака | По умолчанию Для корректной работы при включенной настройке необходимо задать токен для доступа к серверу системы "Честный знак". |
markVerifyCrptUrl | строковый | Url сервера проверки кодов маркировок честного знака | По умолчанию Можно указать несколько значений через запятую | |
markVerifyCrptTimeout | целочисленный | Таймаут обращения к серверу проверки кодов маркировок честного знака в секундах | По умолчанию Минимальное значение, которое можно указать – | |
markVerifyCrptRequestTimeout | строковый | Таймаут обращения к CDN-серверу честного знака Если не задан, то используется значение настройки markVerifyCrptTimeout | По умолчанию не задан | |
ignoreMarkVerifyCrptConnectionErrors | строковый |
| Игнорировать ошибки обращения к серверу честного знака | По умолчанию deny |
markVerifyCrptAskConfirmation | логический |
| Запросить подтверждение добавления товара при провале проверки маркировки | По умолчанию false |
[DraftBeer] ... ; Проверка кодов маркировки на сервере честного знака ; По умолчанию false ;enableMarkVerifyCrpt = false ; Url сервера проверки кодов маркировки честного знака ; По умолчанию https://cdn.crpt.ru ;markVerifyCrptUrl = https://cdn.crpt.ru ; Таймаут обращения к серверу проверки кодов маркировки честного знака в секундах ; По умолчанию 30 ;markVerifyCrptTimeout = 30 ; Таймаут обращения к CDN-серверу честного знака ; Если не задан, то используется значение настройки markVerifyCrptTimeout ; По умолчанию не задан ;markVerifyCrptRequestTimeout = ; Игнорировать ошибки обращения к серверу честного знака ; По умолчанию deny ;ignoreMarkVerifyCrptConnectionErrors = deny ; Запросить подтверждение добавления товара при провале проверки маркировки ; По умолчанию false ;markVerifyCrptAskConfirmation = false ...
В кассовом ПО Artix реализована возможность авторизации по токену УОТ (участника оборота товаров) в системе цифровой маркировки "Честный знак". Данная возможность задается при помощи параметра xapikey
в конфигурационном файле /linuxcash/cash/conf/ncash.ini.d/draftbeer.ini
в секции [DraftBeer
]:
Наименование | Тип данных | Описание | Примечания |
---|---|---|---|
xapikey | строковый | Токен для доступа к серверу честного знака |
Использование токена вида С информацией о получении токена можно ознакомиться в Методических рекомендациях по разрешительному режиму. |
[DraftBeer] ... ; Токен для доступа к серверу честного знака ; При использовании нескольких юрлиц задаются токены для отделов: ; xapikey = [<отдел1>:<токен1>],[<отдел2>.<отдел3>:<токен2>] ; При использовании одного юрлица токен задается для отдела -1 ; xapikey = [-1:<токен>] ;xapikey =
Если задан невалидный токен, то будет выведено уведомление "Честный знак: ошибка токена. Чеки будут сформированы некорректно".
Если при работе с несколькими юридическими лицами не задан токен хотя бы для одного из отделов, то будет выведено предупреждение "Честный знак: токен для проверки не найден. Товар не будет добавлен".
При использовании нескольких юрлиц выполняется перебор токенов для авторизации (начиная с последнего указанного токена в параметре xapikey
). Если после перебора всех токенов авторизация не выполнится, то получить доступ к серверу для проверки кодов маркировок будет невозможно.
После авторизации по токену УОТ (участника оборота товаров) в момент запуска кассы в системе цифровой маркировки "Честный знак" будет получен список CDN-площадок для осуществления проверки кодов маркировок.
CDN-площадка для проверки кодов маркировок выбирается в порядке приоритета в зависимости от среднего времени ответа, получаемого при запросе статуса CDN-площадок. Самый высокий приоритет имеет CDN-площадка с наименьшим средним временем ответа.
Если соединение с приоритетной CDN-площадкой было потеряно, то данная CDN-площадка будет недоступна для проверки кодов маркировок в течение 15 минут, проверка будет осуществляться в той CDN-площадке, которая следует далее по приоритету.
За время, заданное в markVerifyCrptTimeout
, выполняется перебор CDN-площадок с таймаутом, который указан в параметре markVerifyCrptRequestTimeout
. Если он задан и его значение меньше, чем markVerifyCrptTimeout
, то сначала ожидается ответ в течение времени markVerifyCrptRequestTimeout.
Если ответа нет, то время ожидания ограничивается с учетом разности между значениями параметров markVerifyCrptTimeout
и markVerifyCrptRequestTimeout
.
Для корректной работы рекомендуется устанавливать значение парамерта markVerifyCrptRequestTimeout
меньше, чем markVerifyCrptTimeout
. Если markVerifyCrptRequestTimeout
≥ markVerifyCrptTimeout
, то до истечения markVerifyCrptTimeout
будет ожидаться ответ от сервера системы "Честный знак" без перебора CDN-площадок.
markVerifyCrptRequestTimeout
= 20markVerifyCrptTimeout
= 30
- Если получен успешный ответ на запрос:
- При добавлении маркированного товара отправляется запрос на сервер системы "Честный знак".
- Ожидается ответ в течение
markVerifyCrptRequestTimeout
= 20 секунд. - Получен успешный ответ, дальнейший перебор не выполняется.
- Если время ожидания ответа от сервера превысило таймаут:
- При добавлении маркированного товара отправляется запрос на сервер системы "Честный знак".
- Ожидается ответ в течение
markVerifyCrptRequestTimeout
= 20 секунд. - Отправляется запрос по следующему адресу.
- Ожидается ответ 10 секунд, так как стоит ограничение
markVerifyCrptTimeout
.
- Если отсутствует связь во время отправки запроса на сервер:
- При добавлении маркированного товара отправляется запрос на сервер системы "Честный знак".
- Ожидается ответ в течение
markVerifyCrptRequestTimeout
= 20 секунд. - Ответ не получен, дальнейший перебор не выполняется.
Если в течение таймаута, заданного в настройке markVerifyCrptTimeout
, ни одна из CDN-площадок из списка не ответила или оказалась недоступна, то, в зависимости от значения параметра ignoreMarkVerifyCrptConnectionErrors
, товар может быть добавлен в чек без проверки кода маркировки.
Настройки получения информации о CDN-площадках осуществляются в конфигурационном файле /linuxcash/cash/conf/ncash.ini.d/crpt.ini
в секции [CRPT
]:
Наименование | Тип данных | Описание | Примечания |
---|---|---|---|
getInfoTimeout | целочисленный | Таймаут получения списка CDN-площадок | По умолчанию 10 секунд |
healthCheckTimeout | целочисленный | Таймаут получения состояния CDN-площадки | По умолчанию 10 секунд |
[CRPT] ; Настройки взаимодействия с ЦРПТ ; Таймаут получения списка CDN-площадок ; по умолчанию 10 секунд ;getInfoTimeout = 10 ; Таймаут получения состояния CDN-площадки ; по умолчанию 10 секунд ;healthCheckTimeout = 10
Обработка статусов кода маркировки
При добавлении маркированных товаров в чек продажи на сервер системы "Честный знак" отправляется REST-запрос на получение статуса кода маркировки.
Статус кода маркировки | Поведение кассы при продаже по умолчанию |
---|---|
Товар с некорректным кодом маркировки | Товар в чек не добавляется, на экран выводится ошибка "Ошибка проверки кода маркировки позиции <...>. Код маркировки некорректен" |
Товар с такой маркой не прошел проверку подлинности | Товар в чек не добавляется, на экран выводится ошибка "Ошибка проверки кода маркировки позиции <...>. Код маркировки не прошел проверку крипто подписи" |
Товар не имеет признака нанесения марки на упаковку | Товар в чек не добавляется, на экран выводится ошибка "Ошибка проверки кода маркировки позиции <...>. У кода маркировки отсутствует признак нанесения на упаковку" |
Товар с такой маркой продан или снят с продажи | Товар в чек не добавляется, на экран выводится ошибка "Ошибка проверки кода маркировки позиции <...>. Код маркировки не в обороте" |
Товар с такой маркой имеет истекший срок годности | Товар в чек не добавляется, на экран выводится ошибка "Ошибка проверки кода маркировки позиции <...>. Товар с таким кодом маркировки просрочен" |
Код маркировки данного товара выведен из оборота | Товар в чек не добавляется, на экран выводится ошибка "Ошибка проверки кода маркировки позиции <...>. Код маркировки выведен из оборота" |
Товар с таким кодом маркировки не найден | Товар в чек не добавляется, на экран выводится ошибка "Ошибка проверки кода маркировки позиции <...>. Код маркировки не найден" |
Товар заблокирован одной из CDN-площадок | Товар в чек не добавляется, на экран выводится ошибка "Ошибка проверки кода маркировки позиции <...>. Товар с таким кодом маркировки заблокирован "<CDN-площадкой>" |
Товар не принадлежит продавцу | Товар в чек не добавляется, на экран выводится ошибка "Ошибка проверки кода маркировки позиции <...>. Товар не принадлежит продавцу" |
В кассовом ПО Artix реализована возможность игнорировать конкретные статусы, получаемые при проверке кода маркировки на сервере системы "Честный знак".
markVerifyCrptAskConfirmation
.
Данное поведение задается при помощи параметров, соответствующих полученным статусам, в конфигурационном файле /linuxcash/cash/conf/ncash.ini.d/draftbeer
.ini
в секции [DraftBeer]
:
- при значении
deny
в случае возникновения ошибок на экран будет выведен диалог с сообщением об ошибке, после закрытия диалога товар не будет добавлен в чек, - при значении
ask
в случае возникновения ошибок на экран будет выведен диалог с сообщением об ошибке: по нажатию клавиши "Продолжить" товар добавляется в чек, по нажатию клавиши "Отмена" товар не будет добавлен в чек, - при значении
allow
статус игнорируется, товар будет добавлен в чек.
Наименование | Типа данных | Возможные значения | Описание | Примечание |
---|---|---|---|---|
ignoreCrptStatusValid | строковый |
| Игнорировать результат проверки валидности кода маркировки | По умолчанию deny |
ignoreCrptStatusVerified | строковый | Игнорировать результат проверки крипто подписи кода маркировки | ||
ignoreCrptStatusUtilised | строковый | Игнорировать признак нанесения кода маркировки на упаковку | ||
ignoreCrptStatusRealizable | строковый | Игнорировать признак возможности реализации кода маркировки | ||
ignoreCrptStatusExpireDate | строковый | Игнорировать срок годности | ||
ignoreCrptStatusSold | строковый | Игнорировать вывод из оборота | ||
ignoreCrptStatusIsBlocked | строковый | Игнорировать блокировку КМ | ||
ignoreCrptStatusFound | строковый | Игнорировать не найденный КМ | ||
ignoreCrptStatusIsOwner | строковый | Игнорировать признак принадлежности продавцу | По умолчанию По умолчанию разрешена продажа товаров, для которых от сервера системы "Честный знак" при проверке кода маркировки не получен статус принадлежности участнику оборота Cогласно законодательству, на текущий момент наличие признака принадлежности у товара необязательно. При необходимости можно запретить продажу таких товаров, задав для параметра значение |
[DraftBeer] ... ; Игнорировать получаемые статусы кода маркировки при проверке на сервере честного знака ; Возможные значения: "deny" - запретить продажу товара, если сервер вернул неверный статус, ; "ask" - запросить подтверждение продажи у кассира, ; "allow" - всегда разрешать продажу товара, независимо от получаемого статуса ; По умолчанию "deny" ; Игнорировать результат проверки валидности КМ ;ignoreCrptStatusValid = deny ; Игнорировать результат проверки крипто подписи КМ ;ignoreCrptStatusVerified = deny ; Игнорировать признак нанесения КМ на упаковку ;ignoreCrptStatusUtilised = deny ; Игнорировать признак возможности реализации КМ ;ignoreCrptStatusRealizable = deny ; Игнорировать срок годности ;ignoreCrptStatusExpireDate = deny ; Игнорировать вывод из оборота ;ignoreCrptStatusSold = deny ; Игнорировать блокировку КМ ;ignoreCrptStatusIsBlocked = deny ; Игнорировать не найденный КМ ;ignoreCrptStatusFound = deny ; Игнорировать признак принадлежности продавцу ;ignoreCrptStatusIsOwner = allow ...
Использование срока годности из ответа системы "Честный знак" для предоставления скидки
В кассовом ПО Artix реализована возможность использовать срок годности, полученный при проверке кода маркировки на сервере системы "Честный знак", для предоставления скидки на товар. Данная возможность задается при помощи параметра useCrptExpireDate
в конфигурационном файле /linuxcash/cash/conf/ncash.ini.d/draftbeer
.ini
в секции [DraftBeer]
:
- при значении
true
будет использовано значение срока годности из ответа системы "Честный знак", - при значении
false
срок годности, полученный при проверке кода маркировки на сервере системы "Честный знак", использован не будет.
Наименование | Тип данных | Возможные значения | Описание | Примечания |
---|---|---|---|---|
useCrptExpireDate | логический |
| Использовать срок годности из ответа честного знака | По умолчанию false |
[DraftBeer] ... ; Использовать срок годности из ответа честного знака ; По умолчанию false ;useCrptExpireDate = false ...
Отраслевые реквизиты
Отраслевые реквизиты передаются в ОФД только в чеках продажи. Их заполнение обязательно всеми участниками оборота для тех товарных групп, которые подлежат обязательной проверке в системе цифровой маркировки "Честный знак".
Настройки отраслевых реквизитов задаются в конфигурационном файле /linuxcash/cash/conf/ncash.ini.d/draftbeer.ini
в секции [DraftBeer]
:
Наименование | Тип данных | Описание | Примечания |
---|---|---|---|
foiv | строковый | Отраслевой реквизит: идентификатор ФОИВ | По умолчанию Указывается идентификатор ФОИВ. Идентификатор ФОИВ – это идентификатор федерального органа исполнительной власти. На текущий момент, согласно Постановлению Правительства Российской Федерации от 21.11.2023 № 1944, федеральный орган исполнительной власти – Министерство промышленности и торговли Российской Федерации. Соответственно параметр Реквизит передается в теге 1262 |
documentDate | строковый | Отраслевой реквизит: дата документа основания (дд.мм.гггг) | По умолчанию Указывается дата документа основания. На текущий момент документ основания – это Постановление Правительства Российской Федерации от 21.11.2023 № 1944, соответственно дата документа основания – 21.11.2023 .Реквизит передается в теге 1263 |
documentNumber | строковый | Отраслевой реквизит: номер документа основания | По умолчанию Указывается номер документа основания. На текущий момент документ основания – это Постановление Правительства Российской Федерации от 21.11.2023 № 1944, соответственно номер документа основания – 1944 .Реквизит передается в теге 1264 |
industryAttribute | строковый | Отраслевой реквизит: значение отраслевого реквизита | По умолчанию значение не задано Указывается значение отраслевого реквизита Отраслевой реквизит должен иметь вид " Значения атрибутов подставляются из ответа от сервера системы цифровой маркировки "Честный знак":
Если значение параметра
Реквизит передается в ОФД в теге 1265 |
Если заданы все реквизиты, то они будут переданы в ОФД вне зависимости от проверки кодов маркировок в системе цифровой маркировки "Честный знак".
[DraftBeer] ... ; Отраслевой реквизит: идентификатор ФОИВ ; По умолчанию "030" ;foiv = 030 ; Отраслевой реквизит: дата документа основания (дд.мм.гггг) ; По умолчанию "21.11.2023" ;documentDate = 21.11.2023 ; Отраслевой реквизит: номер документа основания ; По умолчанию "1944" ;documentNumber = 1944 ; Отраслевой реквизит: значение отраслевого реквизита ; По умолчанию "" ;industryAttribute = ...
Если один из параметров foiv
, documentDate
, documentNumber
пуст, то будет выведено уведомление "Честный знак: ошибка в отраслевых реквизитах. Чеки будут сформированы некорректно".