SetRetail10 ◾️ Плагин контроля продажи через веб-сервисы (Контроль ограничений на продажу товара)

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

SetRetail10 ◾️ Плагин контроля продажи через веб-сервисы (Контроль ограничений на продажу товара)

https://crystals.atlassian.net/browse/CR-11347

https://crystals.atlassian.net/browse/SRTB-8632

https://crystals.atlassian.net/browse/SRTF-95

https://crystals.atlassian.net/browse/MMTR-3

https://crystals.atlassian.net/browse/SRTB-8617

10.4.8.0

Описание

Функциональность предоставляет возможность для идентификации товаров с нулевым остатком в чеке, что позволяет контролировать выбытие товара с нулевыми остатками.

Схема логики работы плагина

Ценность

Контроль выбытия товаров при нулевых остатках в системе.

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

  • Плагин обращается со списком товаров чека в сервис клиента и получает ответ по “проблемным” позициям.

  • Выводит на кассе форму с таблицей “проблемных” позиций и с одной/двумя кнопками “К редактированию” или “К редактированию” + “Продолжить”, в зависимости от настроек разрешения, установленных на сервере.

  • Кнопка “К редатированию” закрывает форму, кассир остаётся на экране чека (процесс продажи был прерван).

  • Кнопка “Продолжить” закрывает попап, кассир продолжает процесс оплаты.

 

Варианты ответа от сервера. Передача информации от плагина на кассу

Ошибка

Плагин возвращает кассе положительный ответ.

{ "ErrorMsg": "Склад с данным кодом не найден", "Result": false }

Если ответ 200, массив “ProblemItems“ пустой,

{ "Result": false, "StoreID": "1", "DateTime": "16.04.2024 11:19:39", "ProblemItems": [] }

Плагин возвращает кассе положительный ответ.

Если ответ 200, массив “ProblemItems“ НЕ пустой:

{ "Result": false, "StoreID": "1", "DateTime": "16.04.2024 11:19:39", "ProblemItems": [ { "article": "LOT614535", "qty": 1, "description": "Превышен остаток на складе" } ] }

Плагин возвращает кассе ответ с:

  • артикулами проблемных позиций "article" ;

  • описанием проблемы "description";

  • формой на кассе для вывода информации.

Настройки

Добавление плагина на сервере

1. На сервере SetCentrum/SetRetail → перейдите в Интеграция → Внешние процессинги → кликните кнопку ADD_BUTTON.png.

image-20260325-150042.png

2. В левое поле введите остат → кликните Процессинги товаров → установките флажок Контроль ограничений на продажу товара → кликните СОХРАНИТЬ.

image-20260325-150350.png

2. Кликните по процессингу Контроль ограничений на продажу товара для редактирования настроек.

image-20260325-150533.png

3. Установите следующие настройки → кликните СОХРАНИТЬ.

image-20260325-153733.png

Настройка

Описание

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

Настройка

Описание

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

URL сервиса

HTTP-адрес сервиса.

Да

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

Максимальная величина времени ожидания при обращении к процессингу, после которой обращение считается неуспешным.

Нет

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

Максимальная величина времени ожидания ответа от процессинга, после которой обращение считается неуспешным.

Нет

Логин

Логин для доступа к процессингу.

Да

Пароль

Пароль для доступа к процессингу.

Да

Запрещать продажу

Флажок, определяющий, следует ли запрещать продажу в случае, если какого-либо товара нет на остатках. Галочка выставлена, если запрещать, не выставлена в противном случае.

Нет

Передавать коды рекламной акции, если включен запрет продажи без остатков

10.4.25.0

https://crystals.atlassian.net/browse/SRTG-531

https://crystals.atlassian.net/browse/CR-15053

https://crystals.atlassian.net/browse/SRTG-617

Флажок определяющий, следует ли передавать в сервис коды рекламных акций, которые воздействовали на позицию. Флаг учитывается только при условии, флаг “Запрещать продажу” выставлен. Галочка выставлена, если передавать, не выставлена в противном случае.

Нет

 

 

Логика настройки “Запрещать продажу без остатков“

Включенная настройка:

image-20240812-135120.png

При переходе к расчету, происходит проверка: если в чеке есть позиции (полностью или частично), которые отсутствуют на остатках, кассир увидит окно “Запрет продажи” и не сможет перейти к оплате.
При переходе по кнопке “К редактированию”, окно закрывается

1 ry.png

Выключенная настройка:

image-20240812-135141.png

При переходе к расчёту происходит проверка: если в чеке есть позиции (полностью или частично), которые отсутствуют на остатках, то кассир увидит попап “Запрет продажи” с предупреждением и сможет вернуться на предыдущий шаг (по кнопке “К редактированию”) или продолжить процесс продажи (по кнопке “Продолжить”).

2 ry.png

Логиика расчёта остатков через веб-сервис

Пример URL: http://1с-testdomain.ru/TEST/hs/stock

Проверка позиций на остатки при добавлении товара в чек:
1. Отправляется POST-запросом .json файл (см. документацию )

2. Артикул и количествово по товара по нему отправляется, как элемент массива в Items[].

В случае успешного ответа (см. документацию ):

  • Если все товары в наличии, то массив “ProblemItems” придёт пустым → продолжаем стандартный флоу оплаты

  • Если не все товары в наличии, то в массиве “ProblemItems” придёт массив элементов с полями:

 

  • Артикул - "article": "LOT614535".

    • Номер артикула выводится в попап в столбец “Арт.”

  • Количествово артикула -"qty": 1

    • Данные не используются.

  • Описание проблемы - "description", например, "Превышен остаток на складе".

    • Описание проблемы выводим в попап в столбец “Причина”

Поля и соответствие в SetAPI v.1.11.2

Название поля

Описание поля

Как получить в плагине в актуальной версии SetAPI v1.11.2 (местами в упрощённом виде)  

Нужна ли доработка с кассы

“StoreID”

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

POSInfo.getShopNumber()

Нет

”TerminalID”

Номер кассы

POSInfo.getPOSNumber()

Нет

”StaffID”

Табельный номер кассира

POSInfo.getUser().getTabNumber()

Нет

”ReceiptID”

Номер текущего чека

InterceptionContext.getReceipt().getNumber()

Нет

”Items”: []

Массив позиций в текущем чеке

InterceptionContext.getReceipt().getLineItems()

Нет

“Items”: [{ “article”}]

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

LineItem.getMerchandise().getMarking()

Нет

“Items”: [{ “qty”}]

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

LineItem.getQuantity()

Нет