Оглавление
Загрузка списка марок из внешней системы
...
URL | /erp/add_mark |
---|---|
Метод | POST |
Входящие данные | JSON пакет с марками для загрузки и удаления в SetMark { “id” : <id пакета>, “version”: <версия API>, "inn": <ИНН>, “shop” : <номер магазина>, “operationType” : <тип операции>, “productType” : <тип товара>, “data” : [ ... ] } |
Выходные данные | HTTP код 200 при успешной приеме пакета, в противном случае ошибка: 400(большая часть ошибок, включая невалидный запрос), 422(внутренняя ошибка сервиса) |
...
Название | Тип | Описание | Пример | |||||
---|---|---|---|---|---|---|---|---|
id | число (long) | Уникальный идентификатор пакета |
| |||||
version | число | Версия протокола, на текущий момент "1" | ||||||
shop | число (long) | Номер магазина - всегда обязательно при продаже акцизного алкоголя Поле необязательное только для SetMark Centrum и исключительно для модулей "Продовольственные товары" и "Непродовольственные товары" | ||||||
inn | строка | ИНН владельца КМ Обязательность зависит от настройки check.inn | ||||||
operationType | число | Тип операции 1 - добавление марок | ||||||
productType | число | Тип товара 1 - Акцизный алкоголь | ||||||
data | json | Массив марок определенного полем "productType" типа |
...
Название | Тип | Описание | Пример | |||||
---|---|---|---|---|---|---|---|---|
excise | строка обязательное | Алкогольная марка |
| |||||
alcocode | строка | Алкокод Необязательное поле | ||||||
barсode | строка | Штрихкод Необязательное поле | ||||||
item | строка | Артикул (код товара) Необязательное поле |
...
Название | Тип | Описание | Пример | |||||
---|---|---|---|---|---|---|---|---|
mark | строка | Марка |
| |||||
barсode | строка | Штрихкод Необязательное поле | ||||||
item | строка | Артикул (код товара) Необязательное поле | ||||||
gtd | строка | Номер ГТД Необязательное поле | ||||||
rccw | строка | Код страны-производителя Необязательное поле | ||||||
country | строка | Наименование страны-производителя Необязательное поле |
...
Название | Тип | Описание | Пример | |||||
---|---|---|---|---|---|---|---|---|
mark | строка | Марка |
| |||||
barсode | строка | Штрихкод Необязательное поле | ||||||
item | строка | Артикул (код товара) Необязательное поле | ||||||
gtd | строка | Номер ГТД Необязательное поле | ||||||
rccw | строка | Код страны-производителя Необязательное поле | ||||||
country | строка | Наименование страны-производителя Необязательное поле |
...
Название | Тип | Описание | Пример | |||||
---|---|---|---|---|---|---|---|---|
mark | строка | Марка |
| |||||
barсode | строка | Штрихкод Необязательное поле | ||||||
item | строка | Артикул (код товара) Необязательное поле | ||||||
gtd | строка | Номер ГТД Необязательное поле | ||||||
rccw | строка | Код страны-производителя Необязательное поле | ||||||
country | строка | Наименование страны-производителя Необязательное поле |
...
Название | Тип | Описание | Пример | |||||
---|---|---|---|---|---|---|---|---|
mark | строка | Марка |
| |||||
barсode | строка | Штрихкод Необязательное поле | ||||||
item | строка | Артикул (код товара) Необязательное поле | ||||||
gtd | строка | Номер ГТД Необязательное поле | ||||||
rccw | строка | Код страны-производителя Необязательное поле | ||||||
country | строка | Наименование страны-производителя Необязательное поле |
...
URL | /erp/add_rfid | |||||||
---|---|---|---|---|---|---|---|---|
Метод | POST | |||||||
Входящие данные | JSON пакет с RFID+марка для загрузки и удаления в SetMark { “id” : <id пакета>, “version”: <версия API>, “operationType” : <тип операции>, “productType” : <тип товара>, “data” : [ ... ] } | |||||||
Выходные данные | HTTP код 200 при успешной приеме пакета и JSON в теле ответа
в противном случае ошибка: |
...
Название | Тип | Описание | Пример | |||||
---|---|---|---|---|---|---|---|---|
id | число (long) | Уникальный идентификатор пакета |
| |||||
version | число | Версия протокола, на текущий момент "1" | ||||||
operationType | число | Тип операции 1 - добавление кодов товаров | ||||||
productType | число | Тип товара 1 - Акцизный алкоголь | ||||||
data | json | Массив RFID+марка определенного полем "productType" типа |
...
Название | Тип | Описание | Пример | |||||
---|---|---|---|---|---|---|---|---|
mark | строка | Марка |
| |||||
rfid | строка | RFID обязательное поле |
...
URL | /erp/add_excludes | |||||||
---|---|---|---|---|---|---|---|---|
Метод | POST | |||||||
Входящие данные | JSON пакет с товарами-исключениями для загрузки и удаления в SetMark { “id” : <id пакета>, “version”: <версия API>, "inn": <ИНН>, “shop” : <номер магазина>, “operationType” : <тип операции>, “productType” : <тип товара>, “data” : [ ... ] } | |||||||
Выходные данные | HTTP код 200 при успешной приеме пакета и JSON в теле ответа
в противном случае ошибка: |
...
Название | Тип | Описание | Пример | |||||
---|---|---|---|---|---|---|---|---|
id | число (long) | Уникальный идентификатор пакета |
| |||||
version | число | Версия протокола, на текущий момент "1" | ||||||
inn | строка | ИНН владельца КМ Обязательность зависит от настройки check.inn | ||||||
shop | число (long) | Номер магазина Поле необязательное только для SetMark Centrum. | ||||||
operationType | число | Тип операции 1 - добавление кодов товаров | ||||||
productType | число | Тип товара 1 - Акцизный алкоголь | ||||||
data | json | Массив марок определенного полем "productType" типа |
...
Название | Тип | Описание | Пример | |||||
---|---|---|---|---|---|---|---|---|
item | строка | Артикул (код) товара |
|
...
Информация |
---|
Доступно начиная с версии 1.1.0 |
Сверка МРЦ с товароучетной системой позволяет дополнительно контролировать актуальность загруженных МРЦ в SetMark.
В случае необходимости такого контроля, SetMark можно настроить для выгрузки МРЦ в товароучетную систему. Сама сверка должна быть реализована в товароучетной системе.
Выгрузка МРЦ выполняется с заданной периодичностью и настраивается конфигурационном файле (в application.properties --> setmark.alco.minprice.report.cron в соответствии с Crontab pattern, значение по умолчанию - каждые сутки в 2:00 часа ночи).
Раскрыть | ||
---|---|---|
| ||
Шаблон представляет собой список из шести разделенных пробелом полей: представляющих секунду, минуту, час, день, месяц, день недели. Месяц и название дней недели могут быть указаны как первые три буквы английских названий. Примеры:
|
...
{"id":<id>,"version":<версия API>, “shop” : <номер магазина>,"packageNumber":<номер пакета в очереди>,"packageCount":<всего пакетов в очереди>,"data":[{"barcode":"<ШК товара>","item":"<код товара>","codeAP":<код АП>,"volume":<объем>,"AbV":<% алкоголя>,"mrc":[{"beginDate":"<дата начала>","endDate":"<дата окончания>","price":<МРЦ>}, ...]}, ...]}
...
orderNumbers - json, номера резервов (необязателен, если есть data)
- creationDate - число, дата создания чека
Запрос
Paste code macro | ||
---|---|---|
| ||
{ "id":101, "version":1, "inn": "0000000000", "shop":10000, "cash":"5", "operationType":0, 0 - продажа, 1 - возврат "checkNumber":"123.12", - номер смены.чека "orderNumbers":[ "GM100132133123", "GM100132133124" ], "creationDate":1541512790007, "data":[ { "mark":"mark1", "productType":2, "barcode":"0000000000000", "item":"00001" }, { "mark":"mark2", "productType":3 } ] } |
...
стандартный HTTP-пакет с кодом ответа. В теле:
{ “id”: < ID > , “result”: < результат проверки > , “message”: < сообщение > , “barcode”: < ШК товара > , “alcocode”: < алкокод товара > , "amrc": < МРЦ в копейках > }
Значения:
- Id - число
- result - true / false
- message - строка, текстовое описание ошибки(или “OK” если ошибок нет).
- barcode - строка, необязательное поле. Добавляется если проверка успешна и barccode загружен в базу.
- alcoCode - строка, только для алкогольного товара, необязательное поле. Добавляется если проверка успешна и alcocode загружен в базу.
- amrc - целое число, только для алкогольного товара, необязательное поле. Минимальная розничная цена (в копейках).
Пример запроса:
{ "id": 101, "version": 1, "shop": 10000, "cash": "5", "operationType": 0, "productType": 1, "excise": "excise12340000101003", "alcocode": [], "barcode": "", "strictCheck": true }
Пример ответа:
{ "id": 101, "result": true, "message": "OK", "alcocode": "alcocode12340000101003", "barcode": "012340000101003", "amrc": 50000 }
Обратная связь для ERP (статусы по пакетам)
...
Пример запроса от сервиса к ERP (ошибка проверки КМ в ОИСМ):
Значения
- errorCode - 17, код ошибки, переданной кассой в SM. В дальнейшем, при появлении новых типов ошибок передаваемых кассой, "errorCode" сохранит свое значение как 17.
- properties - структура, содержит информацию о конкретном значении конкретного параметра связанного с ошибкой, полученной кассой из внешней системы (в данном случае ОИСМ).
- message - "Ошибка проверки КМ в ОИСМ". Для данного нарушения является константой.
- externalErrorCode - 18, цифровой идентификатор ошибки, возникающей при проверке КМ в ОИСМ (соответствует тексту "Ошибка проверки КМ в ОИСМ").
- TAG_2106 - ФФД1.2, тег "результат проверки сведений о товаре" в который записывается и в дальнейшем передается в ОФД, результат проверки кода маркировки в ОИСМ.
Блок кода | ||||
---|---|---|---|---|
| ||||
{ "id": -2025307452, "version": 1, "data": [ { "shop": 10000, "packetId": 0, "productType": 3, "cash": 25, "excise": "01066000000000092163c6724594ba4240640191ffd092Hncw1Ydy8EmpvyzbeyqEe9/aiw8cG7op8LPwU03vLPbn+G0dZNRQQu6cDqlCYQWPtBxY+3cqJgd2caC1VuStIg==", "barcode": "6600000000009", "timestamp": "2021-11-23T13:17:35+0300", "errorCode": 17, "message": "Ошибка проверки КМ в ОИСМ", "externalErrorCode": 18, "properties": { "TAG_2106": "11" } } ] } |
...
Код ошибки | Текст ошибки | Описание | Тип товара |
---|---|---|---|
Ошибки, возникающие на этапе добавления товара в чек | |||
1 | Марка не соответствует товару по алкокоду. Продажа невозможна. Передача товара покупателю запрещена! | Не пройдена проверка соответствия АМ и товара по алкокоду | алкоголь |
2 | Товар с этой маркой был продан ранее. Продажа невозможна. Передача товара покупателю запрещена! | Попытка повторной продажи уже проданной маркой. | все |
3 | Товара с такой маркой нет на остатках магазина. Продажа невозможна. Передача товара покупателю запрещена! | Марка при продаже не найдена в активных для заданного магазина (неизвестная АМ или неверный номер магазина). | все |
4 | Чек не зарегистрирован в системе ЕГАИС. Передача товара покупателю запрещена! | Касса не смогла продать АМ из-за ошибки ЕГАИС. | алкоголь |
5 | Товар с такой маркой в этом магазине не продавался. Возврат не возможен. | Попытка возврата марки, которой нет в проданных. | все |
6 | Марка не соответствует товару по штрихкоду. Продажа невозможна. Передача товара покупателю запрещена! | Не пройдена проверка соответствия АМ и товара по штрихкоду | алкоголь |
7 | Цена товара ниже установленной МРЦ. Продажа невозможна. Передача товара покупателю запрещена! | Цена товара ниже загруженной АМРЦ. | алкоголь |
8 | На товар не установлена МРЦ. Продажа невозможна. Передача товара покупателю запрещена! | Не найдена АМРЦ для товара. | алкоголь |
9 | Невозможно определить компонент по АМ. Сканируйте сначала ШК с бутылки. | Не удалось определить компонент промонабора на основе АМ (ШК не был передан вместе с товаром). | алкоголь |
10 | Товар не найден в составе промонабора. Продажа невозможна. Передача товара покупателю запрещена! | Не удалось определить компонент промонабора по переданному ШК. | алкоголь |
11 | Введена не корректная марка. Продажа невозможна. Передача товара покупателю запрещена! | АМ не прошла проверку на корректность (формато-логический контроль) по регулярному выражению. | алкоголь |
12 | Марка не соответствует товару по артикулу. Продажа невозможна. Передача товара покупателю запрещена! | Не пройдена проверка соответствия АМ и товара по артикулу | алкоголь |
13 | Блок с этой пачкой был продан ранее. Продажа невозможна. Передача товара покупателю запрещена! | Попытка продажи пачки, которая уже была продана в составе блока | табак |
14 | Пачка из этого блока была продана ранее. | Попытка продажи блока, который уже был расформирован | табак |
15 | Пачка продавалась в составе блока. Возврат товара не возможен. | Попытка вернуть пачку, которая была продана в составе блока. | табак |
16 | Блок был расформирован. | Попытка вернуть блок, который был расформирован | табак |
17 | Получено сообщение об ошибке от кассовой системы | Запись в журнал нарушений по запросу из кассовой системы | кроме Алко |
18 | Товара с такой маркой нет на остатках Юр.лица. Продажа невозможна. Передача товара покупателю запрещена! | Проверка доступной для продажи марки на остатках при условии:
| кроме Алко |
19 | Товар с такой маркой продан другим юрлицом. Возврат невозможен. | Проверка возвращаемой марки в списке поданных при условии:
| кроме Алко |
20 | Получено сообщение об ошибке проверки КМ в ЧЗ | Запись в журнал нарушений. Внешние коды ошибок проверки в ЧЗ тут. | |
21 | Для данной марки осталось меньше доступного объема, чем пытаются продать | Продажа разливного пива сверх числящегося остатка. | Разливное пиво |
22 | Попытка вернуть товара в количестве большем, чем было продано | Возврат разливного пива в большем кол-ве чем была продажа | Разливное пиво |
23 | Ошибка при проверке в ФР (ФФД 1.2) | Ошибки ОИСМ | |
Ошибки, возникающие на этапе проверки чека перед регистрацией (начиная в версии 1.4) | |||
2 | В чеке есть товар с маркой, который был продан ранее. Продажа невозможна. Передача покупателю товара запрещена! | ||
201 | В чеке есть товар с маркой, который был возвращен ранее. Возврат не возможен. | ||
202 | В чеке есть товар с маркой, которая не продавалась в магазине. Возврат не возможен. | ||
203 | В чеке есть товар с маркой, которая зарезервирована для продажи на кассе №Х. Продажа невозможна. Передача покупателю товара запрещена! | ||
204 | В чеке есть товар с маркой, которая зарезервирована для возврата на кассе №Х. Продажа невозможна. Передача покупателю товара запрещена! | ||
205 | В чеке есть блок и пачка из этого блока. | В чеке есть блок и пачка из этого блока. | табак |
206 | В чеке есть блок и пачка из этого блока. | В чеке есть блок и пачка из этого блока. | табак |
Ошибки, возникающие на этапе регистрации чека в SetMark | |||
100 | С кассы получен чек продажи с маркой, которая ранее была зарегистрирована как проданная в другом чеке | Из кассы пришел чек с маркой, которая числится в SetMark как проданная по другому чеку | все |
101 | С кассы получен дубликат чека продажи, в котором есть марка, которая отсутствует в оригинальном чеке продажи в SetMark | Из кассы пришел чек продажи. В SetMark уже зарегистрированы марки по чеку продажи с таким же номером, однако чек полученный с кассы не является полным дубликатом: в новом чеке есть марка, которой не было в ранее зарегистрированном чеке SetMark. | все |
102 | С кассы получен дубликат чека продажи, в котором отсутствует марка, которая есть в оригинальном чеке продажи в SetMark | Из кассы пришел чек продажи. В SetMark уже зарегистрированы марки по чеку продажи с таким же номером, однако чек полученный с кассы не является полным дубликатом: в новом чеке, пришедшем с кассы не хватает марка, которая есть в ранее зарегистрированном чеке в SetMark. | все |
103 | С кассы получен чек возврата с маркой, которая ранее была зарегистрирована как возвращенная | Из кассы пришел чек с марка, которая числится в SetMark как возвращенная | все |
104 | С кассы получен чек возврата с маркой, которой в SetMark нет в списке проданных | Из кассы пришел чек возврата с маркой, которой нет ни в списке проданных, ни в списке активных | все |
105 | С кассы получен чек с маркой, статус которой в SetMark не однозначен | Из кассы пришел чек с маркой, которая в SetMark числится как возвращенная и проданная одновременно (реализовано только для чека возврата) | все |
106 | С кассы получен чек продажи с маркой пачки, которая была продана ранее в составе блока | Из кассы пришел чек продажи с маркой пачки, которая числится в SetMark проданной в составе блока | табак |
107 | С кассы получен чек продажи с маркой блока, который был расформирован | Из кассы пришел чек продажи с маркой блока, который числится в SetMark расформированным | табак |
108 | С кассы получен чек возврат с маркой пачки, которая была продана ранее в составе блока | Из кассы пришел чек возврата с маркой пачки, которая числится в SetMark проданной в составе блока | табак |
109 | С кассы получен чек возврата с маркой блока, который был расформирован | Из кассы пришел чек возврата с маркой блока, который числится в SetMark расформированным | табак |
110 | Товар с маркой был продан на кассе в офлайн режиме. Проданная марка отсутствует на остатках | все | |
Другие ошибки | |||
1000 | Внутренняя ошибка сервиса | Неизвестная ошибка. Внутренняя ошибка сервиса. |
...