Skip to main content
Version: LIFE POS 6.0

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

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

Коды маркировки нужны, чтобы товар можно было отследить по всей цепочке от производителя до конечного покупателя. Данные о лекарствах собирает ИС МДЛП, а об остальных маркированных товарах — система «Честный знак».

Данные о маркировке передаются вместе с данными о товаре в POST-запросе создания сделки:

{base_url}/orgs/{org_guid}/deals/sales

base_url — адрес сервиса. Возможные значения:

  • https://api-dev.life-pos.ru — тестовый API,
  • https://api.life-pos.ru — рабочий API.

Описание запроса

За данные о товаре отвечает массив positions. В нём с маркировкой связаны следующие поля:

  • is_markable — логический признак маркированного товара.
  • barcode — штрихкод товара. Заполнять обязательно, если is_markable=true.
  • marking_attributes — массив данных о маркированном товаре.

В массиве marking_attributes передаются следующие поля:

  • is_part_of_package_of — параметр используется, если позиция является частью упаковки: пачка сигарет в блоке или бутылка воды в палете. Параметр нужен, чтобы показать связь между единицей товара и упаковкой. Позиции для этого не подходят: каждую единицу маркированного товара нужно передавать как отдельную позицию. Это обусловлено с тем, что коды маркировки уникальные и являются атрибутом позиции, а не единицы товара.
  • marks – массив кодов маркировки.

В массиве marks передаются следующие поля:

  • marking_code — код маркировки.
  • checking_result — результат проверки кода маркировки. Проверка происходит при фискализации покупки. Результат проверки выставляется на основании данных, полученных от фискального регистратора. Возможные значения параметра: KMChecked, KPKMCorrect, OISMStatusChecked, OISMStatusCorrect, KPKMCheckedAutonomously.
  • for_quantity – обязательный параметр. Количество позиций, к которым относится код маркировки.

К примеру, у Василия заказали две бутылки молока. В сделке появится массив positions, включающий следующие данные:

"quantity": "2",
"is_markable": true,
"marking_attributes":
{ "marks": [
{"marking_code": "123456",
"for_quantity": "1"},
{"marking_code": "623456",
"for_quantity": "1"}
]}

Чтобы код маркировки правильно обрабатывался во всех системах, он должен включать следующие элементы, перечисленные в порядке вхождения:

  • AI 01 (2 знака) — специальный символ, который указывает, что закодированная последовательность является кодом GS1.
  • Код GTIN (14 знаков).
  • AI 21 (2 знака).
  • Серийный номер (13 знаков + 1 специальный символ <GS>).
  • AI 91.
  • Ключ проверки (4 знака +1 специальный символ <GS>).
  • AI 92.
  • Электронная подпись, предоставляемая оператором системы в составе кода проверки (88 знаков: цифры, строчные и прописные буквы латинского алфавита, а также специальные символы). Подробнее о правильной передаче кодов маркировки

Пример позиции с правильно переданным кодом маркировки. Специальные символы и разделители, необходимые для правильного чтения кода GS1 (AI 21, AI 91, AI 92), выделены цветом:

"is_markable":true,
"barcode":"44945504353068",
"marking_attributes":
{ "marks": [
{"marking_code":"014494550435306821QXYXSALGLMYQQ\u001D91EE06\u001D92YWCXbmK6SN8vvwoxZFk7WAY8WoJNMGGr6Cgtiuja04c=",
"for_quantity": "1"}
]}

Сравните с примером неправильно переданного кода маркировки:

"is_markable":true,
"barcode":"44945504353068",
"marking_attributes":
{ "marks": [
{"marking_code":"0104780004443794(21)5YEEO;93dGVz",
"for_quantity": "1"}
]}

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