Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.


Начиная с версии 4.6.112 добавлена возможность регистрации сведений о реализации маркированной табачной продукции в ИС МОТП для ФР Атол и Штрих.

Начиная с версии 4.6.119 добавлена возможность регистрации сведений о реализации маркированной табачной продукции в
Panel

Table of Contents

Panel

ИС МОТП

...

Начиная с версии 4.6.145 добавлена возможность возврата табачной продукции по чеку продажи на другой кассе.

...

(Информационная система маркировки и мониторинга оборота табачной продукции) создана с целью информационного обеспечения маркировки товаров средствами идентификации и мониторинга оборота табачной продукции.

Система маркировки табачной продукции охватывает все этапы оборота товара: от производителя до потребителя. На каждом шаге код проверяется, а после продажи товар снимается с оборота.

Для контроля табачной продукции используется двумерный штрих-код Data Matrix, наносимый на поверхность пачек и блоков. Data Matrix содержит в себе сведения о штрих-коде товара, коде идентификации и максимальной розничной цене (МРЦ).

Конфигурирование модуля

...

Anchor
module_configuration
module_configuration

Модуль МОТП активируется параметром motp в конфигурационном файле /linuxcash/cash/conf/ncash.ini.d/motp.ini в секции [plugins].

НаименованиеТип данныхВозможные значенияОписаниеПримечания
motpлогическийстроковый
  • on
  • off
Активация модуля МОТППо умолчанию off


Code Block
titleПример настройки
[plugins]
; Мониторинг оборота табачной продукции
motp = off

Настройка модуля МОТП производится в конфигурационном файле /linuxcash/cash/conf/ncash.ini.d/motp.ini в секции [Motp].

Начиная с версии 4.6.268 для разных категорий табачной продукции в конфигурационном файле /linuxcash/cash/conf/ncash.ini.d/motp.ini может быть создана своя подсекция [Motp.Mask.<имя_подсекции>]. Маска для проверки кода маркировки табачной продукции задается настройкой dataMatrixMaskпараметром regularExpression.

НаименованиеТип данныхОписаниеПримечания
regularExpressiondataMatrixMaskстроковыйМаска Маски для проверки Data Matrix табачной продукции

По умолчанию "\d{14}.{15}|01\d{14}21.{7}8005\d{6}93.{4}.*".

Code Block

Каждая из подсекций должна содержать маску для проверки DataMatrix. Например:

Code Block
languagetext
titleПример настройки
[Motp]
; НастройкиМаски плагинадля мониторингапроверки оборотаDataMatrix табачной продукции
[Motp.Mask.Tobacco]
; Маска для проверки DataMatrix Маркировка табачной продукции
; в Поформате умолчанию \d{14}.{15}|01\d{14}21.{7}8005\d{6}93.{4}.*
dataMatrixMask=<код товара(14)><ИСН(7)><МРЦ(4)><код проверки(4)>
;regularExpression = (?<barcode>\d{14}).{15}|01\d{14}21.{7}8005\d{6}937}(?<mrp>.{4}).{4}.*

Продажа табачной продукции 

Добавление табачной продукции

Для определения табачной продукции у товара должен быть установлен признак op_mode = 32768 (БД Dictionaries таблица tmc). При добавлении товара требуется считывание кода маркировки товара.

Добавление в чек товара с кодом маркировки осуществляется двумя способами:

  • Последовательным сканированием штрих-кода товара и кода маркировки:
    • если штрих-код товара соответствует коду маркировки, то товар добавится в чек;
    • если штрих-код товара не соответствует коду маркировки, то на экран выводится ошибка "Код маркировки не соответствует штрих-коду", товар в чек не добавится.
  • Сканированием кода маркировки (код маркировки содержит в себе данные штрих-кода, поэтому сканировать штрих-код не требуется) - настраивается с помощью правил разбора штрих-кода.

    Info
    titleОсобенности добавления табачной продукции по коду маркировки

    При добавлении в чек табачной продукции по коду маркировки, в котором присутствуют знаки ";" и "?", кассовое ПО воспринимает ввод данных "через ридер карт", а введенный код маркировки, как карту. На экран будет выведено предупреждение "Карта '<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логический
    • true
    • false
    Добавлять маркированный табак в чек как немаркированный, если признак табачной продукции не задан и ввод происходит по акцизной маркеПо умолчанию falseaddWithoutScanMarkлогический
    • true
    • false

    Добавлять табак в чек, как обычный товар (без ввода кода маркировки)

    По умолчанию false
    Code Block
    titleПример настройки
    [Motp]
    ; Настройки плагина мониторинга оборота табачной продукции
    ...
    ; Добавлять маркированный табак в чек как немаркированный, если признак табачной продукции не задан и ввод происходит по акцизной марке
    ; По умолчанию false
    ;oldTobacco = false
    ; Добавлять табак в чек без ввода кода маркировки
    ; По умолчанию false
    ;addWithoutScanMark = false

    Получение МРЦ из кода маркировки

    Максимальная розничная цена может быть получена из кода маркировки, если у товара установлен признак price_mode = 16 (БД Dictionaries таблица tmc).

    Порядок получения цены следующий:

    1. Если у товара установлен признак "получение цены табачной продукции из кода маркировки" (price_mode = 16), то товар добавляется в чек с ценой заданной в коде маркировки (цена должна совпадать с ценой, указанной на пачке или блоке).
    2. Если получить цену из кода маркировки не удалось, то на экран кассира выводится предупреждение "Акцизная марка содержит некорректную цену. Будет использована цена из товара", - цена товара будет получена по действующим правилам кассового ПО.
    Panel
    titleПример
    Если у товара помимо признака "получение цены табачной продукции из кода маркировки" (price_mode = 16) установлен признак "получение цены из массива цен" (price_mode = 4) и получить цену из кода маркировки не удалось, то после вывода предупреждения кассиру будет предложено выбрать цену товара из списка.

    Удаление табачной продукции 

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

    Возврат табачной продукции

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

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

    При возврате по чеку продажи позицию для возврата можно выбрать:

    1. Используя клавиши навигации с подтверждением выбора нажатием клавиши "Ввод" и последующим считыванием кода маркировки товара.  
    2. Считав штрих-код товара и код маркировки.
    3. Считав код маркировки.

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

    Выбор табачной продукции в форме выбора товара для возврата не может быть отменен. Сторнирование табачной продукции в этом случае выполняется в режиме формирования чека возврата.

    Info

    Возврат табачной продукции по чеку продажи на другой кассе запрещен до версии 4.6.144 включительно.

    Info

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

    Проверка кодов маркировки табачной продукции

    Регламент работы по проверке кодов маркировки при продаже/возврате табачной продукции определяется структурой торговой сети. Проверка кодов маркировки предполагает:

    • проверку на факт продажи/возврата табачной продукции (в БД кассовой программы),
    • проверку статуса кода маркировки на кассовом сервере,
    • проверку кода маркировки в "белом" списке на сервере (коды маркировки, разрешенные к продаже).

    Структура сети без кассовых серверов (только кассы)

    Проверка кодов маркировки в "белом" списке в БД кассовой программы задается параметром enableMarkVerifyLocal в конфигурационном файле /linuxcash/cash/conf/ncash.ini.d/motp.ini в секции [Motp]:

    • при значении параметра true проверка кода маркировки осуществляется в БД Dictionaries в таблице excisemarkwhite:
      • если код маркировки найден в списке, то товар добавляется в чек продажи;
      • если код маркировки отсутствует в списке, то на экран выводится сообщение об ошибке "Товар с таким кодом маркировки запрещен к продаже", товар в чек не добавляется.
    • при значении параметра false проверка кода маркировки в "белом" списке не выполняется.
    Info

    Проверка кодов маркировки в "белом" списке на кассе выполняется только при значении параметра enableMarkVerify = false (проверка на кассовом сервере отключена).

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

    enableMarkVerifyLocal

    логический
    • true
    • false
    Проверять коды маркировки на кассеПо умолчанию false
    Code Block
    titleПример настройки
    [Motp]
    ; Настройки плагина мониторинга оборота табачной продукции
    ...
    ; Проверять коды маркировки на кассе
    ; По умолчанию false
    ;enableMarkVerifyLocal = false

    Структура сети с кассовыми серверами

    Структура сети с кассовыми серверами позволяет осуществлять контроль:

    • дублей кодов маркировки (запрет повторной продажи/возврата одной и той же пачки/блока),
    • разрешенных к продаже кодов маркировки (запрет продажи/возврата товаров, коды маркировки которых не были внесены в "белый" список).

    Настройки подключения к кассовому серверу задаются в конфигурационном файле /linuxcash/cash/conf/ncash.ini.d/motp.ini в секции [Motp].

    НаименованиеТип данныхВозможные значенияОписаниеПримечанияenableMarkVerifyлогический
    • true
    • false
    Проверка кодов маркировки на сервереПо умолчанию falsemarkVerifyUrlстроковыйUrl сервера проверки кодов маркировки

    По умолчанию http://localhost:8080.

    Для работы с КС используется следующий url "http://<host>:<port>/CSrest/rest/sales/exciseMark/status".

    markVerifyTimeoutцелочисленныйТаймаут обращения к серверу проверки кодов маркировки в секундахПо умолчанию 30.ignoreMarkVerifyErrorsлогический
    • true
    • false
    Игнорировать ошибки обращения к серверу проверки кодов маркировкиПо умолчанию true.

    minRetailPriceRatio

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

    0 < n < 1

    Коэффициент для получения минимальной розничной цены из цены табачной продукции

    По умолчанию не используется.
    Code Block
    titleПример настройки
    [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
    ; 
    
    [Motp.Mask.TobaccoBlock]
    ; Маркировка блоков табачной продукции
    ; в формате 01<код товара(14)>21<ИСН(7)><GS>8005<МРЦ(6)><GS>93<код проверки(4)>
    ;regularExpression = 01(?<barcode>\d{14})21.{7}(\x{001d}|\s*)8005(?<mrp>\d{6})(\x{001d}|\s*)93.{4}.*
    
    [Motp.Mask.AlternateTobacco]
    ; Маркировка альтернативной табачной продукции
    ; в формате 01<код товара(14)>21<ИСН(7)><GS>93<код проверки(4)>
    ;regularExpression = 01(?<barcode>\d{14})21.{7}(\x{001d}|\s*)93.{4}\s*


    Info
    • Если все подсекции закомментированы, то в правило будут добавлены все три регулярных выражения.
    • Если в одной из подсекций параметр regularExpression раскомментирован, то остальные подсекции игнорируются.
    • При задании регулярных выражений для параметра regularExpression:
      • использование именованного капчуринга для штрих-кода (параметр barcode) обязательно,
      • использование МРЦ (параметр mrp) необязательно.


    Expand
    titleМаска для проверки кода маркировки (устаревший функционал)

     Маска для проверки кода маркировки табачной продукции задается настройкой dataMatrixMask.

    НаименованиеТип данныхОписаниеПримечания
    dataMatrixMaskстроковыйМаска для проверки Data Matrix табачной продукции

    По умолчанию "\d{14}.{15}|01\d{14}21.{7}8005\d{6}93.{4}.*".


    Code Block
    languagetext
    titleПример настройки
    [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}.*


    Warning

    Код маркировки должен подходить только под одну маску для проверки DataMatrix.


    Info

    Если задана устаревшая настройка dataMatrixMask, то регулярные выражения в подсекциях игнорируются.


    Продажа табачной продукции 

    Добавление табачной продукции

    Для определения табачной продукции у товара должен быть установлен признак op_mode = 32768 (БД Dictionaries таблица Tmc). При добавлении товара требуется считывание кода маркировки товара.

    Добавление в чек товара с кодом маркировки осуществляется двумя способами:

    1. Последовательным сканированием штрих-кода товара и кода маркировки:
      • если штрих-код товара соответствует коду маркировки, то товар добавится в чек,
      • если штрих-код товара не соответствует коду маркировки, то на экран выводится ошибка "Код маркировки не соответствует штрих-коду", товар в чек не добавится.
    2. Сканированием кода маркировки (код маркировки содержит в себе данные штрих-кода, поэтому сканировать штрих-код не требуется).

      Info
      titleОсобенности добавления табачной продукции по коду маркировки

      При добавлении в чек табачной продукции по коду маркировки, в котором присутствуют знаки ";" и "?", кассовое ПО воспринимает ввод данных "через ридер карт", а введенный код маркировки, как карту. На экран будет выведено предупреждение "Карта '<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логический
    • true
    • false
    Добавлять маркированный табак в чек как немаркированный, если признак табачной продукции не задан и ввод происходит по коду маркировкиПо умолчанию false
    addWithoutScanMarkлогический
    • true
    • false

    Добавлять табак в чек, как обычный товар (без ввода кода маркировки)

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


    Code Block
    languagetext
    titleПример настройки
    [Motp]
    ; Настройки плагина мониторинга оборота табачной продукции
    ...
    ; Добавлять маркированный табак в чек как немаркированный, если признак табачной продукции не задан и ввод происходит по коду маркировки
    ; По умолчанию false
    ;oldTobacco = false
    ; Добавлять табак в чек без ввода кода маркировки
    ; По умолчанию false
    ;addWithoutScanMark = false

    В кассовом ПО Artix реализована возможность блокировать сканер при отображении диалога подтверждения ошибки сканирования кода маркировки. Данная возможность задается при помощи параметра showScanErrorDialog в конфигурационном файле /linuxcash/cash/conf/ncash.ini.d/motp.ini в секции [Motp]. В случае возникновения ошибки сканирования:

    • при значении true сканер будет заблокирован, будет отображен диалог подтверждения ошибки с сообщением "Ошибка сканирования кода маркировки", товар не добавляется в чек,

      Info
      После закрытия диалога сканер будет разблокирован.


    • при значении false блокировка сканера не осуществляется, будет отображен диалог сканирования кода маркировки "Ошибка считывания кода маркировки, повторите сканирование", товар не добавляется в чек.

    После ввода верного кода маркировки товар добавляется в чек.

    НаименованиеТип данныхВозможные значенияОписаниеПримечания
    showScanErrorDialogлогический
    • true
    • false
    Блокировать сканер и отображать диалог подтверждения ошибки сканирования кода маркировкиПо умолчанию false


    Code Block
    languagetext
    titleПример настройки
    [Motp]
    ; Настройки плагина мониторинга оборота табачной продукции
    ... 
    ; Блокировать сканер и отображать диалог подтверждения ошибки сканирования кода маркировки
    ; По умолчанию false
    ;showScanErrorDialog = false

    В кассовом ПО Artix реализована возможность запрета скидочных воздействий (внешний и внутренний дисконт, включая скидку на мелочь) для табачной продукции. Для запрета необходимо установить у товара признак loyaltymode в БД Dictionaries таблице Tmc.

    Panel
    titleПримеры запрета скидочных воздействий

    В конфигурационном файле /linuxcash/cash/conf/ncash.ini в секции [Check] установлено:

    useDiscountOnChange = true
    discountOnChangePrecision ="[0:1]"

    Например, заданы:

    • внутренняя скидка на позицию – 5.12 руб,
    • скидка внешней системы лояльности – 10 рублей.

    В чек добавляется:

    Табачная продукция 1 шт * 115.30 рублей = 115.30 рублей.

    Panel

    Для товара в БД Dictionaries в таблице Tmc задано:

    loyaltymode = 1

     Применена скидка только от внешней системы лояльности:

    Табачная продукция 1 шт * 115.30 - 10 = 105.30 рублей.


    Panel

    Для товара в БД Dictionaries в таблице Tmc задано:

    loyaltymode = 2

     Применена только внутренняя скидка на позицию и скидка на мелочь:

    Табачная продукция 1 шт * 115.30 - 5.12 - 0.18 = 110.00 рублей.


    Panel

    Для товара в БД Dictionaries в таблице Tmc задано:

    loyaltymode = 3

    Скидки не применяются:

    Табачная продукция 1 шт * 115.30 = 115.30 рублей.


    Получение МРЦ из кода маркировки

    Максимальная розничная цена может быть получена из кода маркировки, если у товара установлен признак price_mode = 16 (БД Dictionaries таблица Tmc).

    Порядок получения цены следующий:

    1. Если у товара установлен признак "получение цены табачной продукции из кода маркировки" (price_mode = 16), то товар добавляется в чек с ценой заданной в коде маркировки (цена должна совпадать с ценой, указанной на пачке или блоке).
    2. Если получить цену из кода маркировки не удалось или была получена нулевая цена, то будет выведено предупреждение "Код маркировки содержит некорректную цену. Будет использована цена из товара", - цена товара будет получена по действующим правилам кассового ПО.
    Panel
    titleПример
    Если у товара помимо признака "получение цены табачной продукции из кода маркировки" (price_mode = 16) установлен признак "получение цены из массива цен" (price_mode = 4) и получить цену из кода маркировки не удалось, то после вывода предупреждения кассиру будет предложено выбрать цену товара из списка.

    В кассовом ПО Artix реализована возможность настройки коэффициента для получения минимальной розничной цены из цены табачной продукции, задается параметром minRetailPriceRatio в конфигурационном файле /linuxcash/cash/conf/ncash.ini.d/motp.ini в секции [Motp]:

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

    minRetailPriceRatio

    числовой

    от 0 до 1 (включительно)

    Коэффициент для получения минимальной розничной цены из цены табачной продукции

    По умолчанию не используется


    Code Block
    languagetext
    titleПример настройки
    [Motp]
    ; Настройки плагина мониторинга оборота табачной продукции
    ...
    ; Коэффициент для получения минимальной розничной цены из цены табачной продукции
    ; По умолчанию не используется
    ;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

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

    Panel
    titleПримеры работы параметра minRetailPriceRatio

    Например, в БД задана дисконтная скидка 5% на чек.

    В чек добавляется:

    Табачная продукция 1 шт * 175.00 рублей = 175.00 рублей – цена получена из кода маркировки (price_mode = 16).

    Panel

    Параметр minRetailPriceRatio не установлен.

    Скидка будет применена:

    Табачная продукция 1 шт * 175.00 - 8.75(скидка 5%) = 166.25 рублей.


    Panel

    Параметр minRetailPriceRatio =1.

    Скидка не применяется:

    Табачная продукция 1 шт * 175.00 - 0.00 = 175.00 рублей.


    Минимальная разрешенная цена

    В кассовом ПО Artix реализована возможность запрета реализации табачной продукции по стоимости ниже минимальной разрешенной цены. Данное поведение настраивается в конфигурационном файле /linuxcash/cash/conf/ncash.ini.d/motp.ini в секции [Motp

    ] МРЦ будет высчитываться как % от цены товарной позиции

    .MinAllowedPricesByDate].

    panel
    Code Block
    title
    Примеры работы параметра minRetailPriceRatio

    Для параметра 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) - снятие с резерва кода маркировки (сторнирование), после закрытия чека перевод в статус "продан", "возвращен"
    Пример настройки
    [Motp.MinAllowedPricesByDate]
    ; Список минимальных разрешенных цен пачки сигарет, начиная с указанной даты
    ; Элемент списка задается в формате цена = дата. Дата указывается в формате ГГГГ-ММ-ДД.
    
    ; Например,
    ; 108.0 = 2021-07-01
    ; 112.0 = 2021-09-01
    ; означает, что с 1 июля 2021 года минимальная разрешенная цена 108.0 рублей,
    ; а с первого сентября 2021 года 112.0 рублей
    
    ;108.0 = 2021-07-01

    Если цена товара, полученная из кода маркировки или из справочника (в зависимости от настроек), ниже минимальной разрешенной цены, то на экран будет выведена ошибка "Цена товара ниже минимальной разрешенной цены. Продажа товара запрещена", товар не будет добавлен в чек. 

    Разрешенные типы данных для ввода кода маркировки

    В кассовом ПО Artix реализована возможность настройки разрешенных типов данных для ввода кода маркировки, задается параметром permittedInput в конфигурационном файле /linuxcash/cash/conf/ncash.ini.d/motp.ini в секции [Motp]:

    При добавлении в чек маркированного товара:

    • сканированием кода маркировки с типом данных, не указанным в настройке, на экран будет выведена ошибка "Неверный тип ввода данных",
    • последовательным сканированием штрих-кода и кода маркировки с типом данных, не указанным в настройке, код маркировки будет проигнорирован.
    НаименованиеТип данныхВозможные значенияОписаниеПримечания
    permittedInput

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

    (битовая маска)

    • 0 – запрет ввода любых данных,
    • 1 – текстовые данные,
    • 2 – бинарные данные (если устройство может посылать непечатные символы),
    • 3 – текстовые и бинарные данные.
    Разрешенные типы вводимых данных

    По умолчанию разрешены все типы вводимых данных


    Code Block
    languagetext
    titleПример настройки
    [Motp]
    ...
    ; Разрешенные типы вводимых данных
    ; По умолчанию "" - все типы вводимых данных
    ;permittedInput =

    Удаление табачной продукции 

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

    В кассовом ПО Artix реализована возможность удаления позиции с другим штрих-кодом при сторнировании по коду маркировки, задается параметром allowNotMatchingBarcodesOnStorno в конфигурационном файле /linuxcash/cash/conf/ncash.ini.d/motp.ini в секции [Motp]

    • при значении true после сканирования кода маркировки из чека удаляется именно та позиция, данные которой были считаны, независимо от того, какая позиция была выбрана для сторнирования,
    • при значении false при сканировании кода маркировки, если он не соответствует выбранной позиции, на экран будет выведена ошибка "Отсканирована маркировка от другого товара". После подтверждения повторно отображается диалог сканирования кода маркировки.
    НаименованиеТип данныхВозможные значенияОписаниеПримечания
    allowNotMatchingBarcodesOnStornoлогический
    • true
    • false
    Разрешить удаление позиции с другим штрих-кодом при сторнировании по коду маркировкиПо умолчанию true

    При сторнировании всего чека, содержащего маркированные товары, операция выполняется без считывания кодов маркировок.

    Возврат табачной продукции

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

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

    При возврате по чеку продажи позицию для возврата можно выбрать:

    1. Используя клавиши навигации с подтверждением выбора нажатием клавиши "Ввод" и последующим считыванием кода маркировки товара.  
    2. Считав штрих-код товара и код маркировки.
    3. Считав код маркировки.

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

    Выбор табачной продукции в форме выбора товара для возврата не может быть отменен. Сторнирование табачной продукции в этом случае выполняется в режиме формирования чека возврата.

    Info

    Возврат табачной продукции по чеку продажи на другой кассе запрещен до версии 4.6.144 включительно.

    Инвентаризация табачной продукции

    Info

    Начиная с версии 4.6.277 реализована возможность инвентаризации табачной продукции. 

    Порядок проведения инвентаризации табачной продукции определяется параметром scanMarkInInventory в конфигурационном файле /linuxcash/cash/conf/ncash.ini.d/motp.ini в секции [Motp]:

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

    • при значении false порядок добавления и сторнирования аналогичен работе с обычными товарами.
    НаименованиеТип данныхВозможные значенияОписаниеПримечания
    scanMarkInInventoryлогический
    • true
    • false
    Сканирование кода маркировки для документа инвентаризацииПо умолчанию false


    Code Block
    languagetext
    titleПример настройки
    [Motp] 
    ...
    ; Сканирование кода маркировки для документа инвентаризации
    ; По умолчанию false
    ;scanMarkInInventory = false

    Проверка кодов маркировок табачной продукции

    Регламент работы по проверке кодов маркировок при продаже/возврате табачной продукции определяется структурой торговой сети. Проверка кодов маркировок предполагает:

    • проверку на факт продажи/возврата табачной продукции (в БД кассовой программы),
    • проверку статуса кода маркировки на кассовом сервере,
    • проверку кода маркировки в "белом" списке на сервере (коды маркировки, разрешенные к продаже).

    Проверка кода маркировки в проданной продукции на кассе задается параметром checkLocalUniqueness в конфигурационном файле /linuxcash/cash/conf/ncash.ini.d/motp.ini в секции [Motp]:

    • при значении параметра true осуществляется проверка в БД Documents в таблице Goodsitem на возможность продажи/возврата табачной продукции:
      • если код маркировки был продан/возвращен ранее, то при попытке продать/вернуть товар на экран выводится сообщение об ошибке "Код маркировки уже был зарегистрирован ранее", товар в чек не добавляется,
      • если код маркировки не был продан/возвращен ранее, то товар добавляется в чек.
    • при значении параметра false проверка кода маркировки в проданной продукции не осуществляется.
    НаименованиеТип данныхВозможные значенияОписаниеПримечания
    checkLocalUniquenessлогический
    • true
    • false
    Проверка кода маркировки в проданной продукции на кассеПо умолчанию true


    Code Block
    languagetext
    titleПример настройки
    [Motp]
    ; Настройки плагина мониторинга оборота табачной продукции
    ...
    ; Проверка кода маркировки в проданной продукции на кассе
    ; По умолчанию true
    ;checkLocalUniqueness = true

    Структура сети без кассовых серверов (только кассы)

    Проверка кодов маркировок в "белом" списке в БД кассовой программы задается параметром enableMarkVerifyLocal в конфигурационном файле /linuxcash/cash/conf/ncash.ini.d/motp.ini в секции [Motp]:

    • при значении параметра true проверка кода маркировки осуществляется в БД Dictionaries в таблице Excisemarkwhite:
      • если код маркировки найден в списке, то товар добавляется в чек продажи,
      • если код маркировки отсутствует в списке, то на экран выводится сообщение об ошибке "Товар с таким кодом маркировки запрещен к продаже", товар в чек не добавляется.
    • при значении параметра false проверка кода маркировки в "белом" списке не выполняется.
    Info

    Проверка кодов маркировок в "белом" списке на кассе выполняется только при значении параметра enableMarkVerify = false (проверка на кассовом сервере отключена).


    НаименованиеТип данныхВозможные значенияОписаниеПримечания
    enableMarkVerifyLocalлогический
    • true
    • false
    Проверять коды маркировки на кассеПо умолчанию false


    Code Block
    languagetext
    titleПример настройки
    [Motp] 
    ; Настройки плагина мониторинга оборота табачной продукции 
    ... 
    ; Проверять коды маркировки на кассе 
    ; По умолчанию false 
    ;enableMarkVerifyLocal = false


    Структура сети с кассовыми серверами

    Структура сети с кассовыми серверами позволяет осуществлять контроль:

    • дублей кодов маркировок (запрет повторной продажи/возврата одной и той же пачки/блока),
    • разрешенных к продаже кодов маркировок (запрет продажи/возврата товаров, коды маркировки которых не были внесены в "белый" список).

    Настройки подключения к кассовому серверу задаются в конфигурационном файле /linuxcash/cash/conf/ncash.ini.d/motp.ini в секции [Motp].

    НаименованиеТип данныхВозможные значенияОписаниеПримечания
    enableMarkVerifyлогический
    • true
    • false
    Проверка кодов маркировок на сервереПо умолчанию false
    markVerifyUrlстроковый
    Url сервера проверки кодов маркировок

    По умолчанию http://localhost:8080.

    Для работы с КС используется url "http://<host>:<port>/CSrest/rest/sales/exciseMark/status"

    markVerifyTimeoutцелочисленный
    Таймаут обращения к серверу проверки кодов маркировок в секундахПо умолчанию 30
    ignoreMarkVerifyErrorsлогический
    • true
    • false
    Игнорировать ошибки обращения к серверу проверки кодов маркировокПо умолчанию true


    Code Block
    languagetext
    titleПример настройки
    [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

    Проверка кодов маркировок на сервере задается при помощи параметра 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 в случае возникновения ошибок подключения к серверу продажа товара не может быть выполнена. На экран кассира выводится сообщение о том, что табачная продукция не может быть проверена.
    Panel

    Для корректной проверки кодов маркировок на кассовом сервере также необходимо:

    В настройках Artix Control Center:

    1. Перейти в меню "Настройки сервера" в раздел "Маркированная продукция".
    2. В настройке "Проверять список разрешенных к продаже кодов маркировок табачной продукции" установить значение "Проверять по коду маркировки".

    При добавлении табачной продукции в чек продажи/возврата на кассовый сервер отправляется REST-запрос на получение статуса кода маркировки. Дальнейшее поведение программы определяется полученным статусом.

    Статус кода маркировкиПоведение кассы при продажеПоведение кассы при возврате
    Код маркировки не зарегистрирован в БДТовар с кодом маркировки добавляется в чек и может быть проданТак как товар не был ранее продан, то на экран выводится сообщение "Товар с кодом маркировки отсутствует на сервере", товар не добавляется в чек и не может быть возвращен
    Товар с таким кодом маркировки проданТовар в чек не добавляется, на экран выводится ошибка "Товар с таким кодом маркировки уже был продан".Товар добавляется в чек, его можно вернуть
    Товар с таким кодом маркировки возвращенТовар добавлен в чек и может быть проданТовар в чек не добавляется, на экран выводится ошибка "Товар с таким кодом маркировки уже был возвращен"
    Код маркировки зарезервирован в чеке продажиТовар в чек не добавляется, на экран выводится ошибка "Товар с таким кодом маркировки уже был зарезервирован"Товар в чек не добавляется, на экран выводится ошибка "Товар с таким кодом маркировки уже был зарезервирован"
    Код маркировки снят с резерва в чеке продажиТовар добавляется в чек и может быть проданТовар в чек не добавляется, на экран выводится ошибка "Товар с таким кодом маркировки еще не продан"
    Код маркировки зарезервирован в чеке возврата (чеке возврата по чеку продажи)Товар в чек не добавляется, на экран выводится ошибка "Товар с таким кодом маркировки уже был зарезервирован"Товар в чек не добавляется, на экран выводится ошибка "Товар с таким кодом маркировки уже был зарезервирован"
    Код маркировки снят с резерва в чеке возврата (чеке возврата по чеку продажи)Товар в чек не добавляется, на экран выводится ошибка "Товар с таким кодом маркировки уже был продан"Товар добавляется в чек, его можно вернуть
    Код маркировки отсутствует в списке разрешенных к продажеТовар в чек не добавляется, на экран выводится ошибка "Товар с таким кодом маркировки запрещен к продаже"Статус не проверяется на сервере.
    Товар отсутствует на остаткеТовар в чек не добавляется, на экран выводится ошибка "Товар с таким кодом маркировки запрещен к продаже. Нет на остатке"Товар добавляется в чек, его можно вернуть
    Штрих-код для проверки в списке кодов маркировок, разрешенных к продаже, не переданТовар в чек не добавляется, на экран выводится ошибка "Товар с таким кодом маркировки запрещен к продаже. Не заполнен штрих-код для проверки в белом списке"Товар добавляется в чек, его можно вернуть
    Соответствие кода маркировки и штрих-кода в списке кодов маркировок, разрешенных к продаже, не найденоТовар в чек не добавляется, на экран выводится ошибка "Товар с таким кодом маркировки запрещен к продаже. Не найдено соответствие кода маркировки и штрих-кода в белом списке"Товар добавляется в чек, его можно вернуть
    Магазин для проверки остатков не найденТовар в чек не добавляется, на экран выводится ошибка "Товар с таким кодом маркировки запрещен к продаже. Не найден магазин для проверки остатков"Товар добавляется в чек, его можно вернуть
    Штрих-код для проверки остатков не заполненТовар в чек не добавляется, на экран выводится ошибка "Товар с таким кодом маркировки запрещен к продаже. Не заполнен штрих-код для проверки остатков"Товар добавляется в чек, его можно вернуть
    Код товара для проверки остатков не заполненТовар в чек не добавляется, на экран выводится ошибка "Товар с таким кодом маркировки запрещен к продаже. Не заполнен код товара для проверки остатков"Товар добавляется в чек, его можно вернуть
    Справочник остатков для товара, по которому проверяем остатки, заполнен не корректноТовар в чек не добавляется, на экран выводится ошибка "Товар с таким кодом маркировки запрещен к продаже. Некорректно заполнен справочник остатков для товара"Товар добавляется в чек, его можно вернуть
    Неизвестный статус кода маркировкиТовар в чек не добавляется, на экран выводится ошибка "Неизвестный статус кода маркировки на сервере"Товар в чек не добавляется, на экран выводится ошибка "Неизвестный статус кода маркировки на сервере"
    После добавления товара в чек продажи/возврата код маркировки ставится в резерв на кассовом сервере.

    Изменение статуса кода маркировки на кассовом сервере в зависимости от операции выполняется:

    • в режиме онлайн (по REST-запросу) – резервирование кода маркировки,
    • в режиме оффлайн (через очередь Artix-Queue) – снятие с резерва кода маркировки (сторнирование), после закрытия чека перевод в статус "продан", "возвращен".

    Разрешительный режим

    Panel

    Начиная с версии 4.6.272-7 кассового ПО Artix реализована возможность проверки кодов маркировок в локальном модуле системы "Честный знак".


    Panel

    В кассовом ПО Artix реализован разрешительный режим – обязательная проверка кодов маркировок в системе цифровой маркировки "Честный знак".

    Warning

    На основании Постановления Правительства Российской Федерации от 21.11.2023 № 1944 с 1 апреля 2024 года в розничных магазинах при продаже маркированных товаров должна осуществляться обязательная проверка кодов маркировок в системе цифровой маркировки "Честный знак".

    Разрешительный режим вводится в несколько этапов и имеет отличия по срокам для товарных групп, категорий продавцов и применения проверок в онлайн и офлайн режимах.

    Рекомендуется дополнительно ознакомиться с методическими рекомендациями по разрешительному режиму здесь, со сроками запуска разрешительного режима и с другой информацией на официальной странице "Честного знака".


    Info
    Проверка производится только для товаров в чеке продажи.


    Info

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


    Info

    При проверке кодов маркировок некоторых товаров, ввозимых в Россию из стран таможенного союза, могут возникать ошибки.


    Info

    Разрешительный режим также поддержан для софт-чеков и онлайн-чеков:

    • проверка кодов маркировок происходит при восстановлении онлайн-чеков,
    • для софт-чеков проверка кода маркировки товара происходит при сканировании маркированной позиции в заказе.


    Note

    Если параметры проверки заданы некорректно или задан недействительный токен авторизации, то:

    • продажа маркированных товаров будет осуществляться без проверки в системе цифровой маркировки "Честный знак",
    • тег 1265 с результатом проверки заполняться не будет.


    Обязательная проверка кодов маркировок на сервере системы "Честный знак" задается при помощи параметра enableMarkVerifyCrpt в конфигурационном файле /linuxcash/cash/conf/ncash.ini.d/motp.ini в секции [Motp]:

    • при значении true осуществляется проверка кода маркировки на сервере системы "Честный знак",
    • при значении false проверка кода маркировки на сервере системы "Честный знак" не осуществляется.

    Возможность игнорировать ошибки обращения к серверу системы "Честный знак" задается при помощи параметра ignoreMarkVerifyCrptConnectionErrors в конфигурационном файле /linuxcash/cash/conf/ncash.ini.d/motp.ini в секции [Motp]:

    • при значении deny в случае возникновения ошибок на экран будет выведен диалог с сообщением об ошибке: "Не удалось выполнить проверку кода маркировки (Ошибка соединения с сервером)", после закрытия диалога товар не будет добавлен в чек,
    • при значении ask в случае возникновения ошибок на экран будет выведен диалог с сообщением об ошибке: "Не удалось выполнить проверку кода маркировки (Ошибка соединения с сервером)", по нажатию клавиши "Продолжить" товар добавляется в чек, по нажатию клавиши "Отмена" товар не будет добавлен в чек,
    • при значении allow статус игнорируется, товар будет добавлен в чек.

    Возможность запросить подтверждение добавления товара при провале проверки маркировки задается при помощи параметра markVerifyCrptAskConfirmation в конфигурационном файле /linuxcash/cash/conf/ncash.ini.d/motp.ini в секции [Motp]:

    • при значении true на экран будет выведен диалог с сообщением об ошибке: по нажатию клавиши "Ввод" товар будет добавлен в чек, по нажатию клавиши "Отмена" товар не будет добавлен в чек,
    • при значении false на экран будет выведен диалог с сообщением об ошибке, после закрытия диалога товар не будет добавлен в чек.
    НаименованиеТипа данныхВозможные значенияОписаниеПримечание

    enableMarkVerifyCrpt

    Anchor
    markVerifyCrptUrl
    markVerifyCrptUrl

    логический
    • true
    • false
    Проверка кодов маркировок на сервере честного знака

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

    Info

    Для корректной работы при включенной настройке необходимо задать токен для доступа к серверу системы "Честный знак".


    markVerifyCrptUrlстроковый
    Url сервера проверки кодов маркировок честного знака

    По умолчанию https://cdn.crpt.ru

    Можно указать несколько значений через запятую

    markVerifyCrptTimeout

    Anchor
    markVerifyCrptRequestTimeout
    markVerifyCrptRequestTimeout

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


    Таймаут обращения к серверу проверки кодов маркировок честного знака в секундах

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

    Минимальное значение, которое можно указать – 2

    markVerifyCrptRequestTimeoutстроковый


    Таймаут обращения к CDN серверу честного знака, если не задан то использует значение markVerifyCrptTimeout

    По умолчанию не задан

    ignoreMarkVerifyCrptConnectionErrorsстроковый
    • deny
    • allow
    • ask
    Игнорировать ошибки обращения к серверу честного знакаПо умолчанию deny
    markVerifyCrptAskConfirmationлогический
    • true
    • false
    Запросить подтверждение добавления товара при провале проверки маркировкиПо умолчанию false


    Code Block
    languagetext
    titleПример настройки
    [Motp]
    ...
    ; Проверка кодов маркировки на сервере честного знака
    ; По умолчанию 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
    ...

    Anchor
    xapikey
    xapikey
    В кассовом ПО Artix реализована возможность авторизации по токену УОТ (участника оборота товаров) в системе цифровой маркировки "Честный знак". Данная возможность задается при помощи параметра xapikey в конфигурационном файле /linuxcash/cash/conf/ncash.ini.d/motp.ini в секции [Motp]:

    НаименованиеТип данныхОписаниеПримечания
    xapikeyстроковыйТокен для доступа к серверу честного знака
    • При использовании одного токена для нескольких юридических лиц:
      xapikey = [<отдел1>.<отдел2>:<токен>]
    • При использовании токена только для одного из юридических лиц, например, только для <отдел2>:
      xapikey = [<отдел1>:1],[<отдел2>:<токен>]
    • При использовании токена для одного юридического лица:
      xapikey = [-1:<токен>]
    Info

    Использование токена вида xapikey = [1:<токен>] недопустимо.


    Tip

    С информацией о получении токена можно ознакомиться в Методических рекомендациях по разрешительному режиму.



    Code Block
    languagetext
    titleПример настройки
    [Motp]
    ...
    ; Токен для доступа к серверу честного знака
    ; При использовании нескольких юрлиц задаются токены для отделов:
    ; xapikey = [<отдел1>:<токен1>],[<отдел2>.<отдел3>:<токен2>]
    ; При использовании одного юрлица токен задается для отдела -1
    ; xapikey = [-1:<токен>]
    ;xapikey =
    ...


    Info

    Если задан невалидный токен, то будет выведено уведомление "Честный знак: ошибка токена. Чеки будут сформированы некорректно".


    Info

    Если при работе с несколькими юридическими лицами не задан токен хотя бы для одного из отделов, то будет выведено предупреждение "Честный знак: токен для проверки не найден. Товар не будет добавлен".

    При использовании нескольких юрлиц выполняется перебор токенов для авторизации (начиная с последнего указанного токена в параметре xapikey). Если после перебора всех токенов авторизация не выполнится, то получить доступ к серверу для проверки кодов маркировок будет невозможно.

    После авторизации по токену УОТ (участника оборота товаров) в момент запуска кассы в системе цифровой маркировки "Честный знак" будет получен список CDN-площадок для осуществления проверки кодов маркировок.

    CDN-площадка для проверки кодов маркировок выбирается в порядке приоритета в зависимости от среднего времени ответа, получаемого при запросе статуса CDN-площадок. Самый высокий приоритет имеет CDN-площадка с наименьшим средним временем ответа.

    Если соединение с приоритетной CDN-площадкой было потеряно, то данная CDN-площадка будет недоступна для проверки кодов маркировок в течение 15 минут, проверка будет осуществляться в той CDN-площадке, которая следует далее по приоритету.

    За время, заданное в markVerifyCrptTimeout, выполняется перебор CDN-площадок с таймаутом, который указан в параметре markVerifyCrptRequestTimeout. Если он задан и его значение меньше, чем markVerifyCrptTimeout, то сначала ожидается ответ в течение времени markVerifyCrptRequestTimeout. Если ответа нет, то время ожидания ограничивается с учетом разности между значениями параметров markVerifyCrptTimeout и markVerifyCrptRequestTimeout.

    Info

    Для корректной работы рекомендуется устанавливать значение парамерта markVerifyCrptRequestTimeout меньше, чем markVerifyCrptTimeout. Если markVerifyCrptRequestTimeout markVerifyCrptTimeout, то до истечения markVerifyCrptTimeout будет ожидаться ответ от сервера системы "Честный знак" без перебора CDN-площадок.


    Panel
    titleПример

    markVerifyCrptRequestTimeout = 20
    markVerifyCrptTimeout = 30

    • Если получен успешный ответ на запрос:
      1. При добавлении маркированного товара отправляется запрос на сервер системы "Честный знак".
      2. Ожидается ответ в течение markVerifyCrptRequestTimeout = 20 секунд.
      3. Получен успешный ответ, дальнейший перебор не выполняется.
    • Если время ожидания ответа от сервера превысило таймаут:
      1. При добавлении маркированного товара отправляется запрос на сервер системы "Честный знак".
      2. Ожидается ответ в течение markVerifyCrptRequestTimeout = 20 секунд.
      3. Отправляется запрос по следующему адресу.
      4. Ожидается ответ 10 секунд, так как стоит ограничение markVerifyCrptTimeout.
    • Если отсутствует связь во время отправки запроса на сервер:
      1. При добавлении маркированного товара отправляется запрос на сервер системы "Честный знак".
      2. Ожидается ответ в течение markVerifyCrptRequestTimeout = 20 секунд.
      3. Ответ не получен, дальнейший перебор не выполняется.

    Если в течение таймаута, заданного в настройке markVerifyCrptTimeout, ни одна из CDN-площадок из списка не ответила или оказалась недоступна, то, в зависимости от значения параметра ignoreMarkVerifyCrptConnectionErrors, товар может быть добавлен в чек без проверки кода маркировки.

    Настройки получения информации о CDN-площадках осуществляются в конфигурационном файле /linuxcash/cash/conf/ncash.ini.d/crpt.ini в секции [CRPT]:

    НаименованиеТип данныхОписаниеПримечания
    getInfoTimeoutцелочисленныйТаймаут получения списка CDN-площадокПо умолчанию 10 секунд
    healthCheckTimeoutцелочисленныйТаймаут получения состояния CDN-площадкиПо умолчанию 10 секунд


    Code Block
    languagetext
    titleПример настройки
    [CRPT]
    ; Настройки взаимодействия с ЦРПТ
    
    ; Таймаут получения списка CDN-площадок
    ; по умолчанию 10 секунд
    ;getInfoTimeout = 10
    
    ; Таймаут получения состояния CDN-площадки
    ; по умолчанию 10 секунд
    ;healthCheckTimeout = 10

    Обработка статусов кода маркировки

    При добавлении маркированных товаров в чек продажи на сервер системы "Честный знак" отправляется REST-запрос на получение статуса кода маркировки.

    Статус кода маркировкиПоведение кассы при продаже по умолчанию
    Товар с некорректным кодом маркировкиТовар в чек не добавляется, на экран выводится ошибка "Ошибка проверки кода маркировки позиции <...>. Код маркировки некорректен"
    Товар с такой маркой не прошел проверку подлинностиТовар в чек не добавляется, на экран выводится ошибка "Ошибка проверки кода маркировки позиции <...>. Код маркировки не прошел проверку крипто подписи"
    Товар не имеет признака нанесения марки на упаковкуТовар в чек не добавляется, на экран выводится ошибка "Ошибка проверки кода маркировки позиции <...>. У кода маркировки отсутствует признак нанесения на упаковку"
    Товар с такой маркой продан или снят с продажиТовар в чек не добавляется, на экран выводится ошибка "Ошибка проверки кода маркировки позиции <...>. Код маркировки не в обороте"
    Товар с такой маркой имеет истекший срок годностиТовар в чек не добавляется, на экран выводится ошибка "Ошибка проверки кода маркировки позиции <...>. Товар с таким кодом маркировки просрочен"
    Код маркировки данного товара выведен из оборотаТовар в чек не добавляется, на экран выводится ошибка "Ошибка проверки кода маркировки позиции <...>. Код маркировки выведен из оборота"
    Товар с таким кодом маркировки не найденТовар в чек не добавляется, на экран выводится ошибка "Ошибка проверки кода маркировки позиции <...>. Код маркировки не найден"
    Товар заблокирован одной из CDN-площадокТовар в чек не добавляется, на экран выводится ошибка "Ошибка проверки кода маркировки позиции <...>. Товар с таким кодом маркировки заблокирован "<CDN-площадкой>"
    Товар не принадлежит продавцуТовар в чек не добавляется, на экран выводится ошибка "Ошибка проверки кода маркировки позиции <...>. Товар не принадлежит продавцу"

    В кассовом ПО Artix реализована возможность игнорировать конкретные статусы, получаемые при проверке кода маркировки на сервере системы "Честный знак".

    Info
    Функционал доступен только при выключенной настройке markVerifyCrptAskConfirmation.

    Данное поведение задается при помощи параметров, соответствующих полученным статусам, в конфигурационном файле /linuxcash/cash/conf/ncash.ini.d/motp.ini в секции [Motp]:

    Anchor
    deny_allow_ask
    deny_allow_ask

    • при значении deny в случае возникновения ошибок на экран будет выведен диалог с сообщением об ошибке, после закрытия диалога товар не будет добавлен в чек,
    • при значении ask в случае возникновения ошибок на экран будет выведен диалог с сообщением об ошибке: по нажатию клавиши "Продолжить" товар добавляется в чек, по нажатию клавиши "Отмена" товар не будет добавлен в чек,
    • при значении allow статус игнорируется, товар будет добавлен в чек.
    НаименованиеТипа данныхВозможные значенияОписаниеПримечание
    ignoreCrptStatusValidстроковый
    • deny
    • ask
    • allow
    Игнорировать результат проверки валидности кода маркировкиПо умолчанию deny
    ignoreCrptStatusVerifiedстроковыйИгнорировать результат проверки крипто подписи кода маркировки
    ignoreCrptStatusUtilisedстроковыйИгнорировать признак нанесения кода маркировки на упаковку
    ignoreCrptStatusRealizableстроковыйИгнорировать признак возможности реализации кода маркировки
    ignoreCrptStatusExpireDateстроковыйИгнорировать срок годности
    ignoreCrptStatusSoldстроковыйИгнорировать вывод из оборота
    ignoreCrptStatusIsBlockedстроковыйИгнорировать блокировку КМ
    ignoreCrptStatusFoundстроковыйИгнорировать не найденный КМ

    ignoreCrptStatusIsOwner

    строковый

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

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

    По умолчанию разрешена продажа товаров, для которых от сервера системы "Честный знак" при проверке кода маркировки не получен статус принадлежности участнику оборота

    Info

    Cогласно законодательству, на текущий момент наличие признака принадлежности у товара необязательно.

    При необходимости можно запретить продажу таких товаров, задав для параметра значение deny.



    Code Block
    languagetext
    titleПример настройки
    [Motp]
    ...
    ; Игнорировать получаемые статусы кода маркировки при проверке на сервере честного знака
    ; Возможные значения: "deny" - запретить продажу товара, если сервер вернул неверный статус,
    ; "ask" - запросить подтверждение продажи у кассира,
    ; "allow" - всегда разрешать продажу товара, независимо от получаемого статуса
    ; По умолчанию "deny"
    ; Игнорировать результат проверки валидности КМ
    ;ignoreCrptStatusValid = deny
    ; Игнорировать результат проверки крипто подписи КМ
    ;ignoreCrptStatusVerified = deny
    ; Игнорировать признак нанесения КМ на упаковку
    ;ignoreCrptStatusUtilised = deny
    ; Игнорировать признак возможности реализации КМ
    ;ignoreCrptStatusRealizable = deny
    ; Игнорировать срок годности
    ;ignoreCrptStatusExpireDate = deny
    ; Игнорировать вывод из оборота
    ;ignoreCrptStatusSold = deny
    ; Игнорировать блокировку КМ
    ;ignoreCrptStatusIsBlocked = deny
    ; Игнорировать не найденный КМ
    ;ignoreCrptStatusFound = deny 
    ; Игнорировать признак принадлежности продавцу
    ;ignoreCrptStatusIsOwner = allow
    ...

    В кассовом ПО реализована возможность игнорировать принадлежность товара к "серой зоне", задается параметром ignoreCrptStatusGrayZone в конфигурационном файле /linuxcash/cash/conf/ncash.ini.d/motp.ini в секции [Motp]. Если товар находится в "серой зоне" и не в обороте, то:

    • при значении true в случае возникновения ошибок на экран будет выведен диалог с сообщением об ошибке, после закрытия диалога товар не будет добавлен в чек,
    • при значении false в случае возникновения ошибок товар будет добавлен в чек.

    Если товар в обороте, то он добавится в чек независимо от нахождения в "серой зоне".

    НаименованиеТипа данныхВозможные значенияОписаниеПримечание
    ignoreCrptStatusGrayZoneлогический
    • true
    • false
    Игнорировать принадлежность товара к "серой зоне"Используется в случае, если товар не в обороте


    Code Block
    languagetext
    titleПример настройки
    [Motp]
    ...
    ; Игнорировать принадлежность товара к "серой зоне"
    ; По умолчанию false
    ;ignoreCrptStatusGrayZone = false 
    ...

    Отраслевые реквизиты

    Отраслевые реквизиты передаются в ОФД только в чеках продажи. Их заполнение обязательно всеми участниками оборота для тех товарных групп, которые подлежат обязательной проверке в системе цифровой маркировки "Честный знак".

    Настройки отраслевых реквизитов задаются в конфигурационном файле /linuxcash/cash/conf/ncash.ini.d/motp.ini в секции [Motp]:

    НаименованиеТип данныхОписаниеПримечания
    foivстроковыйОтраслевой реквизит: идентификатор ФОИВ

    По умолчанию "030".

    Указывается идентификатор ФОИВ.

    Идентификатор ФОИВ – это идентификатор федерального органа исполнительной власти.

    Tip

    На текущий момент, согласно Постановлению Правительства Российской Федерации от 21.11.2023 № 1944, федеральный орган исполнительной власти – Министерство промышленности и торговли Российской Федерации.

    Соответственно параметр foiv должен принимать значение идентификатора ФОИВ – 030.

    Реквизит передается в теге 1262

    documentDateстроковыйОтраслевой реквизит: дата документа основания (дд.мм.гггг)

    По умолчанию "21.11.2023".

    Указывается дата документа основания.

    Tip
    На текущий момент документ основания – это Постановление Правительства Российской Федерации от 21.11.2023 № 1944, соответственно дата документа основания – 21.11.2023.

    Реквизит передается в теге 1263

    documentNumberстроковыйОтраслевой реквизит: номер документа основания

    По умолчанию "1944".

    Указывается номер документа основания.

    Tip
    На текущий момент документ основания – это Постановление Правительства Российской Федерации от 21.11.2023 № 1944, соответственно номер документа основания – 1944.

    Реквизит передается в теге 1264


    Code Block
    languagetext
    titleПример настройки
    [Motp]
    ...  
    ; Отраслевой реквизит: идентификатор ФОИВ
    ; По умолчанию "030"
    ;foiv = 030
    ; Отраслевой реквизит: дата документа основания (дд.мм.гггг)
    ; По умолчанию "21.11.2023"
    ;documentDate = 21.11.2023
    ; Отраслевой реквизит: номер документа основания
    ; По умолчанию "1944"
    ;documentNumber = 1944 
    ...


    Info

    Если один из параметров foiv, documentDate, documentNumber пуст, то будет выведено уведомление "Честный знак: ошибка в отраслевых реквизитах. Чеки будут сформированы некорректно".


    Info

    По результатам проверки в системе цифровой маркировки "Честный знак" формируется отраслевой реквизит вида "UUID=<reqId>&Time=<reqTimestamp>", который передается в ОФД в теге 1265.

    Значения атрибутов подставляются из ответа от сервера системы цифровой маркировки "Честный знак":

    • reqId=2ce10bdb-6510-4d37-be04-dd473b98c728,
    • reqTimestamp=1692691702065.