You are viewing an old version of this page. View the current version.

Compare with Current View Page History

« Previous Version 4 Current »

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

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

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

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

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

НаименованиеТип данныхВозможные значенияОписаниеПримечания
markedgoodsлогический
  • on
  • off
Активация модуля маркированных товаровПо умолчанию off
Пример настройки
[plugins]
; on - модуль включен, off - выключен. 
; По умолчанию off
;markedgoods = off

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

Для каждой категории маркированных товаров в конфигурационном файле /linuxcash/cash/conf/ncash.ini.d/markedgoods.ini может быть создана своя подсекция [MarkedGoods.<имя_подсекции>]. Каждая из подсекций должна содержать маску для проверки Data Matrix, которая задается параметром mask.

Если у подсекции отсутствует маска для проверки Data Matrix или она не уникальна, то настройки подсекции работать не будут.

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

Пример настройки
;[MarkedGoods.Milk]
; Маркированное молоко
; Маска для проверки DataMatrix молочной продукции
;mask = "\s*01(?<barcode>[0-9]{14})21.{13}\s*(17\d{6}|7003\d{10})\s*93.{4}"

;[MarkedGoods.Camera]
; Маркированные фотокамеры
; Маска для проверки DataMatrix фотокамер
;mask = "01(?<barcode>[0-9]{14})21.{20}\s*91.{4}\s*92.{44}"

;[MarkedGoods.Common]
; Маркированные парфюм, велосипеды, товары легкой промышленности, шины и покрышки и кресла-коляски
; Маска для проверки DataMatrix для парфюма, велосипедов, товаров легкой промышленности, шин и покрышек и кресел-колясок
;mask = "01(?<barcode>[0-9]{14})21.{13}\s*91.{4}\s*92.{44}"

;[MarkedGoods.Water]
; Маркированная вода
; Маска для проверки DataMatrix водной продукции
;mask = "01(?<barcode>[0-9]{14})21.{13}\s*93.{4}\s*"

В случае последовательного сканирования штрих-кода товара и кода маркировки, содержащий другой штрих-код, необходимо использовать маску без именованного захвата значений "(?<barcode>)", например "01[0-9]{14}21.{13}\s*91.{4}\s*92.{44}".

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

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

Продажа маркированных товаров

Добавление маркированных товаров

Для маркированных товаров должен быть установлен признак tmctype = 7 (БД Dictionaries таблица barcodes). При добавлении маркированных товаров требуется считывание кода маркировки.

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

  • последовательным сканированием штрих-кода товара и кода маркировки;
  • сканированием кода маркировки (код маркировки содержит в себе данные штрих-кода, поэтому сканировать штрих-код не требуется).

Так как код маркировки представляет собой уникальный код, то в товарной позиции может быть не более 1 единицы товара. Применение модификатора "Изменение количества" к позиции с маркированным товаром запрещено.

Добавление в чек маркированных товаров, как обычных (без ввода кода маркировки), определяется параметром addWithoutScanMark в конфигурационном файле /linuxcash/cash/conf/ncash.ini.d/markedgoods.ini в секции [MarkedGoods]:

  • при значении true при добавлении товара в чек на экран будет выведен диалог сканирования кода маркировки, в котором есть возможность добавить товар без маркировки;
  • при значении false при добавлении товара в чек на экран будет выведен диалог сканирования кода маркировки.
НаименованиеТип данныхВозможные значенияОписаниеПримечания
addWithoutScanMarkлогический
  • true
  • false
Добавлять маркированные товары в чек без ввода кода маркировкиПо умолчанию false
Пример настройки
[MarkedGoods]
...
; Добавлять маркированные товары в чек без ввода кода маркировки
; По умолчанию false
;addWithoutScanMark = false

Удаление маркированных товаров

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

Возврат маркированных товаров

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

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

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

  • выбрав товар из списка в режиме выбора позиций для возврата и считав код маркировки товара;
  • выбрав товар из списка в режиме выбора позиций для возврата и нажав "без маркировки" в диалоге считывания кода маркировки (если включена настройка addWithoutScanMark);
  • считав код маркировки товара.

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

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

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

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

Проверка кодов маркировки товаров

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

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

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

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

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

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

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

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


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

enableMarkVerifyLocal

логический
  • true
  • false
Проверять коды маркировки на кассеПо умолчанию false
Пример настройки
[MarkedGoods]
...
; Проверять коды маркировки на кассе
; По умолчанию false
;enableMarkVerifyLocal = false

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

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

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

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

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

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

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

markVerifyTimeoutстроковый
Таймаут обращения к серверу проверки кодов маркировки в секундахПо умолчанию 30.
ignoreMarkVerifyErrorsлогический
  • true
  • false
Игнорировать ошибки обращения к серверу проверки кодов маркировкиПо умолчанию true.
skipCheckExciseMarkлогический
  • true
  • false
Игнорировать проверку АМ при возврате по чеку (для онлайн-чеков при некорректных АМ)По умолчанию false.
Пример настройки
[MarkedGoods]
...
; Проверка кодов маркировки на сервере
; По умолчанию false
;enableMarkVerify=false
; Игнорировать проверку АМ при возврате по чеку (для онлайн-чеков при некорректных АМ)
; По умолчанию false
;skipCheckExciseMark = 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/markedgoods.ini в секции [MarkedGoods]:

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

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

  • markVerifyUrl - URL кассового сервера;
  • markVerifyTimeout - таймаут ожидания ответа от кассового сервера при проверке кодов маркировки.

Настройками программы можно разрешать или запрещать продажу/возврат маркированных товаров при возникновении ошибок обращения к кассовому серверу. Возможность игнорирования возникающих ошибок определяется параметром ignoreMarkVerifyErrors в конфигурационном файле /linuxcash/cash/conf/ncash.ini.d/markedgoods.ini в секции [MarkedGoods]:

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

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

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

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

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

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

Разделение настроек для разных категорий маркированных товаров

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

Наименование настройкиСтатус
markedgoodsобщая
addWithoutScanMark
skipCheckExciseMark
enableMarkVerifyиндивидуальная
markVerifyUrl
markVerifyTimeout
ignoreMarkVerifyErrors
enableMarkVerifyLocal
mask 

По умолчанию все настройки размещены в секции [MarkedGoods]. При необходимости все или часть индивидуальных настроек можно вынести в отдельную подсекцию [MarkedGoods.<имя_подсекции>]. Если в подсекции [MarkedGoods.<имя_подсекции>] указана только часть индивидуальных настроек, то для остальных настроек будет использовано значение из секции [MarkedGoods].

В подсекции [MarkedGoods.<имя_подсекции>] обязательно должна быть указана маска для проверки Data Matrix.


Пример разделения настроек
[plugins]
markedgoods = on

[MarkedGoods]
; Проверка кодов маркировки на сервере
; По умолчанию false
enableMarkVerify = true

; Url сервера проверки кодов маркировки
; Для работы с КС используется следующий url "http://'IP-адрес КС':8080/CSrest/rest/sales/exciseMark/status"
; По умолчанию http://localhost:8080
markVerifyUrl = http://localhost:8080

; Таймаут обращения к серверу проверки кодов маркировки в секундах
; По умолчанию 30
markVerifyTimeout = 30

; Игнорировать ошибки обращения к серверу проверки кодов маркировки
; По умолчанию true
ignoreMarkVerifyErrors = true

; Проверять коды маркировки на кассе
; По умолчанию false
enableMarkVerifyLocal = false

; Добавлять маркированные товары в чек без ввода кода маркировки
; По умолчанию false
addWithoutScanMark = false

;[MarkedGoods.Milk]
;mask = "\s*01(?<barcode>[0-9]{14})21.{13}\s*(17\d{6}|7003\d{10})\s*93.{4}"
; Проверка кодов маркировки на сервере
; По умолчанию false
enableMarkVerify = false
; Проверять коды маркировки на кассе
; По умолчанию false
enableMarkVerifyLocal = true

;[MarkedGoods.Camera]
;mask = "01(?<barcode>[0-9]{14})21.{20}\s*91.{4}\s*92.{44}"
; Проверка кодов маркировки на сервере
; По умолчанию false
enableMarkVerify = true
; Проверять коды маркировки на кассе
; По умолчанию false
enableMarkVerifyLocal = false

;[MarkedGoods.Common]
;mask = "01(?<barcode>[0-9]{14})21.{13}\s*91.{4}\s*92.{44}"
; Игнорировать ошибки обращения к серверу проверки кодов маркировки
; По умолчанию true
ignoreMarkVerifyErrors = false

;[MarkedGoods.Water]
;mask = "01(?<barcode>[0-9]{14})21.{13}\s*93.{4}\s*"
  • No labels