Публичное пространство
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. В левое поле введите остат → кликните Процессинги товаров → установките флажок Контроль ограничений на продажу товара → кликните СОХРАНИТЬ.
2. Кликните по процессингу Контроль ограничений на продажу товара для редактирования настроек.
3. Установите следующие настройки → кликните СОХРАНИТЬ.
Настройка | Описание | Обязательный |
|---|---|---|
URL сервиса | HTTP-адрес сервиса. | Да |
Таймаут соединения (сек., по умолчанию: 3) | Максимальная величина времени ожидания при обращении к процессингу, после которой обращение считается неуспешным. | Нет |
Таймаут ожидания ответа (сек., по умолчанию: 5) | Максимальная величина времени ожидания ответа от процессинга, после которой обращение считается неуспешным. | Нет |
Логин | Логин для доступа к процессингу. | Да |
Пароль | Пароль для доступа к процессингу. | Да |
Запрещать продажу | Флажок, определяющий, следует ли запрещать продажу в случае, если какого-либо товара нет на остатках. Галочка выставлена, если запрещать, не выставлена в противном случае. | Нет |
Передавать коды рекламной акции, если включен запрет продажи без остатков 10.4.25.0 https://crystals.atlassian.net/browse/SRTG-531 | Флажок определяющий, следует ли передавать в сервис коды рекламных акций, которые воздействовали на позицию. Флаг учитывается только при условии, флаг “Запрещать продажу” выставлен. Галочка выставлена, если передавать, не выставлена в противном случае. | Нет |
Логика настройки “Запрещать продажу без остатков“
Включенная настройка:
При переходе к расчету, происходит проверка: если в чеке есть позиции (полностью или частично), которые отсутствуют на остатках, кассир увидит окно “Запрет продажи” и не сможет перейти к оплате.
При переходе по кнопке “К редактированию”, окно закрывается
Выключенная настройка:
При переходе к расчёту происходит проверка: если в чеке есть позиции (полностью или частично), которые отсутствуют на остатках, то кассир увидит попап “Запрет продажи” с предупреждением и сможет вернуться на предыдущий шаг (по кнопке “К редактированию”) или продолжить процесс продажи (по кнопке “Продолжить”).
Логиика расчёта остатков через веб-сервис
Пример 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() | Нет |
Отображение информационных плашек для удаления из чека запрещённых к продаже товаров
https://crystals.atlassian.net/browse/CR-15153
10.4.23.0 10.4.24.0 10.4.25.0
В плагине реализовано отображение информационных меток для позиций чека, которые запрещены к продаже по результатам проверки остатков. Метка служит удобной визуальной подсказкой для кассира: она помогает быстро определить товар, который необходимо удалить из чека или скорректировать до перехода к оплате. Благодаря этому кассиру не нужно вручную сопоставлять список проблемных позиций из окна проверки с каждой строкой чека — запрещённые к продаже товары выделяются непосредственно в области чека.
Логика отображения меток используется вместе с механизмом контроля ограничений на продажу товара. При переходе к расчёту плагин передаёт позиции чека во внешний сервис контроля остатков и получает результат проверки. Если сервис возвращает проблемные позиции в массиве ProblemItems, касса определяет соответствующие товары в текущем чеке и отображает над ними информационные плашки. Такие плашки помогают кассиру быстрее вернуться к редактированию чека, найти товар с отсутствующим или недостаточным остатком и удалить его из продажи.
Метки формируются по общей логике сервиса POSITION_LABELS_SERVICE, описанной в статье SetTouch ◾️ Отображение дополнительной информации по позиции в чеке. Для вывода метки используется настроенное условие: касса проверяет данные позиции, сравнивает их с правилами отображения и показывает плашку только для тех товаров, которые соответствуют заданной логике. За счёт этого механизм не привязан к одному конкретному сценарию и может использовать разные источники данных для определения, нужно ли отображать подсказку кассиру.
Для сценариев с рекламными акциями поддерживается логика из статьи https://crystals.atlassian.net/wiki/spaces/UC/pages/4241227810. В этом случае касса анализирует источник positionDiscounts и значение advertiseLabels: если метка рекламной акции входит в список значений, полученных по позиции, то плашка отображается в области чека. Аналогичный подход применяется для подсказок по запрещённым к продаже товарам: метка отображается только у тех позиций, по которым логика проверки определила ограничение.
Если включена настройка запрета продажи, кассир не сможет продолжить оплату, пока в чеке остаются товары, запрещённые к продаже. В этом случае метки помогают быстрее найти такие позиции и удалить их из чека. Если запрет продажи не включён, плагин может отобразить предупреждение и дать кассиру возможность продолжить продажу в зависимости от настроек процессинга, но информационные метки всё равно используются как дополнительная подсказка для визуального контроля проблемных позиций.