ADR-007: Ценообразование — только франшиза или ТТ тоже

Статус

proposed — ожидает решения от бизнеса

Контекст

В рамках BR 1.10 (Прейскуранты и доступность по ТТ) нужно определить: кто управляет ценами?

Drawio описывает прейскуранты как “разные цены по ТТ / регионам” и “базовый прейскурант по умолчанию”. Но не уточняет — кто создаёт и редактирует прейскуранты.

Это влияет на:

  • Архитектуру Catalog Service (кто имеет право менять цены)
  • Ролевую модель (Franchisee/Manager могут менять цены или нет)
  • Бизнес-логику (есть ли “потолок” цены, может ли ТТ продавать дешевле/дороже)

Рассмотренные варианты

1. Только Франшиза задаёт цены

Франшиза создаёт прейскуранты (“Москва”, “Регионы”, “Базовый”), назначает прейскурант на ТТ. Франчайзи и менеджер не могут менять цены.

Плюсы: единый контроль, предсказуемые цены для клиентов, проще архитектура. Минусы: негибко — если франчайзи хочет акцию на своей ТТ, он не может.

2. Франшиза задаёт базовые цены, ТТ может перекрывать

Франшиза создаёт прейскуранты. Франчайзи/менеджер может перекрыть цену на конкретный товар на своей ТТ (в пределах допустимого коридора или без ограничений).

Плюсы: гибко, франчайзи может адаптироваться к локальному рынку. Минусы: сложнее контроль, франшиза может потерять контроль над ценовой политикой.

3. Франшиза задаёт базовые цены, ТТ может только снижать (скидки)

Франшиза задаёт потолок. Франчайзи может дать скидку (снизить цену), но не может повысить выше базовой.

Плюсы: контроль + гибкость. Клиент никогда не платит больше базовой. Минусы: средняя сложность.

Решение

Вариант 1 — Только Франшиза задаёт цены. Принято 2026-04-02.

Ответы:

  1. Франчайзи не может менять цены на своих ТТ
  2. Не применимо
  3. Менеджер ТТ — только просмотр цен
  4. Цена доставки — отложено (нет доставки в MVP)

Франшиза управляет ценами через прейскуранты (BR 1.9). Базовая цена на уровне товара, прейскурант перекрывает per-product per-store.

Последствия

При варианте 1 (только франшиза)

  • Простая архитектура: product → price_list → store
  • Роль Franchisee/Manager — только просмотр цен

При варианте 2 или 3 (ТТ перекрывает)

  • Нужна таблица переопределений: store_price_override: { store_id, product_id, custom_price }
  • Логика разрешения цены: custom_price ?? price_list_price ?? base_price
  • Дополнительные права в ролевой модели

Риски

  • Если сделаем Вариант 1 на MVP — переход к Варианту 2 потребует новой таблицы и UI, но не рефакторинг существующего
  • Если сделаем Вариант 2 сразу — сложнее, но гибче

Ссылки