BR 1.13: Стоп-листы

Зависит от:

Контекст

Стоп-лист — механизм временной блокировки товаров и категорий на конкретной торговой точке. Если на ТТ закончилась моцарелла — менеджер останавливает “Маргариту” и “Пепперони” через стоп-лист. Товар не удаляется из каталога, но не отображается клиентам и не может быть заказан на этой ТТ.

В YumaPos стоп-лист создаётся автоматически для каждой ТТ и управляется на месте. Адаптация для франшизной модели: франчайзи/менеджер управляют стоп-листами своих ТТ, франшиза видит всё для мониторинга.


Требования

1. Стоп-лист per-store

  • У каждой ТТ — свой стоп-лист
  • Стоп-лист = список остановленных товаров и категорий на конкретной ТТ
  • Создаётся неявно (нет отдельной сущности “стоп-лист” — это набор записей для store_id)

2. Что можно остановить

Товар (product):

  • Конкретный товар (dish или good) блокируется для продажи на данной ТТ
  • Товар не отображается в клиентском меню на этой ТТ
  • В админке товар отображается с пометкой “СТОП”

Категория (category):

  • Все товары категории блокируются на данной ТТ
  • Если категория остановлена → все товары в ней недоступны, даже если не остановлены индивидуально
  • При снятии стопа с категории → товары снова доступны (если не остановлены индивидуально)

3. Управление стоп-листом

Остановка:

  • Выбрать ТТ → выбрать товар/категорию → “Остановить”
  • Опционально: указать причину (текст, необязательно)
  • Изменения применяются мгновенно

Снятие стопа:

  • Выбрать остановленный товар/категорию → “Снять стоп”
  • Изменения применяются мгновенно

Срок действия:

  • Бессрочный — товар остановлен до ручного снятия стопа
  • Нет автоматического сброса при закрытии смены

4. Влияние на вычисляемое меню

Финальное меню ТТ = 
  Активные товары (status=active)
  + Прейскурант ТТ
  − Стоп-лист ТТ (остановленные товары и категории)
  − Проверка складских остатков (Phase 2)
  = Что видит клиент
  • Остановленный товар не отображается в клиентском меню
  • Остановленный товар нельзя добавить в заказ (POS должен проверять)
  • В админке остановленный товар виден, но с пометкой

Бизнес-правила

  1. Per-store изоляция — остановка на ТТ-1 не влияет на ТТ-2
  2. Категория > товар — если категория остановлена, все товары в ней недоступны (даже без индивидуальной остановки)
  3. Товар + категория — если товар остановлен индивидуально И его категория тоже, при снятии стопа с категории товар остаётся остановленным
  4. Неактивный товар — товар с status=inactive не виден в любом случае, стоп-лист на него не влияет (для деактивации есть статус)
  5. Удалённый товар — soft-deleted товар не отображается в стоп-листе
  6. Мгновенное применение — стоп/снятие действует сразу, без задержки

Ролевой доступ

ДействиеФраншизаФранчайзиМенеджер ТТКассир
Просмотр стоп-листаВсе ТТСвои ТТСвоя ТТСвоя ТТ (read-only в POS)
Остановить товар/категориюЛюбая ТТСвои ТТСвоя ТТНет
Снять стопЛюбая ТТСвои ТТСвоя ТТНет

Затронутые сервисы

СервисЧто меняется
Catalog ServiceНовые таблицы product_stop_list, category_stop_list. Новые CRUD эндпоинты. Логика вычисляемого меню учитывает стоп-лист.
Admin BFFПрокси для стоп-лист эндпоинтов
erp-admin (web)UI управления стоп-листом — таб на странице ТТ или отдельный раздел

Что НЕ входит

  • Авто-стоп по остаткам склада — Phase 2 (зависит от Warehouse inventory)
  • Управление стоп-листом с POS-кассы — Phase 2 (зависит от POS приложения)
  • Стоп-лист для опций модификаторов — Phase 2 (если нужен)
  • Стоп-лист по расписанию (доступность по времени) — Phase 2
  • Отображение “Распродано” на клиентском сайте — Phase 2

Ссылки