SetTouch ◾️ Сервис проверки остатков

Публичное пространство

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. Кассир может проверить остатки товара при выявлении расхождения между фактическим количеством на полке и данными в системе, что ускоряет процесс инвентаризации и корректировки.

 

Примеры работы

Товар в наличии

1. Кассир нажимает кнопку Показать остатки товара.

image-20260327-103200.png

 

2. Вводит строку поиска название товара и нажимает на него.

image-20260327-103305.png

 

3. Отображается окно о том, какое количество товара в магазине присутствует.

image-20260327-103435.png

 

Товар отсутвует

1. Кассир нажимает кнопку Показать остатки товара.

image-20260327-103751.png

 

2. Вводит строку поиска название товара и нажимает на него.

image-20260327-103917.png

 

3. Отображется сообщение о том, что товара нет в наличии.

image-20260327-104114.png

Ограничения

  1. Функциональность доступна только кассах SetTouch. На других типах кассовых устройств кнопка «Остатки по товарам» отсутствует.

  2. Фильтрация нулевых остатков: Если в ответе сервиса количество запрашиваемого товара в каком-либо магазине равно нулю, строка с таким магазином не выводится в модальном окне.

  3. Порядок вывода магазинов: Порядок вывода магазинов на экране SetTouch полностью зависит от порядка элементов в массиве stockInStores, возвращаемом сервисом. Если требуется, чтобы на первом месте выводился определенный магазин (например, текущий), эта логика должна быть реализована на стороне сервиса клиента во внешней системе.

  4. Для отображения списка релевантных вариантов при ручном вводе введите 3 символов.

  5. Отображение стоимости товара в каждом магазине зависит от настройки плагина Выводить стоимость товара. Если настройка отключена, поле price в ответе сервиса игнорируется.

Настройки

1. На сервере SetCentrum/SetRetail10 перейдите в ИнтеграцияВнешние процессинги → нажмите кнопку добавления процессинга.

image-20260323-125441.png

 

2. Наберите в поле поиска сервис провер → выберите Складские остатки → введите в поле поиска сервис про → установите флажок Сервис проверки остатков → кликните СОХРАНИТЬ.

image-20260324-101559.png

 

3. Кликните в списке внешних процессингов Сервис проверки остатков.

image-20260323-130911.png

 

4. Назначьте магазины и настройки → кликните СОХРАНИТЬ.

image-20260324-122452.png

Настройка

Описание

Обязательный

Настройка

Описание

Обязательный

URL сервиса

Адрес сервиса клиента для получения информации об остатках

Да

Таймаут соединения (сек., по умолчанию: 3)

Время ожидания установки соединения (секунды)

Нет

Таймаут ожидания ответа (сек., по умолчанию: 5)

Время ожидания ответа от сервиса (секунды)

Нет

Логин

Логин для аутентификации при обращении к сервису

Да

Пароль

Пароль для аутентификации при обращении к сервису

Да

В зависимости от выбранного переключателя в конец ссылки прописанной в URL сервиса будут подставляться следующие значения в конец URL-адреса сервиса при взаимодействии с ним.

Пример:

URL-адрес в настройках:

http://teststore.ru/beststore/AnyMethods/GetBalance/

URL-адрес в лог-файле при взаимодействии с внешним веб-сервисом остатков:

http://teststore.ru/beststore/AnyMethods/GetBalance/shop

 

Подстановка в поле URL сервиса в конец ссылки адреса сервиса при взаимодействии

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

Показывать остатки только в текущем магазине

Запрос возвращает остатки только по магазину, в котором установлена касса

/shop

Да

Показывать остатки в магазинах только в текущем городе

Запрос возвращает остатки по всем магазинам города, в котором установлена касса

/city

Нет

Показывать остатки во всех магазинах сети

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

/all

Нет

Выводить стоимость товара

При включении в таблице остатков отображается колонка с ценой товара в каждом магазине (поле price из ответа сервиса)

 

Нет

 

5. Перейдите в Настройки интерфейса → кликните существующий шаблоны кассы SetTouch.

image-20260323-133726.png

 

6. Кликните свободный элемент для добавления кнопки.

image-20260323-134225.png

 

7. Выберите Плагин поиска остатков товара (Сервис проверки остатков) → кликните СОЗДАТЬ.

  • Выберите функцию: Плагин поиска остатков товара (Сервис проверки остатков).

  • Введите назавние кнопки: Показать остатки товаров.

  • Выбериет изображения для кнопки.

image-20260324-123033.png

 

8. Кликните СОХРАНИТЬ.

image-20260324-123413.png

 

Интеграция на стороне клиента

Список параметров для запросов

Параметры одинаковые для всех запросов.

Параметр

Тип

Описание

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

Параметр

Тип

Описание

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

storeID

string

Номер магазина, который запрашивает остатки.

Да (не может быть пустым)

article

string

Артикул товара, для которого проверяется остаток.

Да (не может быть пустым)

 

Параметры ответа

Структура ответа (JSON)

Параметр

Тип

Описание

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

Параметр

Тип

Описание

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

result

boolean

Результат обработки запроса.
true: успешный запрос (вывод данных в модалке).
false: ошибка (показ модалки с ошибкой).

Да

dateTime

string

Дата и время отправки ответа.

Да

stockInStores

array

Массив структур с информацией об остатках в магазинах.

Да (может быть пустым при result: false)

Структура объекта stockInStores

Параметр

Тип

Описание

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

Параметр

Тип

Описание

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

storeID

string

Идентификатор (номер) магазина.

Нет (может быть пустым)

store

string

Адрес или номер магазина.

Да

article

string

Артикул товара.

Да

qty

string

Количество товара.

Нет (может быть пустым)

price

string

Стоимость товара в конкретном магазине.
Добавлено 23.01.

Нет (может быть пустым)

Пример запроса

Запрос на получение остатков

товара с артикулом 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": [] }

Статьи по теме