Публичный ресурс
Веб-сервис REST для печати ценников через подстановки своих значений из ERP или ТСД
https://crystals.atlassian.net/browse/SRTS-1787
https://crystals.atlassian.net/browse/CR-9221
10.3.26.0
- 1 Описание
- 2 Метод веб-сервиса для задания на печать ценника с входными данными для подстановок
- 2.1 Формирование задания на печать этикеток по параметрам указанным в запросе
- 2.2 Входящие параметры метода (JSON)
- 2.3 Особенности печати ценников с корректной генерацией GS1 DataMatrix
- 2.3.1 Описание
- 2.3.2 Включение и настройка
- 2.3.3 Ограничения
- 2.4 Логика взаимодействия запроса на печать
- 2.5 Алгоритм работы метода
- 2.6 Ограничения
- 2.7 Пример запросов
- 2.8 Статусы ответов
- 3 Пример печати с Postman
- 4 Дополнительная информация
Описание
Веб-сервис позволяет печатать ценники на товар по веб-запросу, например ТСД или принтеры магазина, при этом подставлять значения из ERP, игнорируя подстановки из SetRetail10
Такая возможность позволяет редактировать и печатать уценоцные стикеры через модуль печати SetRetail10, чтобы сократить время на оформление уценки товаров.
Метод веб-сервиса для задания на печать ценника с входными данными для подстановок
Формирование задания на печать этикеток по параметрам указанным в запросе | |
Метод | |
URL | http://IP-адрес сервера SetRetail10:8090/SET-PrintPriceTags-REST/v1/pricetags/print |
Тип запроса | POST |
Комментарий | Создать задание на печать ценников по параметрам указанным в запросе. |
Входящие параметры метода (JSON)
Параметр | Тип данных | Обязательное | Пример | Описание | Название подстановки в редакторе шаблонов ценников |
|---|---|---|---|---|---|
Параметры печати *- не обязательны для метода, но обязательны, если будут печататься на уценочном стикере | |||||
barcode | string | Да | 4600001000007 | ШК товара | Штрих-код (цифры) Штрих-код для поиска товара, на уценочном стикере будет напечатан штрих-код товара по умолчанию, а не тот, который был передан в этой подстановке. Влияет на товары, у которых несколько штрих-кодов. |
amount | Integer | Да | 2 | Количество копий | - |
templateCode | string | Нет* | 23 | Код шаблона ценника | - |
printerName | string | Нет* | HP Color LaserJet M552 PCL 6 | Название принтера из SetRetail10 | - |
Подстановки для ценника \ стикера *- не обязательны для метода, но обязательны, если будут печататься на уценочном стикере | |||||
NAME | string | Нет | Новое наименование товара! | Наименование товара | Наименование товара |
FULL_NAME
| string | Нет | Новое наименование товара! Полное | Полное наименование товара | Полное название |
PERCENT_DISCOUNT_FOR_RA | string | Нет* | 25 | Процент скидки | Процент скидки по акции |
EXPIRATION_DATE_LENTA | string | Нет* | 231114 | Дата окончания СГ | Срок годности (для клиентов CSI (уточните у менеджера) |
EXPIRATION_DATE_ONLY | string | Нет* | 231114 | Дата окончания СГ для GS1 секция 17 | Дата окончания СГ (GS1 секция 17) |
ERP_CODE | string | Нет | 123123 | ERP-код товара | ERP-код товара |
EMPLOYEE_NUMBER | string | Нет* | 123123 | Табельный номер | Табельный номер |
WEIGHT | string | Нет* | 001500 | Вес продукции (для весового товара) | Вес |
SHOP_NUMBER | string | Нет* | 34 | Номер ТК | Номер ТК |
PRICE_RUB | string | Нет* | 217 | Цена за единицу товара, руб Только часть, которая в рублях! | Цена за единицу товара, руб
|
PRICE_COP | string | Нет* | 99 | Цена за единицу товара, коп Только часть, которая в копейках! | Цена за единицу товара, коп |
BARCODE https://crystals.atlassian.net/browse/SRTS-2748 https://crystals.atlassian.net/browse/CR-11581 10.4.4.0 | string | Нет | 2601208 | Штрих-код печати | Штрих-код для печати Штрих-код, который будет напечатан на самом уценочном стикере, вне зависимости от наличия флага по умолчанию. |
CUSTOM_SUBSTITUTION1 https://crystals.atlassian.net/browse/CR-11864 https://crystals.atlassian.net/browse/SRTS-3070 10.4.7.0 | string | Нет | Произвольный текст | Поле для произвольного текста 1 | Произвольная подстановка 1 |
CUSTOM_SUBSTITUTION2 https://crystals.atlassian.net/browse/CR-11864 https://crystals.atlassian.net/browse/SRTS-3070 10.4.7.0 | string | Нет | Произвольный текст | Поле для произвольного текста 2 | Произвольная подстановка 2 |
CUSTOM_SUBSTITUTION3 https://crystals.atlassian.net/browse/CR-11864 https://crystals.atlassian.net/browse/SRTS-3070 10.4.7.0 | string | Нет | Произвольный текст | Поле для произвольного текста 3 | Произвольная подстановка 3 |
CUSTOM_SUBSTITUTION4 https://crystals.atlassian.net/browse/CR-11864 https://crystals.atlassian.net/browse/SRTS-3070 10.4.7.0 | string | Нет | Произвольный текст | Поле для произвольного текста 4 | Произвольная подстановка 4 |
CUSTOM_SUBSTITUTION5 https://crystals.atlassian.net/browse/CR-11864 https://crystals.atlassian.net/browse/SRTS-3070 10.4.7.0 | string | Нет | Произвольный текст | Поле для произвольного текста 5 | Произвольная подстановка 5 |
Разделение заданий на печать ценников (пример печати с подстановкой CUSTOM_SUBSTITUTION3)
https://crystals.atlassian.net/browse/SRTS-4337
https://crystals.atlassian.net/browse/CR-9221
10.4.23.0 10.4.22.1
Начиная с версии 10.4.23.0 добавлена настройка print.price.tags.separately для разделения заданий на печать ценников, чтобы избежать проблемы с перезаписыванием параметров для каждого задания.
Пример: в торговой сети требуется напечатать 3 уценочных стикера на 3 одинаковых товара с 3-я разными купонами в поле CUSTOM_SUBSTITUTION3.
До версии 10.4.23.0 печатались 3 уценочных стикера на 3 одинаковых товара с 3-я ОДИНАКОВЫМИ купонами
CUSTOM_SUBSTITUTION3.При включенной настройке, начиная с версии: печатаются 3 уценочных стикера на 3 одинаковых товара с 3-я разными купонами
CUSTOM_SUBSTITUTION3.
Для включения настройки выполните скрипт в базе данных set сервера SetCentrum/SetRetail10 → перезапустите службу сервера.
UPDATE sales_management_properties
SET property_value='true'
WHERE property_key='print.price.tags.separately';
Особенности печати ценников с корректной генерацией GS1 DataMatrix
https://crystals.atlassian.net/browse/CR-15806
https://crystals.atlassian.net/browse/SRTS-4676
Описание
10.4.26.0
Начиная с версии 10.4.26.0 добавлен признак \u00E8 для формирования GS1.
Пример запроса в CUSTOM_SUBSTITUTION2:
[
{
"printerName": "ppp",
"substitutions": {
"ERP_CODE": null,
"FULL_NAME": null,
"PRICE_RUB": 100,
"PRICE_COP": 10,
"SHOP_NUMBER": null,
"EMPLOYEE_NUMBER": null,
"EXPIRATION_DATE_ONLY": null,
"PERCENT_DISCOUNT_FOR_RA": null,
"WEIGHT": "300 грамм",
"CUSTOM_SUBSTITUTION1": null,
"CUSTOM_SUBSTITUTION2": "\u00E80104968814901189",
"CUSTOM_SUBSTITUTION3": "215KkSgKTFBww%/91F\u001DFD092dGVzdInzniHKxdt8RvDh9AfnjzgqtKHfIy28hJnFtzo=",
"CUSTOM_SUBSTITUTION4": null,
"CUSTOM_SUBSTITUTION5": null
},
"barcode": "4600123000008",
"amount": 1,
"templateCode": "777"
}
]
Включение и настройка
Назначение
\u00E8— включение GS1-режима с автоматическим добавлением FNC1 (код 232) для прохождения проверки в «Честный ЗНАК»Где добавлять символ — в маске баркода или в подстановках
CUSTOM_SUBSTITUTIONСтруктура данных:
01+ 14 цифр GTIN,17+ дата (фикс. длина),\u001D— разделитель перед AI переменной длины,21+ серийный номерНаглядный пример формирования строки с переменными:
"\u00E8010496881490118917" + expirationDate + "\u001D21" + serialNumber
Ограничения
\u00E8должен быть первым символом в данных, иначе код не пройдёт проверку в ЧЗ.Нельзя передавать текст «FNC1» или символ 232 как обычный текст — будет ошибка.
Разделитель
\u001Dработает только внутри GS1-режима (в обычном DataMatrix отображается как<gs>).Обратная совместимость: старые маски без
\u00E8работают без изменений.Если в данных встречается символ с кодом 29 (
\u001D), он интерпретируется как разделитель полей и кодироваться согласно стандарту GS1
Логика взаимодействия запроса на печать
Алгоритм работы метода
Пользователь сканирует/вводит на ТСД или через ERP параметры, которые необходимы для печати/
ТСД/ERP вызывает метод API по печати ценников в модуле печати SetRetail10 с нужными для печати параметрами/
Модуль печати принимает эти данные
Находит товар по ШК.
Находит шаблон стикера по коду шаблона.
Формирует стикер, заполняя подстановки, полученными данными.
Шаблон формируется в SET по аналогии с обычным ценником.
Если в SET есть значение для подстановки и для нее же пришло значение из ТСД/ERP, то значение из ТСД/ERP будет приоритетней (к примеру подстановка % скидки, которая может быть как рассчитана, так и передана с ТСД)
Находит принтер по полученному названию.
Отправляет стикер на найденный принтер.
Возвращает в ответ результат выполнения метода.
Ограничения
Входные параметры работают только для подстановок, описанных выше.
Для того, чтобы цена на стикере и на кассе были равны, необходимо завести рекламную акцию на скидку и на товар с истекающим сроком годности.
Данное решение не предусматривает возможности печатать на стикере GS1 databar без дополнительных доработок.
На стороне SetRetail10 не проводится валидация полученных в запросе значений!
Пример запросов
[{
"barcode": "4607141310331",
"amount": 1,
"templateCode": "34453",
"printerName": "MyPrint",
"substitutions": {
"SHOP_NUMBER": "329847",
"EMPLOYEE_NUMBER": "070757"
}
}][{
"barcode": "4606068478339",
"amount": 1,
"templateCode": "333",
"printerName": "StorePrinter",
"substitutions": {
"EXPIRATION_DATE_ONLY": "241201",
"PRICE_RUB": "222",
"PRICE_COP": "33",
"SHOP_NUMBER": "1235",
"ERP_CODE": "test_erp_code",
"EMPLOYEE_NUMBER": "test_emp_number",
"WEIGHT": "199.99",
"EXPIRATION_DATE_LENTA": "test dt",
"NAME": "Имя товара",
"FULL_NAME": "Полное имя товара",
"PERCENT_DISCOUNT_FOR_RA": "12"
}
}]Статусы ответов
Печать произведена успешно.
Пример ответа, когда ценник успешно напечатан
{
"result": "Печать запустилась."
}Ценник не напечатан из-за ошибки входных параметров:
Возможные причины:
неверно указан штрих-код товара;
не привязан шаблон к принтеру;
расхождение размеров ценника и размеров бумаги принтера.
любые другие ошибки, которые влияют на печать ценника или отсутствие данных по товару на сервере.
Пример ответа, когда ценник не напечатан из-за ошибки входных параметров
{
"result": "Произошла ошибка во время печати. Один или несколько ценников не напечатались."
}Пример печати с Postman
На вкладке запроса выберите POST → введите адрес следующего формата для генерации изображения ценников http://IP-адрес сервера SetRetail:8090/SET-PrintPriceTags-REST/v1/pricetags/print → вставьте JSON-запрос для формирования ценника → кликните SEND → появится ответ от сервера со ссылкой на изображение ценника.
В данном примере, настроена печать на PNG-принтер, распечатанные ценники будут находится в папке на сервере.
Дополнительная информация
Папка рисунков PNG-принтера на сервере nginx
Все сохраненные изображения согласно настройке хранения изображений в папке сервера nginx:
Windows: {Disk}:\Папка SetRetail10\nginx\html\image-printer-output
Linux: /var/lib/jboss/nginx/html/image-printer-output