Сравнение версий

Ключ

  • Эта строка добавлена.
  • Эта строка удалена.
  • Изменено форматирование.

Оглавление


Загрузка списка марок из внешней системы

...

URL/erp/add_mark
МетодPOST
Входящие данные

JSON пакет с марками для загрузки и удаления в SetMark

{  “id” : <id пакета>, “version”: <версия API>, "inn": <ИНН>, “shop” : <номер магазина>, “operationType” : <тип операции>,  “productType” : <тип товара>, “data” : [ ... ] }

Выходные данные

HTTP код 200 при успешной приеме пакета, в противном случае ошибка:

400(большая часть ошибок, включая невалидный запрос), 422(внутренняя ошибка сервиса)

...

НазваниеТипОписаниеПример
idчисло (long)Уникальный идентификатор пакета




Блок кода
languagejava
{
    "id": 101,
    "version": 1,
    "inn": "0000000000",
    "shop": 10000,
    "operationType": 1,
    "productType": 1,
    "data": [...]
}


versionчислоВерсия протокола, на текущий момент "1"
shopчисло (long)

Номер магазина - всегда обязательно при продаже акцизного алкоголя

Поле необязательное только для SetMark Centrum и исключительно для модулей "Продовольственные товары" и "Непродовольственные товары"

innстрока

ИНН владельца КМ

Обязательность зависит от настройки check.inn

operationTypeчисло

Тип операции

1 - добавление марок
2 - удаление марок

productTypeчисло

Тип товара

1 - Акцизный алкоголь
2 - Табак
3 - Обувь
4 - Парфюмерия
5 - Легкая промышленность
6 - Шины
7 - Фото
8 - Молоко
10 - Упакованная вода в групповой и индивидуальной (потребительской) упаковке
11 - Велосипеды
16 - БАДы
17 - Антисептики
18 - Разливное пиво (в кегах)


datajsonМассив марок определенного полем "productType" типа

...

НазваниеТипОписаниеПример
excise

строка

обязательное

Алкогольная марка


Блок кода
languagejava
{
    "excise": "22N000003GDBDAMBBIW09QV6...",
    "alcocode": "0012631000001797400",
    "barcode": "4650067391939",
    "item": "2201"
}


alcocode 

строка

Алкокод

Необязательное поле

barсode строка

Штрихкод

Необязательное поле

itemстрока

Артикул (код товара)

Необязательное поле

...

НазваниеТипОписаниеПример
mark

строка

Марка



Блок кода
languagejava
{
    "mark": "01046300740926092109470cde931542406401",
    "barcode": "4630074092609",
    "item": "2201",
    "gtd": "1234567",
    "rccw": "654",
    "country": "Россия"
}



barсode

строка

Штрихкод

Необязательное поле

 itemстрока

Артикул (код товара)

Необязательное поле

gtdстрока

Номер ГТД

Необязательное поле

rccwстрока

Код страны-производителя

Необязательное поле

countryстрока

Наименование страны-производителя

Необязательное поле

...

НазваниеТипОписаниеПример
mark

строка

Марка



Блок кода
languagejava
{
    "mark": "0104607026551200215",
    "barcode": "4607026551200",
    "item": "2201",
    "gtd": "1234567",
    "rccw": "654",
    "country": "Россия"
}



barсode

строка

Штрихкод

Необязательное поле

 itemстрока

Артикул (код товара)

Необязательное поле

gtdстрока

Номер ГТД

Необязательное поле

rccwстрока

Код страны-производителя

Необязательное поле

countryстрока

Наименование страны-производителя

Необязательное поле

...

НазваниеТипОписаниеПример
mark

строка

Марка



Блок кода
languagejava
 {
      "mark": "04606203086627IOHop6ZAC68",
      "barcode": "4606203086627",
      "item": "2201",
      "gtd": "1234567",
      "rccw": "654",
      "country": "Россия"
  }








barсode

строка

Штрихкод

Необязательное поле

 itemстрока

Артикул (код товара)

Необязательное поле

gtdстрока

Номер ГТД

Необязательное поле

rccwстрока

Код страны-производителя

Необязательное поле

countryстрока

Наименование страны-производителя

Необязательное поле

...

НазваниеТипОписаниеПример
mark

строка

Марка



Блок кода
languagejava
{
      "mark": "014606203086627IOHop6ZAC68",
      "barcode": "4606203086627",
      "item": "2222",
      "gtd": "1234567",
      "rccw": "654",
      "country": "Россия",
      "child": [
        {
          "mark": "04606203086627IOHop61AC68",
          "barcode": "4606203086627",
          "item": "2201"
        },
        {
          "mark": "04606203086627IOHop62AC68",
          "barcode": "4606203086627",
          "item": "2201"
        },
        {
          "mark": "04606203086627IOHop63ZAC68",
          "barcode": "4606203086627",
          "item": "2201"
        },
        {
          "mark": "04606203086627IOHop64AC68",
          "barcode": "4606203086627",
          "item": "2201"
        },
        {
          "mark": "04606203086627IOHop65AC68",
          "barcode": "4606203086627",
          "item": "2201"
        },
        {
          "mark": "04606203086627IOHop66AC68",
          "barcode": "4606203086627",
          "item": "2201"
        },
        {
          "mark": "04606203086627IOHop67AC68",
          "barcode": "4606203086627",
          "item": "2201"
        },
        {
          "mark": "04606203086627IOHop68AC68",
          "barcode": "4606203086627",
          "item": "2201"
        },
        {
          "mark": "04606203086627IOHop69AC68",
          "barcode": "4606203086627",
          "item": "2201"
        },
        {
          "mark": "04606203086627IOHop70AC68",
          "barcode": "4606203086627",
          "item": "2201"
        }
      ]
    }





barсode

строка

Штрихкод

Необязательное поле

 itemстрока

Артикул (код товара)

Необязательное поле

gtdстрока

Номер ГТД

Необязательное поле

rccwстрока

Код страны-производителя

Необязательное поле

countryстрока

Наименование страны-производителя

Необязательное поле

...

URL/erp/add_rfid
МетодPOST
Входящие данные

JSON пакет с RFID+марка для загрузки и удаления в SetMark

{  “id” : <id пакета>, “version”: <версия API>, “operationType” : <тип операции>,  “productType” : <тип товара>, “data” : [ ... ] }

Выходные данные

HTTP код 200 при успешной приеме пакета и JSON в теле ответа

Paste code macro
languagejson
themeVs
{result: 'ok'}

в противном случае ошибка:
400
(большая часть ошибок, включая невалидный запрос), 422(внутренняя ошибка сервиса), в противном случае ошибка:

...

НазваниеТипОписаниеПример
idчисло (long)Уникальный идентификатор пакета



Блок кода
languagejava
{
    "id": 1,
    "version": 1,
    "operationType": 1,
    "productType": 3,
    "data": [...]
}



versionчислоВерсия протокола, на текущий момент "1"
operationTypeчисло

Тип операции

1 - добавление кодов товаров
2 - удаление кодов товаров

productTypeчисло

Тип товара

1 - Акцизный алкоголь
2 - Табак
3 - Обувь
4 - Парфюмерия
5 - Легкая промышленность
6 - Шины
7 - Фото
8 - Молоко

datajsonМассив RFID+марка определенного полем "productType" типа

...

НазваниеТипОписаниеПример
mark

строка

Марка



Блок кода
languagejava
{
    "mark": "0103608429802815210123456789012911234921234567890123456789012345678901234567890123456789012345678901234567890123456789012345678",
            "rfid": "]e0010360842980281521000000708145"
}



rfid

строка

RFID

обязательное поле

...

URL/erp/add_excludes
МетодPOST
Входящие данные

JSON пакет с товарами-исключениями для загрузки и удаления в SetMark

{  “id” : <id пакета>, “version”: <версия API>, "inn": <ИНН>, “shop” : <номер магазина>, “operationType” : <тип операции>,  “productType” : <тип товара>, “data” : [ ... ] }

Выходные данные

HTTP код 200 при успешной приеме пакета и JSON в теле ответа

Paste code macro
languagejson
themeVs
{result: 'ok'}

в противном случае ошибка:
400
(большая часть ошибок, включая невалидный запрос), 422(внутренняя ошибка сервиса), в противном случае ошибка:

...

НазваниеТипОписаниеПример
idчисло (long)Уникальный идентификатор пакета



Блок кода
languagejava
{
    "id": 101,
    "version": 1,
    "inn": "0000000000",
    "shop": 10000,
    "operationType": 1,
    "productType": 1,
    "data": [...]
}



versionчислоВерсия протокола, на текущий момент "1"
innстрока

ИНН владельца КМ

Обязательность зависит от настройки check.inn

shopчисло (long)

Номер магазина

Поле необязательное только для SetMark Centrum.

operationTypeчисло

Тип операции

1 - добавление кодов товаров
2 - удаление кодов товаров

productTypeчисло

Тип товара

1 - Акцизный алкоголь
2 - Табак
3 - Обувь
4 - Парфюмерия
5 - Легкая промышленность
6 - Шины
7 - Фото
8 - Молоко

datajsonМассив марок определенного полем "productType" типа

...

НазваниеТипОписаниеПример
itemстрока

Артикул (код) товара


Блок кода
languagejava
{
    "item": "394175901982"
}



...

Информация

Доступно начиная с версии 1.1.0

Сверка МРЦ с товароучетной системой позволяет дополнительно контролировать актуальность загруженных МРЦ в SetMark.

В случае необходимости такого контроля, SetMark можно настроить для выгрузки МРЦ в товароучетную систему. Сама сверка должна быть реализована в товароучетной системе.

Выгрузка МРЦ выполняется с заданной периодичностью и настраивается конфигурационном файле (в application.properties --> setmark.alco.minprice.report.cron в соответствии с Crontab pattern, значение по умолчанию - каждые сутки в 2:00 часа ночи).

Раскрыть
titleКраткое описание шаблона cron

Шаблон представляет собой список из шести разделенных пробелом полей: представляющих секунду, минуту, час, день, месяц, день недели.

Месяц и название дней недели могут быть указаны как первые три буквы английских названий.

Примеры:

  • "0 0 * * * *" = начало каждого часа каждый день.
  • "*/10 * * * * *" = каждые 10 секунд.
  • "0 0 8-10 * * *" = 8, 9 и 10 часов каждый день.
  • "0 0 6,19 * * *" = 6:00 и 19:00 каждый день.
  • "0 0/30 8-10 * * *" = 8:00, 8:30, 9:00, 9:30, 10:00 и 10:30 каждый день.
  • "0 0 9-17 * * MON-FRI" = каждый час с 9:00 до 17:00 по будням.
  • "0 0 0 25 12 ?" = каждое рождество в полночь.

...

{"id":<id>,"version":<версия API>, “shop” : <номер магазина>,"packageNumber":<номер пакета в очереди>,"packageCount":<всего пакетов в очереди>,"data":[{"barcode":"<ШК товара>","item":"<код товара>","codeAP":<код АП>,"volume":<объем>,"AbV":<% алкоголя>,"mrc":[{"beginDate":"<дата начала>","endDate":"<дата окончания>","price":<МРЦ>}, ...]}, ...]}

...

  • orderNumbers  - json, номера резервов (необязателен, если есть data)

  • creationDate - число, дата создания чека

Запрос

Paste code macro
languagejson
{
   "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, тег "результат проверки сведений о товаре" в который записывается и в дальнейшем передается в ОФД, результат проверки кода маркировки в ОИСМ.
Блок кода
languagejava
themeEclipse
{
	"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Товара с такой маркой нет на остатках Юр.лица. Продажа невозможна. Передача товара покупателю запрещена!

Проверка доступной для продажи марки на остатках при условии:

  • setmark.check.inn=true. Контроль ИНН включен
  • setmark.check.inn=false. ИНН передан в запросе и сохранен к марке
кроме Алко
19Товар с такой маркой продан другим юрлицом. Возврат невозможен.

Проверка возвращаемой марки в списке поданных при условии:

  • setmark.check.inn=true. Контроль ИНН включен
  • setmark.check.inn=false. ИНН передан в запросе и сохранен к марке
кроме Алко
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Внутренняя ошибка сервисаНеизвестная ошибка. Внутренняя ошибка сервиса.

...