В кассовом По Artix реализована возможность передачи кодов маркировок (СИ и УКЗ) в ПКС "iKassa".
- СИ (средство идентификации) - код маркировки в машиночитаемой форме, представленный в виде штрихового кода,
- УКЗ (унифицированный контрольный знак) – документ с определенной степенью защиты, предназначенный для маркировки товаров.
Пакет tsrv устарел, его использование возможно до конца декабря 2024.
Для корректной работы маркировок необходимо использовать новый пакет tsrv-marking и новый токен. Подробнее об этом можно прочитать в разделе "ПКС «iKassa»".
Для передачи КМ необходимо, чтобы модуль маркированных товаров markedgoods был активирован в конфигурационном файле /linuxcash/cash/conf/ncash.ini.d/markedgoods.ini в секции [plugins]. Подробнее об этом можно прочитать в разделе "Реализация маркированных товаров".
Передача маркировки СИ
Данный способ используется для добавления в чек товара только с маркировкой СИ, если в БД Dictionaries таблице Tmc для поля op_mode не заданы значения 2097152 и 4194304.
Для передачи маркировки СИ в конфигурационном файле /linuxcash/cash/conf/ncash.ini.d/markedgoods.ini должны быть настроены соответствующие подсекции. Подробнее об этом можно прочитать в разделе "Реализация маркированных товаров".
Добавление в чек товара с маркировкой СИ возможно следующими способами:
- Последовательным сканированием штрих-кода и маркировки СИ.
При сканировании штрих-кода товара на экран будет выведен диалог "Отсканируйте код маркировки:- При сканировании маркировки СИ маркированный товар будет добавлен в чек.
- При сканировании маркировки УКЗ вместо СИ на экран будет выведен диалог "Отсканирован не тот код маркировки". При закрытии диалога товар не будет добавлен в чек.
- Сканированием маркировки СИ.
При сканировании маркировки СИ маркированный товар будет добавлен в чек.
Передача маркировки УКЗ
- Для добавления товара только с маркировкой УКЗ в БД
DictionariesтаблицеTmcдля поляop_modeнеобходимо задать значение4194304. - При закрытии чеков продажи и возврата код маркировки УКЗ для добавленных позиций сохраняются в БД
DocumentsтаблицеGoodsitemв полеexcisemark.
Для передачи маркировки УКЗ необходимо добавить подсекцию [MarkedGoods.Ukz] в конфигурационный файл /linuxcash/cash/conf/ncash.ini.d/markedgoods.ini:
Настройки в подсекции являются скрытыми, необходимо прописать их вручную.
[MarkedGoods.Ukz]
; Товары с унифицированными контрольными знаками (Республика Беларусь)
; Товары являются товарами с унифицированными контрольными знаками
ukz = true
; Маска для проверки УКЗ
mask = "01([0-9]{14})21([0-9]{9})([a-zA-Z]{3})"
Добавление в чек товара с маркировкой УКЗ возможно двумя способами:
- Последовательным сканированием штрих-кода и маркировки УКЗ.
При сканировании штрих-кода товара на экран будет выведен диалог "Отсканируйте маркировку УКЗ":- При сканировании маркировки УКЗ маркированный товар будет добавлен в чек.
- При сканировании маркировки СИ вместо УКЗ на экран будет выведен диалог "Для товара со свойством 'маркировка УКЗ' запрещено сканирование маркировки СИ". При закрытии диалога товар не будет добавлен в чек.
- Последовательным сканированием маркировки УКЗ и штрих-кода товара.
При сканировании УКЗ на экран будет выведен диалог "Необходима дополнительная информация. Отсканируйте штрих-код товара".- При сканировании штрих-кода маркированный товар будет добавлен в чек.
- При сканировании маркировки СИ вместо штрих-кода товара на экран будет выведен диалог "Для товара со свойством 'маркировка УКЗ' запрещено сканирование маркировки СИ". При закрытии диалога товар не будет добавлен в чек.
Сканирование одной маркировки
Параметр separateMarks необходимо добавить в файл вручную.
Порядок сканирования одной маркировки СИ или УКЗ определяется параметром separateMarks в конфигурационном файле /linuxcash/cash/conf/ncash.ini.d/markedgoods.ini в секции [MarkedGoods.Ukz]:
- при значении
trueтовар будет добавлен при сканировании маркировки согласно БДDictionariesтаблицеTmcполюop_mode, - при значении
falseтовар будет добавлен при сканировании любой маркировки.
| Наименование | Тип данных | Возможные значения | Описание | Примечания |
|---|---|---|---|---|
| separateMarks | логический |
| Включает разделение обработки марок СИ и УКЗ | По умолчанию false |
[MarkedGoods.Ukz] ; Включает разделение обработки марок СИ и УКЗ ; По умолчанию false ;separateMarks = false
Добавление товаров с двумя видами маркировки
- Для добавления товаров с двумя видами маркировки в БД
DictionariesтаблицеTmcдля поляop_modeнеобходимо задать значение2097152. - При закрытии чека продажи коды маркировки для добавленных позиций сохраняются в БД
DocumentsтаблицеGoodsitem:- СИ – в поле
excisemark, - УКЗ – в поле
additionalexcisemark.
- СИ – в поле
Добавление в чек товара с двумя видами маркировки возможно следующими способами:
- Последовательным сканированием штрих-кода, маркировки СИ и УКЗ.
При сканировании штрих-кода товара на экран будет выведен диалог "Отсканируйте код маркировки".
При сканировании маркировки СИ на экран будет выведен диалог "Сканируйте маркировку УКЗ". Отсканируйте маркировку УКЗ, после чего маркированный товар будет добавлен в чек. - Последовательным сканированием штрих-кода, маркировки УКЗ и СИ.
При сканировании штрих-кода товара на экран будет выведен диалог "Отсканируйте код маркировки".
При сканировании маркировки УКЗ на экран будет выведен диалог "Сканируйте маркировку СИ". Отсканируйте маркировку СИ, после чего маркированный товар будет добавлен в чек. - Последовательным сканированием маркировки СИ и УКЗ.
При сканировании маркировки СИ на экран будет выведен диалог "Сканируйте маркировку УКЗ". Отсканируйте маркировку УКЗ, после чего маркированный товар будет добавлен в чек. - Последовательным сканированием маркировки УКЗ и СИ.
При сканировании маркировки УКЗ на экран будет выведен диалог "Необходима дополнительная информация. Отсканируйте штрих-код товара". Отсканируйте маркировку СИ, после чего маркированный товар будет добавлен в чек. - Последовательным сканированием УКЗ, штрих-кода и маркировки СИ.
При сканировании маркировки УКЗ на экран будет выведен диалог "Необходима дополнительная информация. Отсканируйте штрих-код товара".
При сканировании штрих-кода на экран будет выведен диалог "Сканируйте маркировку СИ". Отсканируйте маркировку СИ, после чего маркированный товар будет добавлен в чек.
Добавление товаров с двумя видами маркировки при возврате по чеку продажи
Для добавления товаров с двумя маркировками в чек возврата по чеку продажи достаточно отсканировать одну из маркировок – СИ или УКЗ.
Позицию можно выбрать из списка вручную в режиме выбора позиций либо сразу отсканировать одну из маркировок.
Добавление товара в чек возврата без сканирования кода маркировки
При закрытии чека возврата по чеку продажи для добавленных позиций в БД Documents таблице Stornogoodsitem сохраняются:
- код маркировки СИ или УКЗ – в поле
excisemark(если не было пропущено сканирование), - код маркировки УКЗ – в поле
additionalexcisemark(если были отсканированы оба кода маркировки – СИ и УКЗ), - код маркировки до любых преобразований – в поле
markingcode(сохраняется всегда).
В кассовом ПО реализована возможность пропускать сканирование кодов маркировок в чеке возврата по чеку продажи и в режиме возврата (отображается кнопка "Без маркировки"). Для этого необходимо вручную добавить и включить параметр skipScanMarksInBackBySale в конфигурационном файле /linuxcash/cash/conf/ncash. ini.d/markedgoods.ini в секцию [MarkedGoods.Ukz]:
при значении
true, при выборе товара:вручную, из списка позиций – на экран будут последовательно выведены диалоги сканирования:
первого кода маркировки (в диалоге есть возможность пропустить сканирование).
- второго кода маркировки (в диалоге есть возможность пропустить сканирование):
- СИ – если до этого был отсканирован УКЗ
- УКЗ – если до этого был отсканирован СИ.
- сканированием кода маркировки СИ – на экран будет выведен диалог сканирования кода маркировки УКЗ (в диалоге есть возможность пропустить сканирование).
- сканированием кода маркировки УКЗ – на экран будет выведен диалог сканирования кода маркировки СИ (в диалоге есть возможность пропустить сканирование).
- сканированием штрих-кода – на экран будет выведен диалог сканирования кода маркировки (в диалоге есть возможность пропустить сканирование).
- при значении
false, при выборе товара:вручную, из списка позиций – на экран будут последовательно выведены диалоги сканирования:
первого кода маркировки.
- второго кода маркировки:
- СИ – если до этого был отсканирован УКЗ
- УКЗ – если до этого был отсканирован СИ.
- сканированием кода маркировки СИ – на экран будет выведен диалог сканирования кода маркировки УКЗ.
- сканированием кода маркировки УКЗ – на экран будет выведен диалог сканирования кода маркировки СИ.
- сканированием штрих-кода – на экран будет выведен диалог сканирования кода маркировки.
| Наименование | Тип данных | Возможные значения | Описание | Примечания |
|---|---|---|---|---|
| skipScanMarksInBackBySale | логический |
| Пропускать сканирование кодов маркировок в чеке возврата по чеку продажи | По умолчанию false |
[MarkedGoods.Ukz] ... ; Пропускать сканирование кодов маркировок в чеке возврата по чеку продажи skipScanMarksInBackBySale = true
- Товар, добавленный в чек возврата без сканирования одного из кодов маркировки, не может быть добавлен в новый чек продажи с этим кодом маркировки. При сканировании будет выведена ошибка "Код маркировки уже был зарегистрирован ранее".
- Товар, добавленный в чек возврата без сканирования обоих кодов маркировки, не может быть добавлен в новый чек продажи с этими кодами маркировки. При сканировании обоих кодов маркировки будет выведена ошибка "Код маркировки уже был зарегистрирован ранее".
Преобразование NTIN в GTIN для весовых товаров
Для немаркированного весового товара с заданным кодом национального классификатора могут быть применены правила преобразования строки NTIN в GTIN.
Данное поведение может быть задано в конфигурационном файле ФР параметром normalizedGtinEnabled и по умолчанию false.
Подробнее о настройке через конфигурационные файлы можно прочитать в разделе "Создание устройств".
| Наименование | Тип данных | Возможные значения | Описание | Примечания |
|---|---|---|---|---|
| логический |
| Применить правила преобразования строки NTIN в GTIN | По умолчанию |
Правила преобразования строки, если значение NTIN:
- начинается с 22 при длине:
- 14 символов: Строка будет передана без изменений.
- 7 символов: В конец строки будут добавлены нули до 14 символов.
- При совпадении значения введённого штрих-кода с кодом национального классификатора строка будет преобразована в соответствии с правилами для штучного товара.
- > 14 символов: Будут переданы первые 14 символов строки.
- начинается с 2 при длине:
- 13 символов: В начало строки будет добавлена цифра 2.
- 6 символов: В начало строки будет добавлена цифра 2, в конец строки будут добавлены нули до 14 символов.
Если NTIN не соответствует ни одному из правил, то строка будет преобразована в соответствии с правилами для штучного товара.
Преобразованный в соответствии с правилами для преобразования весового товара NTIN передается через параметр code.gtin при закрытии чека.
Преобразование весовой маркированной фискальной позиции
Преобразование весовой маркированной фискальной позиции производится в конфигурационном файле /linuxcash/cash/conf/ncash.ini.d/fr.ini в секции [HW.FR.TransformPosition].
| Наименование | Тип данных | Описание | Примечания |
|---|---|---|---|
frUnit | строковый | Мера количества предмета расчета преобразованной позиции | По умолчанию задается значение поля |
frPositionMask | строковый | Формат печати наименования позиции в чеке | По умолчанию " |
;[HW.FR.TransformPosition] ; ; Преобразование весовой маркированной(только markedgoods и markedgoodsukz) фискальной позиции ; ; Мера количества предмета расчёта преобразованной позиции ; По умолчанию не задан, берётся значение из БД(dictionaries.units.frunit) ;frUnit = ; Формат печати наименования позиции в чеке ; По умолчанию "%(frposition.name[s]) %(position.bquant[.3f]) %(position.unitName[s])" ;frPositionMask = "%(frposition.name[s]) %(position.bquant[.3f]) %(position.unitName[s])"
Пусть необходимо настроить преобразование весовой маркированной фискальной позиции таким образом, чтобы в ФР передавалось:
наименование позиции = наименование товара + количество(вес) + единица измерения
В этом случае в настройках необходимо задать:
[HW.FR.TransformPosition] frPositionMask = "%(frposition.name[s]) %(position.bquant[.3f]) %(position.unitName[s])"
Например, в чеке позиция с весовым товаром:
- СЫР ПЛАВЛЕНЫЙ 1.670 кг * 42.50 р = 70.98
В ФР передается наименование позиции:
СЫР ПЛАВЛЕНЫЙ 1.670 кг