Публичное пространство
SetTouch ◾️ Сервис проверки остатков
https://crystals.atlassian.net/browse/CR-14119
https://crystals.atlassian.net/browse/SRTF-350
https://crystals.atlassian.net/browse/SRTF-333
https://crystals.atlassian.net/browse/SRTF-282
10.4.17.0
10.4.13.0
Описание
На кассе SetTouch реализована функциональность запроса по остаткам, позволяющая кассиру оперативно проверять наличие товаров в магазинах сети. При нажатии на функциональную кнопку открывается экран поиска товара, где кассир может отсканировать штрихкод или вручную ввести наименование товара (от 3 символов) для получения информации об остатках.
В основе функциональности реализован плагин Сервис проверки остатков, который взаимодействует с внешним сервисом клиента для получения актуальных данных об остатках. Плагин настраивается через внешние процессинги и поддерживает три режима отображения остатков:
Только в текущем магазине (значение по умолчанию)
В магазинах текущего города
Во всех магазинах сети
Полученная информация выводится в виде таблицы, содержащей адрес магазина, количество товара, а также (опционально) стоимость товара в каждом магазине. При нулевом остатке в магазине строка с таким магазином не выводится.
Возможности
Действия, которые совершает плагин:
Закрытие экрана ввода данных для поиска товара для запроса остатков.
Отправка запроса на сервис клиента.
Получение ответа от сервиса клиента и вывод информации в форме вывода остатков.
Набор возможных запросов на сервис клиента:
Запрос на получение остатков по товару в магазине, в котором установлена касса.
Запрос на получение остатков по товару в магазинах города, в котором установлена касса.
Запрос на получение остатков по товару по всей сети.
Ценность
Кассир может оперативно предоставить покупателю информацию о наличии интересующего товара в других магазинах сети, включая конкретные адреса и количество единиц.
Кассир может проверить остатки товара при выявлении расхождения между фактическим количеством на полке и данными в системе, что ускоряет процесс инвентаризации и корректировки.
Примеры работы
Товар в наличии
1. Кассир нажимает кнопку Показать остатки товара.
2. Вводит строку поиска название товара и нажимает на него.
3. Отображается окно о том, какое количество товара в магазине присутствует.
Товар отсутвует
1. Кассир нажимает кнопку Показать остатки товара.
2. Вводит строку поиска название товара и нажимает на него.
3. Отображется сообщение о том, что товара нет в наличии.
Ограничения
Функциональность доступна только кассах SetTouch. На других типах кассовых устройств кнопка «Остатки по товарам» отсутствует.
Фильтрация нулевых остатков: Если в ответе сервиса количество запрашиваемого товара в каком-либо магазине равно нулю, строка с таким магазином не выводится в модальном окне.
Порядок вывода магазинов: Порядок вывода магазинов на экране SetTouch полностью зависит от порядка элементов в массиве
stockInStores, возвращаемом сервисом. Если требуется, чтобы на первом месте выводился определенный магазин (например, текущий), эта логика должна быть реализована на стороне сервиса клиента во внешней системе.Для отображения списка релевантных вариантов при ручном вводе введите 3 символов.
Отображение стоимости товара в каждом магазине зависит от настройки плагина Выводить стоимость товара. Если настройка отключена, поле
priceв ответе сервиса игнорируется.
Настройки
1. На сервере SetCentrum/SetRetail10 перейдите в Интеграция → Внешние процессинги → нажмите кнопку добавления процессинга.
2. Наберите в поле поиска сервис провер → выберите Складские остатки → введите в поле поиска сервис про → установите флажок Сервис проверки остатков → кликните СОХРАНИТЬ.
3. Кликните в списке внешних процессингов Сервис проверки остатков.
4. Назначьте магазины и настройки → кликните СОХРАНИТЬ.
Настройка | Описание | Обязательный | |
|---|---|---|---|
URL сервиса | Адрес сервиса клиента для получения информации об остатках | Да | |
Таймаут соединения (сек., по умолчанию: 3) | Время ожидания установки соединения (секунды) | Нет | |
Таймаут ожидания ответа (сек., по умолчанию: 5) | Время ожидания ответа от сервиса (секунды) | Нет | |
Логин | Логин для аутентификации при обращении к сервису | Да | |
Пароль | Пароль для аутентификации при обращении к сервису | Да | |
В зависимости от выбранного переключателя в конец ссылки прописанной в URL сервиса будут подставляться следующие значения в конец URL-адреса сервиса при взаимодействии с ним. Пример: URL-адрес в настройках: http://teststore.ru/beststore/AnyMethods/GetBalance/ URL-адрес в лог-файле при взаимодействии с внешним веб-сервисом остатков: http://teststore.ru/beststore/AnyMethods/GetBalance/shop
| Подстановка в поле URL сервиса в конец ссылки адреса сервиса при взаимодействии | Обязательное | |
Показывать остатки только в текущем магазине | Запрос возвращает остатки только по магазину, в котором установлена касса | /shop | Да |
Показывать остатки в магазинах только в текущем городе | Запрос возвращает остатки по всем магазинам города, в котором установлена касса | /city | Нет |
Показывать остатки во всех магазинах сети | Запрос возвращает остатки по всей сети магазинов | /all | Нет |
Выводить стоимость товара | При включении в таблице остатков отображается колонка с ценой товара в каждом магазине (поле |
| Нет |
5. Перейдите в Настройки интерфейса → кликните существующий шаблоны кассы SetTouch.
6. Кликните свободный элемент для добавления кнопки.
7. Выберите Плагин поиска остатков товара (Сервис проверки остатков) → кликните СОЗДАТЬ.
Выберите функцию: Плагин поиска остатков товара (Сервис проверки остатков).
Введите назавние кнопки: Показать остатки товаров.
Выбериет изображения для кнопки.
8. Кликните СОХРАНИТЬ.
Интеграция на стороне клиента
Список параметров для запросов
Параметры одинаковые для всех запросов.
Параметр | Тип | Описание | Обязательное |
|---|---|---|---|
| string | Номер магазина, который запрашивает остатки. | Да (не может быть пустым) |
| string | Артикул товара, для которого проверяется остаток. | Да (не может быть пустым) |
Параметры ответа
Структура ответа (JSON)
Параметр | Тип | Описание | Обязательное |
|---|---|---|---|
| boolean | Результат обработки запроса. | Да |
| string | Дата и время отправки ответа. | Да |
| array | Массив структур с информацией об остатках в магазинах. | Да (может быть пустым при |
Структура объекта stockInStores
Параметр | Тип | Описание | Обязательное |
|---|---|---|---|
| string | Идентификатор (номер) магазина. | Нет (может быть пустым) |
| string | Адрес или номер магазина. | Да |
| string | Артикул товара. | Да |
| string | Количество товара. | Нет (может быть пустым) |
| string | Стоимость товара в конкретном магазине. | Нет (может быть пустым) |
Пример запроса
Запрос на получение остатков
товара с артикулом 123456789 для магазина с идентификатором 123.
{
"storeID": "123",
"article": "123456789"
}
Примеры ответов
Остатки в магазине, где установлена касса
В ответе возвращается информация только по одному магазину.
{
"result": true,
"dateTime": "29.10.2024 11:37:54",
"stockInStores": [
{
"storeID": "00123",
"store": "Санкт Петербург, Невский проспект д.113",
"article": "123456789",
"qty": "223",
"price": "5990"
}
]
}
Остатки в магазинах города (где установлена касса)
В ответе возвращается информация по всем магазинам города, в котором находится запрашивающий магазин.
{
"result": true,
"dateTime": "29.10.2024 11:37:54",
"stockInStores": [
{
"storeID": "00123",
"store": "Санкт Петербург, Невский проспект д.113",
"article": "123456789",
"qty": "223",
"price": "5990"
},
{
"storeID": "00456",
"store": "Санкт Петербург, Чкаловский пр. д.50",
"article": "123456789",
"qty": "635",
"price": "5300"
},
{
"storeID": "00789",
"store": "Санкт Петербург, Науки пр., д. 23",
"article": "123456789",
"qty": "20",
"price": "5700"
}
]
}
Остатки по всей сети
В ответе возвращается информация по всем магазинам сети (города могут отличаться).
{
"result": true,
"dateTime": "29.10.2024 11:37:54",
"stockInStores": [
{
"storeID": "00123",
"store": "Санкт Петербург, Невский проспект д.113",
"article": "123456789",
"qty": "223",
"price": "6100"
},
{
"storeID": "00456",
"store": "Москва, Мира пр. д.21",
"article": "123456789",
"qty": "635",
"price": "5300"
},
{
"storeID": "00789",
"store": "Нижний Новгород, Ленина пр., д. 17",
"article": "123456789",
"qty": "20",
"price": "5400"
}
]
}
Ошибка обработки запроса
Пример ответа при result: false.
В модальном окне отображается ошибка.
{
"result": false,
"dateTime": "29.10.2024 11:37:54",
"stockInStores": []
}Статьи по теме