Начиная с версии 4.6.112 добавлена возможность регистрации сведений о реализации маркированной табачной продукции в ИС МОТП для ФР Атол и Штрих.
Начиная с версии 4.6.119 добавлена возможность регистрации сведений о реализации маркированной табачной продукции в ИС МОТП для ФР Пирит.
Начиная с версии 4.6.145 добавлена возможность возврата табачной продукции по чеку продажи на другой кассе.
ИС МОТП (Информационная система маркировки и мониторинга оборота табачной продукции) создана с целью информационного обеспечения маркировки товаров средствами идентификации и мониторинга оборота табачной продукции.
Система маркировки табачной продукции охватывает все этапы оборота товара: от производителя до потребителя. На каждом шаге код проверяется, а после продажи товар снимается с оборота.
Для контроля табачной продукции используется двумерный штрих-код Data Matrix, наносимый на поверхность пачек и блоков. Data Matrix содержит в себе сведения о штрих-коде товара, коде идентификации и максимальной розничной цене (МРЦ).
Конфигурирование модуля
Модуль МОТП активируется параметром motp
в конфигурационном файле /linuxcash/cash/conf/ncash.ini
в секции [plugins]
.
Наименование | Тип данных | Возможные значения | Описание | Примечания |
---|---|---|---|---|
motp | логический |
| Активация модуля МОТП | По умолчанию off |
[plugins] ; Подключаемые модули ; on - модуль включен, off - выключен. ; по умолчанию все модули выключены ... ; Мониторинг оборота табачной продукции motp = off
Настройка модуля МОТП производится в конфигурационном файле /linuxcash/cash/conf/ncash.ini.d/motp.ini
в секции [Motp]
.
Маска для проверки кода маркировки табачной продукции задается настройкой dataMatrixMask
.
Наименование | Тип данных | Описание | Примечания |
---|---|---|---|
dataMatrixMask | строковый | Маска для проверки Data Matrix табачной продукции | По умолчанию |
[Motp] ; Настройки плагина мониторинга оборота табачной продукции ; Маска для проверки DataMatrix табачной продукции ; По умолчанию \d{14}.{15}|01\d{14}21.{7}8005\d{6}93.{4}.* dataMatrixMask=\d{14}.{15}|01\d{14}21.{7}8005\d{6}93.{4}.*
Продажа табачной продукции
Добавление табачной продукции
Для определения табачной продукции у товара должен быть установлен признак op_mode = 32768
(БД Dictionaries
таблица tmc
). При добавлении товара требуется считывание кода маркировки товара.
Добавление в чек товара с кодом маркировки осуществляется двумя способами:
- Последовательным сканированием штрих-кода товара и кода маркировки:
- если штрих-код товара соответствует коду маркировки, то товар добавится в чек;
- если штрих-код товара не соответствует коду маркировки, то на экран выводится ошибка "Код маркировки не соответствует штрих-коду", товар в чек не добавится.
Сканированием кода маркировки (код маркировки содержит в себе данные штрих-кода, поэтому сканировать штрих-код не требуется) - настраивается с помощью правил разбора штрих-кода.
Особенности добавления табачной продукции по коду маркировки
При добавлении в чек табачной продукции по коду маркировки, в котором присутствуют знаки ";" и "?", кассовое ПО воспринимает ввод данных "через ридер карт", а введенный код маркировки, как карту. На экран будет выведено предупреждение "Карта '<Data_Matrix>' не найдена".
Для добавления табачной продукции с таким кодом маркировки:
- воспользуйтесь последовательным сканированием штрих-кода товара и кода маркировки;
- в конфигурационном файле
/linuxcash/cash/conf/ncash.ini
в секции[HW.KEYBOARD.FILTER.MSR]
измените значение настройкиpattern
на "(?=.{0,28}$)^.*([;%].*\?).*$
".
Перезапустите программу. Отсканируйте код маркировки.
Добавление табачного товара другими способами (по коду, по наименованию, с помощью горячих клавиш) запрещено.
Так как код маркировки представляет собой уникальный код, то в товарной позиции может быть не более 1 единицы товара. Применение модификатора к позиции с табачной продукцией запрещено.
Добавление в чек табачной продукции, как обычного товара (по коду маркировки табачной продукции), определяется параметром oldTobacco
в конфигурационном файле /linuxcash/cash/conf/ncash.ini.d/motp.ini
в секции [Motp]
:
- при значении
true
товар будет добавлен в чек. В выгрузке продаж такой товар будет считаться, как обычный, также будет передан код маркировки. В ОФД товар передается, как обычный; - при значении
false
при добавлении товара в чек на экран будет выведена ошибка "У товара не указан признак маркированной табачной продукции. Обратитесь в службу техподдержки".
Добавление в чек табачной продукции, как обычного товара (без ввода кода маркировки), определяется параметром addWithoutScanMark
в конфигурационном файле /linuxcash/cash/conf/ncash.ini.d/motp.ini
в секции [Motp]
:
- при значении
true
при добавлении товара в чек на экран будет выведен диалог сканирования кода маркировки, в котором есть возможность добавить табачную продукцию без маркировки; - при значении
false
при добавлении товара в чек на экран будет выведен диалог сканирования кода маркировки.
Наименование | Тип данных | Возможные значения | Описание | Примечания |
---|---|---|---|---|
oldTobacco | логический |
| Добавлять маркированный табак в чек как немаркированный, если признак табачной продукции не задан и ввод происходит по акцизной марке | По умолчанию false |
addWithoutScanMark | логический |
| Добавлять табак в чек, как обычный товар (без ввода кода маркировки) | По умолчанию false |
[Motp] ; Настройки плагина мониторинга оборота табачной продукции ... ; Добавлять маркированный табак в чек как немаркированный, если признак табачной продукции не задан и ввод происходит по акцизной марке ; По умолчанию false ;oldTobacco = false ; Добавлять табак в чек без ввода кода маркировки ; По умолчанию false ;addWithoutScanMark = false
Получение МРЦ из кода маркировки
Максимальная розничная цена может быть получена из кода маркировки, если у товара установлен признак price_mode
= 16 (БД Dictionaries
таблица tmc
).
Порядок получения цены следующий:
- Если у товара установлен признак "получение цены табачной продукции из кода маркировки" (
price_mode
= 16), то товар добавляется в чек с ценой заданной в коде маркировки (цена должна совпадать с ценой, указанной на пачке или блоке). - Если получить цену из кода маркировки не удалось, то на экран кассира выводится предупреждение "Акцизная марка содержит некорректную цену. Будет использована цена из товара", - цена товара будет получена по действующим правилам кассового ПО.
price_mode
= 16) установлен признак "получение цены из массива цен" (price_mode
= 4) и получить цену из кода маркировки не удалось, то после вывода предупреждения кассиру будет предложено выбрать цену товара из списка.
Удаление табачной продукции
При сторнировании табачной продукции требуется считывание кода маркировки товара. После сканирования кода маркировки из чека удаляется именно та позиция, данные которой были считаны, независимо от того, какая позиция была выделена при операции сторнирования. При сторнировании всего чека, содержащего акцизные товары, операция выполняется без считывания кодов маркировки.
Возврат табачной продукции
Возврат табачной продукции в торговую сеть может быть осуществлен в режиме возврата или возврата по чеку продажи.
В режиме возврата добавление табачной продукции в чек выполняется аналогично добавлению в чек продажи.
При возврате по чеку продажи позицию для возврата можно выбрать:
- Используя клавиши навигации с подтверждением выбора нажатием клавиши "Ввод" и последующим считыванием кода маркировки товара.
- Считав штрих-код товара и код маркировки.
- Считав код маркировки.
Если при возврате по чеку продажи не используется форма выбора товаров, то при переходе к формированию чека возврата табачная продукция удаляется из чека.
Выбор табачной продукции в форме выбора товара для возврата не может быть отменен. Сторнирование табачной продукции в этом случае выполняется в режиме формирования чека возврата.
Возврат табачной продукции по чеку продажи на другой кассе запрещен до версии 4.6.144 включительно.
Если табачная продукция была возвращена на другой кассе, то невозможна повторная продажа этой продукции на кассе, на которой она была продана изначально.
Проверка кодов маркировки табачной продукции
Регламент работы по проверке кодов маркировки при продаже/возврате табачной продукции определяется структурой торговой сети. Проверка кодов маркировки предполагает:
- проверку на факт продажи/возврата табачной продукции (в БД кассовой программы),
- проверку статуса кода маркировки на кассовом сервере,
- проверку кода маркировки в "белом" списке на сервере (коды маркировки, разрешенные к продаже).
Структура сети без кассовых серверов (только кассы)
Проверка кодов маркировки в "белом" списке в БД кассовой программы задается параметром enableMarkVerifyLocal
в конфигурационном файле /linuxcash/cash/conf/
ncash.ini.d/motp.ini
в секции [Motp]
:
- при значении параметра
true
проверка кода маркировки осуществляется в БДDictionaries
в таблицеexcisemarkwhite
:- если код маркировки найден в списке, то товар добавляется в чек продажи;
- если код маркировки отсутствует в списке, то на экран выводится сообщение об ошибке "Товар с таким кодом маркировки запрещен к продаже", товар в чек не добавляется.
- при значении параметра
false
проверка кода маркировки в "белом" списке не выполняется.
Проверка кодов маркировки в "белом" списке на кассе выполняется только при значении параметра enableMarkVerify = false
(проверка на кассовом сервере отключена).
Наименование | Тип данных | Возможные значения | Описание | Примечания |
---|---|---|---|---|
enableMarkVerifyLocal | логический |
| Проверять коды маркировки на кассе | По умолчанию false |
[Motp] ; Настройки плагина мониторинга оборота табачной продукции ... ; Проверять коды маркировки на кассе ; По умолчанию false ;enableMarkVerifyLocal = false
Структура сети с кассовыми серверами
Структура сети с кассовыми серверами позволяет осуществлять контроль:
- дублей кодов маркировки (запрет повторной продажи/возврата одной и той же пачки/блока),
- разрешенных к продаже кодов маркировки (запрет продажи/возврата товаров, коды маркировки которых не были внесены в "белый" список).
Настройки подключения к кассовому серверу задаются в конфигурационном файле /linuxcash/cash/conf/ncash.ini.d/motp.ini
в секции [Motp]
.
Наименование | Тип данных | Возможные значения | Описание | Примечания |
---|---|---|---|---|
enableMarkVerify | логический |
| Проверка кодов маркировки на сервере | По умолчанию false |
markVerifyUrl | строковый | Url сервера проверки кодов маркировки | По умолчанию http://localhost:8080 Для работы с КС используется следующий | |
markVerifyTimeout | целочисленный | Таймаут обращения к серверу проверки кодов маркировки в секундах | По умолчанию 30 | |
ignoreMarkVerifyErrors | логический |
| Игнорировать ошибки обращения к серверу проверки кодов маркировки | По умолчанию true |
minRetailPriceRatio | целочисленный | 0 < n < 1 | Коэффициент для получения минимальной розничной цены из цены табачной продукции | По умолчанию не используется |
[Motp] ; Настройки плагина мониторинга оборота табачной продукции ... ; Проверка кодов маркировки на сервере ; По умолчанию false enableMarkVerify=false ; Url сервера проверки кодов маркировки ; Для работы с КС используется следующий url "http://'IP-адрес КС':8080/CSrest/rest/sales/exciseMark/status" ; По умолчанию http://localhost:8080 markVerifyUrl=http://localhost:8080 ; Таймаут обращения к серверу проверки кодов маркировки в секундах ; По умолчанию 30 markVerifyTimeout=30 ; Игнорировать ошибки обращения к серверу проверки кодов маркировки ; По умолчанию true ignoreMarkVerifyErrors=true ; Коэффициент для получения минимальной розничной цены из цены табачной продукции ; По умолчанию не используется ;minRetailPriceRatio = 1
Проверка кодов маркировки на сервере задается при помощи параметра enableMarkVerify
в конфигурационном файле /linuxcash/cash/conf/ncash.ini.d/motp.ini
в секции [Motp]
:
- при значении
true
осуществляется проверка кода маркировки на сервере; - при значении
false
проверка кода маркировки на сервере не осуществляется.
Для проверки кодов маркировки на сервере торговой сети в конфигурационном файле /linuxcash/cash/conf/ncash.ini.d/motp.ini
в секции [Motp]
необходимо задать параметры подключения к серверу:
markVerifyUrl
- URL сервера, где хранятся данные о кодах маркировки;markVerifyTimeout
- таймаут ожидания ответа от сервера при проверке кодов маркировки.
Настройками программы можно разрешать или запрещать продажу/возврат табачной продукции при возникновении ошибок обращения к серверу. Возможность игнорирования возникающих ошибок определяется параметром ignoreMarkVerifyErrors
в конфигурационном файле /linuxcash/cash/conf/ncash.ini.d/motp.ini
в секции [Motp]
:
- при значении
true
в случае возникновения ошибок подключения к серверу они игнорируются, продажа/возврат табачной продукции осуществляется без проверки кодов маркировки на сервере; - при значении
false
в случае возникновения ошибок подключения к серверу продажа товара не может быть выполнена. На экран кассира выводится сообщение о том, что табачная продукция не может быть проверена.
При продаже табачной продукции необходима проверка цены товара. Минимальная цена табачной продукции установлена законом и не может быть ниже 75% от МРЦ. При установке параметра minRetailPriceRatio
в конфигурационном файле /linuxcash/cash/conf/ncash.ini.d/motp.ini
в секции [Motp]
МРЦ будет высчитываться как % от цены товарной позиции.
Для параметра minRetailPriceRatio
установлено значение 0.75.
Пример 1:
У табачной продукции цена - 100 рублей, минимальная розничная цена - 20 рублей. При продаже товара его стоимость не может быть ниже 75 рублей.
Пример 2:
У табачной продукции цена - 100 рублей, минимальная розничная цена - 85 рублей. При продаже товара его стоимость не может быть ниже минимальной розничной цены - 85 рублей.
При добавлении табачной продукции в чек продажи/возврата на кассовый сервер отправляется REST-запрос на получение статуса кода маркировки. Статус кода маркировки может принимать следующие значения:
- 0 - Марка не зарегистрирована в БД.
- 1 - Товар с такой маркой продан.
- 2 - Товар с такой маркой возвращен.
- 3 - Марка зарезервирована в чеке продажи.
- 4 - Марка снята с резерва в чеке продажи.
- 5 - Марка зарезервирована в чеке возврата (чеке возврата по чеку продажи).
- 6 - Марка снята с резерва в чеке возврата (чеке возврата по чеку продажи).
- 7 - Акцизная марка отсутствует в списке разрешенных к продаже.
- 9 - Товар отсутствует на остатке.
- 10 - Штрих-код для проверки в списке акцизных марок, разрешенных к продаже, не передан.
- 11 - Соответствие акцизной марки и штрих-кода в списке акцизных марок, разрешенных к продаже, не найдено.
- 12 - Магазин для проверки остатков не найден.
- 13 - Штрих-код для проверки остатков не заполнен.
- 14 - Код товара для проверки остатков не заполнен.
- 15 - Справочник остатков для товара, по которому проверяем остатки, заполнен не корректно.
- Любое другое значение - неизвестный статус акцизной марки.
Дальнейшее поведение программы определяется полученным статусом.
Статус кода маркировки | Поведение кассы при продаже | Поведение кассы при возврате |
---|---|---|
Марка не зарегистрирована в БД | Товар с акцизной маркой добавляется в чек и может быть продан. | Так как товар не был ранее продан, то на экран выводится сообщение "Товар с акцизной маркой отсутствует на сервере", товар не добавляется в чек и не может быть возвращен. |
Товар с такой маркой продан | Товар в чек не добавляется, на экран выводится ошибка "Товар с акцизной маркой уже был продан". | Товар добавляется в чек, его можно вернуть. |
Товар с такой маркой возвращен | Товар добавлен в чек и может быть продан. | Товар в чек не добавляется, на экран выводится ошибка "Товар с такой акцизной маркой уже был возвращен". |
Марка зарезервирована в чеке продажи | Товар в чек не добавляется, на экран выводится ошибка "Товар с такой акцизной маркой уже был зарезервирован". | Товар в чек не добавляется, на экран выводится ошибка "Товар с такой акцизной маркой уже был зарезервирован". |
Марка снята с резерва в чеке продажи | Товар добавляется в чек и может быть продан. | Товар в чек не добавляется, на экран выводится ошибка "Товар с такой акцизной маркой еще не продан". |
Марка зарезервирована в чеке возврата (чеке возврата по чеку продажи) | Товар в чек не добавляется, на экран выводится ошибка "Товар с такой акцизной маркой уже был зарезервирован". | Товар в чек не добавляется, на экран выводится ошибка "Товар с такой акцизной маркой уже был зарезервирован". |
Марка снята с резерва в чеке возврата (чеке возврата по чеку продажи) | Товар в чек не добавляется, на экран выводится ошибка "Товар с такой акцизной маркой уже был продан". | Товар добавляется в чек, его можно вернуть. |
Акцизная марка отсутствует в списке разрешенных к продаже | Товар в чек не добавляется, на экран выводится ошибка "Товар с такой акцизной маркой запрещен к продаже". | Статус не проверяется на сервере. |
Товар отсутствует на остатке | Товар в чек не добавляется, на экран выводится ошибка "Товар с такой акцизной маркой запрещен к продаже. Нет на остатке". | Товар добавляется в чек, его можно вернуть. |
Штрих-код для проверки в списке акцизных марок, разрешенных к продаже, не передан | Товар в чек не добавляется, на экран выводится ошибка "Товар с такой акцизной маркой запрещен к продаже. Не заполнен штрих-код для проверки в белом списке". | Товар добавляется в чек, его можно вернуть. |
Соответствие акцизной марки и штрих-кода в списке акцизных марок, разрешенных к продаже, не найдено | Товар в чек не добавляется, на экран выводится ошибка "Товар с такой акцизной маркой запрещен к продаже. Не найдено соответствие акцизной марки и штрих-кода в белом списке". | Товар добавляется в чек, его можно вернуть. |
Магазин для проверки остатков не найден | Товар в чек не добавляется, на экран выводится ошибка "Товар с такой акцизной маркой запрещен к продаже. Не найден магазин для проверки остатков". | Товар добавляется в чек, его можно вернуть. |
Штрих-код для проверки остатков не заполнен | Товар в чек не добавляется, на экран выводится ошибка "Товар с такой акцизной маркой запрещен к продаже. Не заполнен штрих-код для проверки остатков". | Товар добавляется в чек, его можно вернуть. |
Код товара для проверки остатков не заполнен | Товар в чек не добавляется, на экран выводится ошибка "Товар с такой акцизной маркой запрещен к продаже. Не заполнен код товара для проверки остатков". | Товар добавляется в чек, его можно вернуть. |
Справочник остатков для товара, по которому проверяем остатки, заполнен не корректно | Товар в чек не добавляется, на экран выводится ошибка "Товар с такой акцизной маркой запрещен к продаже. Некорректно заполнен справочник остатков для товара". | Товар добавляется в чек, его можно вернуть. |
Неизвестный статус акцизной марки | Товар в чек не добавляется, на экран выводится ошибка "Неизвестный статус акцизной марки на сервере". | Товар в чек не добавляется, на экран выводится ошибка "Неизвестный статус акцизной марки на сервере". |
Изменение статуса кода маркировки на кассовом сервере в зависимости от операции выполняется:
- в режиме онлайн (по
REST
-запросу) - резервирование кода маркировки; - в режиме оффлайн (через очередь Artix-Queue) - снятие с резерва кода маркировки (сторнирование), после закрытия чека перевод в статус "продан", "возвращен".