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 — параметр используется, если позиция является частью упаковки — например, пакетик Терафлю из упаковки на 20 пакетиков. Параметр нужен, чтобы показать связь между единицей товара и упаковкой. Позиции для этого не подходят: каждую единицу маркированного товара нужно передавать как отдельную позицию. Это обусловлено с тем, что коды маркировки уникальные и являются атрибутом позиции, а не единицы товара.
  • marks – массив кодов маркировки.

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

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

Чтобы код маркировки правильно обрабатывался во всех системах, он должен соответствовать требованиям «Честного знака». Специальные символы нужно экранировать по стандарту RFC 8259, а <GS> заменять на \u001D

Исходный код: 0104650117240408211dmfcZNcM"4 Экранированный код: 0104650117240408211dmfcZNcM\"4

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

К примеру, у Василия заказали две пары кожаных ботинок. В сделке появится массив positions, содержащий среди своих объектов маркированную позицию «Ботинки рабочие кожаные размер 41 черные Трейл Плюс ТЗ».

Обратим внимание на параметр "quantity": 2.0. Так как каждый код маркировки уникален, кодов должно быть передано два. Но Василий хочет одну марку передать по API, а вторую отсканировать на кассе. В этом случае объектов в массиве marks всё равно должно быть два, однако второй объект содержит только счётный параметр for quantity.

"positions": [
{ "settlement_subject": "Product",
"name": "Ботинки рабочие кожаные размер 41 черные Трейл Плюс Т3",
"uom":
{ "guid": "25865e33-2efc-11df-942d-0023543d7b52",
"type_of": "Uom"},
"tax": "Tax20",
"sale_price":
{ "value": 48800,
"currency": "RUB",
"type_of": "Money"},
"quantity": 2.0,
"total_sum":
{ "value": 48800,
"currency": "RUB",
"type_of": "Money"},
"barcode": "4678599263104",
"is_markable": true,
"marking_attributes":
{"marks": [
{"marking_code": "010290000002493921AqjmFon,CoD_)\u001D91003E\u001D92DNI4UMPkN5SpwqPRN7c2ihHTHmM4ZnGm81A6qlFMNkedQnPm6SmcbDKfYt3XAJ+WVdl05ewWpGg/dpJEBAnI6g==",
"for_quantity": 1.0,
"checking_result": [
"KPKMCheckedAutonomously"
]
},
{"for_quantity": 1.0}
]
},
"meta": "good_guid=0a135191-6469-11ea-80c8-00155dfc0b56",
"guid": "2c9619d4-f005-49f6-a2b4-4014815b26f1",
"type_of": "DealPosition"},

Неправильно — при значении "quantity": 2.0 передавать в массиве marks только один объект кода маркировки:

    "is_markable": true,
"marking_attributes":
{ "marks": [
{ "marking_code": "010290000002493921AqjmFon,CoD_)\u001D91003E\u001D92DNI4UMPkN5SpwqPRN7c2ihHTHmM4ZnGm81A6qlFMNkedQnPm6SmcbDKfYt3XAJ+WVdl05ewWpGg/dpJEBAnI6g==",
"for_quantity": 1.0,
"checking_result": [
"KPKMCheckedAutonomously"
]
}
]
},

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