Продажа маркированных товаров
До сих пор мы разбирали продаж у обычных товаров. Рассмотрим теперь специфику передачи данных о маркированных товарах.
Коды маркировки нужны, чтобы товар можно было отследить по всей цепочке от производителя до конечного покупателя. Данные о лекарствах собирает ИС МДЛП, а об остальных маркированных товарах — система «Честный знак».
Данные о маркировке передаются вместе с данными о товаре в 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
– обязательный параметр. Количество позиций, к которым относится код маркировки.
К примеру, у Василия заказали две бутылки молока. В сделке появится массив positions
, включающий следующие данные:
"quantity": "2",
"is_markable": true,
"marking_attributes":
{ "marks": [
{"marking_code": "123456",
"for_quantity": "1"},
{"marking_code": "623456",
"for_quantity": "1"}
]
}
Чтобы код маркировки правильно обрабатывался во всех системах, он должен соответствовать требованиям «Честного знака». Специальные символы нужно экранировать по стандарту RFC 8259, а <GS>
заменять на \u001D
Исходный код: 0104650117240408211dmfcZNcM"4
Экранированный код: 0104650117240408211dmfcZNcM\"4
Вы можете и не передавать код маркировки по API. В этом случае его обязательно нужно отсканировать на кассе.
Готово! Вы зарегистрировали сделку с маркированным товаром. В следующей статье поговорим о том, как работать с агентскими реквизитами.