Публичное пространство
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 → перейдите в Интеграция → Внешние процессинги → кликните кнопку → в правое поле поиска процессинга введите Контроль ограничений → установите флажок с процессингом Контроль ограничений на продажу товара → кликните СОХРАНИТЬ.
2. Кликните по процессингу Контроль ограничений на продажу товара для редактирования настроек.
3. Установите следующие настройки → кликните СОХРАНИТЬ.
Логика настройки “Запрещать продажу без остатков“
Включенная настройка:
При переходе к расчету, происходит проверка: если в чеке есть позиции (полностью или частично), которые отсутствуют на остатках, кассир увидит окно “Запрет продажи” и не сможет перейти к оплате.
При переходе по кнопке “К редактированию”, окно закрывается
Выключенная настройка:
При переходе к расчёту происходит проверка: если в чеке есть позиции (полностью или частично), которые отсутствуют на остатках, то кассир увидит попап “Запрет продажи” с предупреждением и сможет вернуться на предыдущий шаг (по кнопке “К редактированию”) или продолжить процесс продажи (по кнопке “Продолжить”).
Логиика расчёта остатков через веб-сервис
Пример 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() | Нет |
© 1994-2025, ООО «Кристалл Сервис Интеграция».
Все права защищены.