Перейти к основному содержимому

Планирование

Планирование — движок бронирования. Он отвечает на один вопрос: занят ли ресурс в этот интервал. На нём стоит и запись клиента к мастеру, и аренда оборудования, и групповое занятие, и заселение в номер.

Модуль Календарь — интерфейс поверх этого движка: визуальное расписание с перетаскиванием. Сам движок отвечает за правила и целостность.

Ресурс

Ресурс — то, что бронируется. Четыре типа:

ТипЧто этоПример
staffЧеловекМастер, врач, тренер
seatМестоКресло, столик, кабинет
unitЮнитНомер, коворкинг-место
equipmentОборудованиеИнструмент, велосипед, техника

У ресурса настраиваются:

  • Вместимость — 1 для индивидуального, N для группового занятия;
  • Рабочие окна — по дням недели, когда ресурс вообще доступен;
  • Буфер — сколько минут нужно между бронями (уборка, подготовка);
  • Минимальная длительность брони;
  • Навыки и услуги — какие услуги ресурс оказывает. Если список пуст, ресурс универсален; как только в нём появилась хоть одна услуга, записывать можно только на неё.

Бронь

Бронь — интервал на ресурсе. Её статус: создана, подтверждена, состоялась, клиент не пришёл, отменена.

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

Бронь может ссылаться на клиента, услугу каталога, сделку и объект обслуживания. Ничего из этого не обязательно: минимальная бронь — это ресурс и интервал.

Мультиресурсные брони

Одна запись может занимать несколько ресурсов сразу — например, мастера и кресло. Основной ресурс хранится в самой брони, остальные добавляются к ней списком. Проверка занятости идёт по всем.

Групповые занятия

Если вместимость ресурса больше единицы, к брони добавляются участники со своими статусами: записан, пришёл, не пришёл, отменил. Так ведутся групповые тренировки и мастер-классы.

Повторы

Регулярные записи описываются правилом повторения: занятие каждый вторник, ТО раз в квартал. Из правила брони генерируются на горизонт вперёд; серию можно ограничить датой окончания.

Тарифы

Цена брони считается по тарифам. Тариф задаёт цену за час, за сутки или фиксированную за бронь и может быть привязан к ресурсу, к услуге либо к их паре. Сезонный тариф ограничивается датами.

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

Предоплата и неявки

Чтобы бороться с неявками, у брони есть депозит со своим состоянием: не требуется, требуется, получен, возвращён, удержан. Удержанный депозит уходит в прочие доходы — это отдельная операция, а не «потерянные» деньги.

Прокат

Для аренды бронь дополняется выдачей и возвратом. Обе операции атомарны: два сотрудника не выдадут один и тот же экземпляр дважды. При возврате депозит либо возвращается, либо удерживается, а сама аренда может превратиться в продажу.

Лист ожидания

Если свободных слотов нет, клиент попадает в лист ожидания на ресурс и интервал. Когда слот освобождается, видно, кому его предложить.

Уборка

Для юнитов ведётся состояние уборки: готов, требует уборки, в работе. Задачи на уборку создаются автоматически после выезда и не дают заселить неподготовленный номер.

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

  • Календарь — визуальное расписание и перетаскивание броней.
  • Каталог — услуга задаёт длительность и цену.
  • Клиенты — история записей и напоминания.
  • Касса — оплата брони чеком.
  • Сделки — выезд мастера как бронь на исполнителе.

Типовые сценарии

  • Записать клиента к конкретному мастеру с учётом его навыков и буфера.
  • Поставить регулярное занятие на весь сезон одним правилом.
  • Выдать оборудование в прокат под залог и принять обратно.
  • Поднять тариф на выходные, не трогая будни.