Юридические лица — Список

Роут: /legal-entities API: GET /api/v1/legal-entities

Раздел скрыт при franchise.type=individual

(Введено в BR 1.4.4 §7) — При типе франшизы «ИП» (individual) пункт меню «Юр. лица» скрыт, виджет на дашборде отсутствует, прямой URL /admin/legal-entities → страница «404 Не найдено» или редирект на /. franchise.type фронт получает из GET /api/v1/admin/auth/me. Колонка «Тип» (Франшиза/Франчайзи) при corporate остаётся как раньше.


Что видит пользователь

Страница со списком юридических лиц в виде таблицы. Вверху — заголовок “Юридические лица”, строка поиска и фильтры. Справа от заголовка — кнопки “Добавить юрлицо” и “Импорт из Excel”.


Таблица

Колонки

КолонкаДанныеПримечание
НаименованиеnameКликабельное — переход в карточку
ИННinn
Типtype”Франшиза” / “Франчайзи”
Статусstatus”Активен” (зелёный) / “Приостановлен” (красная метка)
Кол-во ТТstore_countЧисло
Главноеis_primaryБейдж “Главное” если true
ДействияМеню с действиями (см. ниже)

Особенности отображения

  • Главное ЮЛ закреплено вверху списка (всегда первое, вне зависимости от сортировки) с бейджем “Главное”
  • Приостановленное ЮЛ отображается серым цветом, статус — красной меткой “Приостановлен”

Фильтры

ФильтрТипЗначенияDefault
СтатусSelectВсе / Активен / ПриостановленВсе
ТипSelectВсе / Франшиза / ФранчайзиВсе

Фильтры применяются мгновенно (без кнопки “Применить”). При смене фильтра — сброс на page=1.

Поиск

  • Поле ввода с placeholder “Поиск по наименованию или ИНН”
  • Поиск с debounce (300ms)
  • Query param: search
  • Ищет по обоим полям одновременно (на бэкенде)

Сортировка

  • По наименованию А-Я (default: sort=name_asc)
  • Клик по заголовку колонки “Наименование” переключает A-Я / Я-A

Пагинация

  • 20 записей на страницу
  • Постраничная навигация внизу (номера страниц + стрелки)
  • Query params: page, per_page

Действия

Кнопки в шапке (только Franchise)

КнопкаПереходВидимость
”Добавить юрлицо”/legal-entities/newТолько Franchise
”Импорт из Excel”/legal-entities/importТолько Franchise

Меню действий строки

ДействиеВидимостьЧто происходит
РедактироватьFranchise — всегда; Franchisee — только своиПереход в /legal-entities/{id}/edit
ПриостановитьFranchise + type=franchisee + status=activeМодалка подтверждения
ВозобновитьFranchise + type=franchisee + status=suspendedМодалка подтверждения
УдалитьFranchiseМодалка подтверждения

Модалки подтверждений

Удаление

Триггер: клик “Удалить” в меню строки API: DELETE /api/v1/legal-entities/{id}

Сценарий 1 — есть привязанные ТТ (ошибка HAS_ATTACHED_STORES):

  • Заголовок: “Невозможно удалить”
  • Текст: “К юридическому лицу привязаны торговые точки:”
  • Список ТТ (из error.details) — каждая кликабельная (ссылка на ТТ)
  • Кнопка: “Понятно” (закрывает модалку)

Сценарий 2 — нет ТТ:

  • Заголовок: “Удаление юридического лица”
  • Текст: “Вы уверены? Это действие нельзя отменить.”
  • Кнопки: “Отмена” / “Удалить” (красная)
  • После успеха: убрать строку из таблицы, toast “ЮЛ удалено”

Приостановка

Триггер: клик “Приостановить” Предварительный запрос: GET /internal/stores?legal_entity_id={id} (через BFF) — получить список ТТ API: POST /api/v1/legal-entities/{id}/suspend

  • Заголовок: “Приостановка юридического лица”
  • Текст: “Будет приостановлено ЮЛ [название]. Следующие торговые точки будут сняты с публикации:”
  • Список ТТ (id, name)
  • Кнопки: “Отмена” / “Приостановить” (оранжевая)
  • После успеха: обновить статус в таблице, toast “ЮЛ приостановлено, N ТТ сняты с публикации”

Возобновление

Триггер: клик “Возобновить” API: POST /api/v1/legal-entities/{id}/resume

  • Заголовок: “Возобновление юридического лица”
  • Текст: “ЮЛ [название] будет возобновлено. Торговые точки потребуется опубликовать вручную.”
  • Кнопки: “Отмена” / “Возобновить”
  • После успеха: обновить статус в таблице, toast “ЮЛ возобновлено”

Состояния

СостояниеЧто показываем
ЗагрузкаSkeleton-таблица (placeholder строк)
Пусто (Franchise)“Юридические лица пока не добавлены” + кнопки “Добавить юрлицо” и “Импорт из Excel”
Пусто (Franchisee)“У вас нет юридических лиц”
Ошибка загрузки”Не удалось загрузить данные” + кнопка “Повторить”
Пустой поиск”Ничего не найдено по запросу «…»”

Владелец партнёра

(Лейбл обновлён в BR 1.4.4 — без enum-роли admin_franchisee; scope определяется по legal_entities.owner_user_id)

  • Видит только свои ЮЛ (API фильтрует автоматически по scope)
  • Нет кнопок: “Добавить юрлицо”, “Импорт из Excel”
  • Нет действий: удалить, приостановить, возобновить
  • Есть: редактировать (только свои, ограниченный набор полей — см. Карточка ЮЛ)
  • Вкладку «Права» у своего ЮЛ не видит (не может сам себе менять права)

Переходы

ОткудаКудаТриггер
СписокКарточка просмотраКлик по наименованию
СписокФорма созданияКнопка “Добавить юрлицо”
СписокИмпортКнопка “Импорт из Excel”
СписокФорма редактированияДействие “Редактировать”

Ссылки