Публичное пространство
SetMark ◾️ Резервирование марок в чеке продажи
https://crystals.atlassian.net/browse/CR-13001
https://crystals.atlassian.net/browse/SRTB-9835
https://crystals.atlassian.net/browse/MARK-646
SETRETAIL 10.4.21.0
SETMARK 2.28.0
Описание
Функциональность предназначена для предотвращения повторных продаж одной и той же марки на разных кассах в рамках одного магазина. При переходе к расчету касса отправляет запрос в SetMark для постановки маркированных товаров в чеке на временный резерв. Если марка уже зарезервирована другой кассой, система блокирует операцию.
Ценность
Исключение случаев нарушения законодательства и штрафов, связанных с дублированными продажами маркированных товаров (ЧЗ и ЕГАИС). Это защищает ритейлера от фрода и ошибок персонала, когда одну марку пытаются пробить одновременно на нескольких кассах.
Логика работы
Процесс резервирования включает следующие этапы:
Добавление товара — при сканировании марки касса выполняет стандартную валидацию в SetMark. Если марка уже зарезервирована за другой кассой, добавление блокируется.
Переход к расчету — при переходе к выбору типа оплаты касса отправляет в SetMark список всех марок чека для постановки на резерв. SetMark проверяет, не заняты ли эти марки другими кассами или заказами.
Отмена расчета — при выходе из режима оплаты в чек касса отправляет фоновый запрос на снятие резерва.
Предфискализация — перед регистрацией чека выполняется финальная проверка. Если резерв истек, продажа запрещается.
Завершение продажи — после успешной фискализации SetMark снимает резерв и переводит марку в статус «Продана».
Примеры работы
Основной сценарий резервирования
Кассир №1 на Кассе №1 сканирует марку КМ_1. Товар добавляется в чек.
Кассир №2 на Кассе №2 сканирует марку КМ_1. Товар добавляется в чек.
Кассир №1 переходит к расчету. Касса №1 отправляет запрос в SetMark, и марка КМ_1 ставится в резерв за Кассой №1.
Кассир №2 переходит к расчету. Касса №2 отправляет запрос на резервирование КМ_1.
SetMark возвращает ошибку, так как марка уже зарезервирована за Кассой №1.
На Кассе №2 отображается окно «Запрет продажи» со списком проблемных позиций и номером кассы, за которой они зарезервированы.
Кассир №1 завершает оплату и фискализирует чек. Марка КМ_1 переходит в статус «Продана».
Кассир №2 удаляет товар из чека или аннулирует чек.
Снятие резерва при выходе из расчета
Кассир перешел в режим расчета, марка успешно зарезервирована в SetMark.
Покупатель решает добавить еще один товар, и кассир выходит из режима расчета обратно в чек.
Касса отправляет фоновый запрос в SetMark на снятие резерва со всех марок данного чека.
Марки снова становятся доступны для резервирования на любой кассе.
Примеры отрицательных сценариев
Попытка продажи зарезервированной марки
На Кассе №2 кассир перешел к расчету с товаром КМ_1. Марка КМ_1 встала в резерв за Кассой №2.
В это же время на Кассе №1 кассир сканирует ту же марку КМ_1.
SetMark возвращает ошибку: «Марка зарезервирована для продажи на кассе №2. Продажа запрещена».
Касса №1 отображает блокирующее уведомление и не позволяет добавить товар в чек.
Ошибка на этапе фискализации
Марка была успешно зарезервирована за кассой при переходе к оплате.
Время жизни резерва (настройка
setmark.reserve.mark.max.age) истекло до момента завершения транзакции.При попытке фискализации SetMark обнаруживает, что активный резерв для данной кассы отсутствует.
Касса выводит блокирующее сообщение: «Марка не зарезервирована за этой кассой. Продажа запрещена».
Кассир может аннулировать чек или вернуться в него для повторного резервирования.
Валидация групповых и вложенных марок
Система автоматически контролирует целостность упаковок при резервировании:
Групповая упаковка (блок) — если в чеке зарезервирован блок сигарет, система запретит добавление или резервирование отдельных пачек из этого блока на любой кассе.
Вложенная марка (пачка) — если зарезервирована хотя бы одна пачка, система заблокирует резервирование всей групповой упаковки (блока), к которой она принадлежит.
При попытке нарушить эти правила касса выводит сообщение: «Товар уже добавлен в чек в составе групповой упаковки» или «Товар из этой групповой упаковки уже добавлен в чек».
Ограничения
Резервирование работает только для чеков продажи. Для чеков возврата функционал не применяется.
При отсутствии связи с сервером SetMark функционал резервирования недоступен.
Если включена настройка «Разрешать операцию при недоступности сервера», проверка резерва игнорируется при обрыве связи.
Валидация вложенных марок (пачка/блок) обеспечивает проверку только в рамках одного чека и одной кассы.
Настройка
Настройка в Set Retail 10
На сервере в разделе Интеграция → Внешние процессинги в настройках плагина Сервер валидации SetMark Centrum установите флажок Резервирование маркированных товаров при переходе к расчету → кликните СОХРАНИТЬ.
Настройки в SetMark
Отредактируйте параметры в файле конфигурации config/application.properties.
Настройка | Значение по умолчанию | Описание |
|---|---|---|
|
| При значении |
|
| Время жизни резерва в минутах. По истечении срока марка снимается с резерва автоматически. |
|
| Периодичность очистки БД от просроченных резервов (рекомендуется раз в 15 минут). |
Статьи по теме