Ресторан
Модуль закрывает зал: гость сканирует QR-код на столе, открывает меню, заказывает сам, кухня видит заказ на экране, счёт закрывается на кассе.
Меню — это не отдельный справочник, а тот же каталог. Позиция попадает в меню, если помечена как видимая в нём, а её категория входит в список категорий меню. Наличие и списание считаются по филиалу, указанному в настройках.
Столы
Стол — носитель QR-кода. У него есть имя или номер, зона (веранда, второй этаж), вместимость и постоянный публичный токен, который зашит в QR-ссылку. Токен неугадываемый: подобрать чужой стол по номеру нельзя.
Счёт стола
Пока гости сидят, на столе открыт один счёт. Он копит все отправки заказа за одно посещение. Счёт проходит состояния: открыт → ожидает оплаты → закрыт (или отменён).
У счёта тоже есть публичный токен — гость держит его, чтобы дозаказать и посмотреть, на сколько уже набрал. Заказ навынос ведётся тем же счётом, только без стола.
Счёт «живой» ограниченное время: брошенный с вечера стол не подхватит утренний гость. Закрытие счёта и отправка новой позиции с телефона гостя не могут произойти одновременно — тут стоит блокировка, иначе позиция уехала бы в уже закрытый счёт.
Тикеты и экран кухни
Каждая отправка заказа гостем — отдельный тикет. Тикет идёт на станцию — кухня, бар или без станции — и проходит статусы: новый → подтверждён → готовится → готов → подан. Отменённый тикет остаётся в истории.
Экран кухни (KDS) показывает тикеты в реальном времени и сопровождает новые звуком. Экран филиальный: бар одного зала не видит заказы соседнего.
Позиции тикета — снапшот: название, цена, выбранные модификаторы и себестоимость фиксируются на момент заказа. Потом можно переименовать блюдо или поднять цену — старый чек не изменится.
Предоплата и постоплата
Режим оплаты выбирается настройкой:
- Постоплата — тикет уходит на кухню сразу, гость платит на выходе;
- Предоплата — тикет создаётся удержанным: он не показывается на экране кухни и не звучит, пока оплата не подтверждена.
Отдельно настраивается, должен ли официант подтверждать заказ гостя перед отправкой на кухню, и берётся ли процент за обслуживание.
Онлайн-оплата, как и в магазине, работает через платёжную сессию с провайдером-заглушкой и закрыта для продакшена до подключения реального эквайринга.
Позвать официанта
Гость может позвать официанта прямо из меню — сигнал придёт в зал. Функция включается настройкой: там, где официанта нет, кнопка не нужна.
Деньги
Закрытый счёт превращается в заказ с зафиксированной себестоимостью. Дальше он участвует в общей отчётности наравне с продажами кассы — отдельного «ресторанного» учёта денег нет.
Профили
Модуль настраивается под формат: кофейня (быстрый оборот, предоплата), бар, кафе с обслуживанием. Профиль меняет набор умолчаний, а не логику.
Связь с другими модулями
- Каталог — позиции меню, варианты и модификаторы.
- Склад — списание ингредиентов по филиалу.
- Касса — закрытие счёта и оплата.
- Отчёты — выручка и себестоимость зала.
Типовые сценарии
- Раздать QR-коды по столам и разгрузить официантов на пиковых часах.
- Запустить кофейню в режиме предоплаты: без оплаты кухня заказ не видит.
- Разделить экраны кухни и бара, чтобы каждый видел только своё.
- Посчитать, сколько реально приносит зал с учётом себестоимости блюд.