Торговые точки

Источник требований

Франшиза создаёт и управляет торговыми точками. ТТ привязана к ЮЛ и является точкой продаж: к ней привязаны сотрудники, каталог, заказы.


Сущность торговой точки

Основные данные

ПолеОбязательностьОписание
НазваниеОбязательноНазвание ТТ
АдресОбязательноТекстовое поле
ШиротаОбязательноЧисловое, ручной ввод
ДолготаОбязательноЧисловое, ручной ввод
Город / регионНеобязательноТекстовое поле
ТелефонНеобязательноКонтактный телефон ТТ
EmailНеобязательноEmail ТТ
Привязка к ЮЛОбязательноВыбор из списка активных ЮЛ. Не меняется после создания.

График работы

  • По дням недели: понедельник — воскресенье
  • Для каждого дня: время открытия, время закрытия, или “выходной”
  • Быстрая настройка: одинаковый график на все дни

Семантика времени

  • open_time == close_time (например 21:00–21:00) — круглосуточный режим (24 часа). На UI показывается бейдж «🕒 24/7». Используется когда смена длится сутки. Для отдельного выходного — флаг «выходной» (is_closed=true), не равные времена.
  • close_time < open_time (например 21:00–02:00) — закрытие на следующий календарный день. Допускается. Семантика «работает ли сейчас» в MVP не реализуется (нет потребителей time-range), но при появлении должна учитывать перенос через полночь.
  • Бэкенд хранит как есть, cross-field валидаций нет.

На MVP без перерывов

Формат “открыто с … до …” без поддержки перерывов. В будущем — перерывы.


Статусы

СтатусОписаниеВидимость клиентам
Черновик (draft)Создана, но не виднаНе видна
Опубликована (published)Видна на сайте и в приложенииВидна
Приостановлена (suspended)Временно скрыта (при приостановке ЮЛ)Не видна

Переходы

  • Публикация: draft → published (кнопка “Опубликовать”)
  • Снятие: published → draft (кнопка “Снять с публикации”)
  • Приостановка ЮЛ (автоматически): published → suspended
  • Возобновление ЮЛ: ТТ остаются suspended (нужно публиковать вручную)

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

  1. Привязка к ЮЛ — выбирается при создании, не меняется после. На MVP одно ЮЛ на ТТ.
  2. Soft delete — ТТ помечается удалённой, не отображается.
  3. Удаление с сотрудниками — если есть назначенные сотрудники, предупредить, но разрешить (сотрудники открепляются).
  4. Удаление опубликованной — сначала снять с публикации, потом удалять.
  5. Приостановка ЮЛ → все ТТ этого ЮЛ автоматически suspended.
  6. Возобновление ЮЛ → ТТ остаются suspended, публиковать вручную.

Ролевая матрица

Франшиза (владелец бренда)

  • CRUD всех ТТ
  • Публикация / снятие с публикации
  • Все фильтры

Франчайзи (партнёр)

  • Просмотр и редактирование только своих ТТ (привязанных к его ЮЛ)
  • Без создания и удаления
  • Без публикации

Менеджер ТТ

  • Просмотр и редактирование только своей ТТ
  • Без создания, удаления, публикации

Кассир

  • Нет доступа

Список ТТ

Колонки

  • Название
  • Адрес
  • ЮЛ (наименование)
  • Статус (Черновик / Опубликована / Приостановлена)
  • Город

Фильтры

  • По статусу (Все / Черновик / Опубликована / Приостановлена)
  • По ЮЛ
  • По городу

Поиск

  • По названию и адресу

Пагинация

  • 20 записей на страницу

Карточка ТТ

  • Все поля ТТ
  • График работы
  • Количество привязанных сотрудников (в будущем)

Привязка к терминалу PayKeeper

(Добавлено в BR 3.3)

Секция видна если у ЮЛ этой ТТ активна PK-интеграция. Позволяет привязать ТТ к физическому mPOS-терминалу у PayKeeper.

ПолеОбязательностьОписание
ID терминала (pk_terminal_id)ОбязательноИз ЛК PayKeeper (вручную). Уникален в рамках франшизы
ID мерчанта (pk_mpos_merchant_id)ОбязательноИз ЛК PayKeeper (вручную)
Метка (label)НеобязательноЧеловекочитаемое имя («Касса 1»)
СтатусОбязательноАктивна / Неактивна

Правила:

  • Одна ТТ = один терминал (UNIQUE на store_id и pk_terminal_id)
  • ТТ без привязки не может принимать оплату через PK (создание invoice вернёт 422 INTEGRATION_NOT_CONFIGURED)
  • Редактирование — integrations.manage (владелец франшизы — любые ТТ, владелец партнёра — только свои)
  • Менеджер ТТ видит статус read-only: «Привязана к терминалу …» / «Не настроена»
  • Кассир не видит

Подробнее: главная спека PayKeeper.


Действия и подтверждения

Удаление

  • Если ТТ опубликована — ошибка: “Сначала снимите с публикации”
  • Если есть привязанные сотрудники — предупреждение: “У ТТ есть N сотрудников, они будут откреплены”
  • Модалка: “Удалить торговую точку [название]? Это действие нельзя отменить.”

Публикация

  • Кнопка “Опубликовать” → ТТ становится видна клиентам

Снятие с публикации

  • Кнопка “Снять с публикации” → ТТ скрыта от клиентов

Что НЕ входит

  • Фотографии и медиа (Phase 2, S3)
  • Зоны доставки на карте (Phase 2)
  • Авто-увеличение ETA (Phase 2, Order Service)
  • Импорт из Excel (BR 1.6)

Связи с другими модулями

  • Юридические лица — каждая ТТ привязана к одному ЮЛ
  • Сотрудники — сотрудник привязан к ТТ
  • Каталог — товары доступны на ТТ (будущая BR)
  • Заказы — заказ создаётся в контексте ТТ (будущая BR)

Ссылки