M cenaly.ru
🏨 Отель и запись

🏨 Отель и PMS

Номера и тарифы, заселение, фолио, room service по QR и заявки гостей

Документация

Отель: номера, PMS и гостевой сервис

Вертикаль «отель» превращает cenaly.ru в мини-PMS поверх того же движка заказов, схемы зала и броней, что и у ресторана: этажи вместо залов, номера и кровати вместо столов, фолио вместо разового чека. Это не отдельный продукт, а профиль настроек локации — при типе заведения «отель» админ-панель сама переключает терминологию и открывает нужные разделы.

Открыть: Админ-панель → Номера (тот же раздел, что «Схема зала» у ресторана — admin.cenaly.ru/tables, для отеля переименован). Раздел открывается в редакторе плана; рабочий борд номеров включается кнопкой «🛏️ Номера» в шапке — ею же переключаются обратно к схеме. Рядом живут кнопки «Типы номеров», «Тарифы», «🔌 PMS» и — у российских локаций, если не отключено расширение «Миграционный учёт», — «🛂 Миграционный учёт».


Этажи и номера#

Редактор схемы работает как обычно (Схема зала), только залы называются этажами, а вместо столов — элементы «Номер» и «Кровать» (для хостелов и общих спален). У каждого номера — подпись (нумерация с 101), и, как у стола, можно привязать QR-код камерой.

Заводить номера по одному не обязательно — кнопка «+ Добавить номера» открывает форму массового создания: диапазон (например, 201–230, максимум 500 номеров за раз), необязательный префикс, живой предпросчёт «будет создано N · этажей M», строка с номерами, которые уже существуют и будут пропущены. Тот же шаг доступен прямо в мастере онбординга при выборе вертикали «отель».

QR на номер привязывается кнопкой «Создать QR и привязать» в карточке номера, а массово — кнопкой «Создать QR для всех без кода (N)», которая проходит по всем номерам локации сразу. Печатать можно поштучно (SVG из карточки) или всё разом — листами A4.


Типы номеров и тарифы#

Кнопка «Типы номеров» открывает справочник: название (Standard/Deluxe/…), базовый тариф за ночь и вместимость. Тип назначается номеру или кровати в панели свойств на схеме — тариф оттуда автоматически подставляется в форму заселения (можно переопределить вручную на конкретном заезде).

Простейший уровень цен — сезонность: для типа номера или для всех номеров сразу задаются периоды с отдельной ценой.

Кто продаёт всерьёз, ведёт тарифные планы — отдельный менеджер рядом со справочником типов. В плане настраиваются питание (только номер, завтрак, полупансион, всё включено), производные тарифы (например, «завтрак = базовый +15 %»), цена по числу гостей с детскими возрастными корзинами и доп. местом, надбавки по дням недели, ограничения продажи (минимум и максимум ночей, окно бронирования, запрет заезда/выезда в определённые дни), политика отмены (гибкая, невозвратный, штраф в первую ночь, процент или фиксированная сумма), каналы продажи (все / только прямые / только OTA) и корпоративный код доступа. Там же — календарь цен и ограничений: цена и стоп-продажа на конкретные даты, массовая правка «тариф × период» и предпросмотр итоговой цены.

Цена ночи собирается по приоритету: календарь цен → производный тариф → собственная цена тарифного плана → сезон типа → сезон «для всех» → цена, зафиксированная при заселении → базовый тариф типа. Важно понимать две вещи: календарь сильнее договорной цены, введённой на ресепшне (отель, который ведёт календарь, ожидает именно этого), а у тарифного плана с собственной ценой сезоны не применяются вовсе — сезоны работают как запасной вариант для тех, кто планами не пользуется.

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


Заселение и выселение#

Борд номеров — рабочий экран ресепшна и службы уборки: карточка на каждый номер со статусом, балансом фолио, числом ночей, запросами гостя и кнопкой «Дозаказ», которая уводит в кассу с уже выбранным номером. Статус номера проходит по цепочке:

Статус Значение
Свободен готов к заселению
Занят гость проживает
Требует уборки после выезда, ждёт горничную
Уборка горничная убирает
Проверен убран и проверен, ждёт перевода в «Свободен»
Не работает выведен из эксплуатации (ремонт)

Будущие заезды статусом номера не отображаются — они живут бронями и видны на шахматке: так номер, забронированный на следующую неделю, сегодня остаётся продаваемым.

Заселение открывает форму: тарифный план и цена за ночь (предзаполнены из типа номера) и карточка гостя — телефон, e-mail, документ, гражданство, дата рождения, заметки. Дата выезда на этом шаге не требуется: мгновенное заселение открыто «до выселения», а даты заезда-выезда есть у брони. Если гость уже останавливался раньше (совпадение по телефону или e-mail), система показывает плашку «постоянный гость» и увеличивает счётчик визитов; в карточке гостя копятся теги, аллергии, предпочтения, заметки и число неявок, а по всей базе гостей работает поиск.

При заселении открывается фолио номера, и с этого момента заказы по комнатному QR становятся возможны.

Выселение закрывает фолио одним расчётом и переводит номер в «Требует уборки»; на доске задач смены при этом появляется задача «Уборка номера N после выезда». Обратите внимание: комнатный счёт закрывает именно ресепшн при выселении — с кассы его закрыть нельзя, кнопка закрытия у комнатных счетов не показывается.

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


Фолио и начисления#

Фолио — лицевой счёт номера, открывается при заселении и живёт до выезда:

  • каждую ночь автоматически начисляется плата за проживание — сервер проверяет отели раз в час и начисляет ночь в первый тик после 03:00 по времени локации, так что многодневное проживание копится само, без ручных действий (день заезда при этом не начисляется дважды);
  • начисляется туристический налог, если включён;
  • заказы, оформленные гостем из номера (room service), автоматически ложатся на фолио — привязка происходит на сервере в момент оформления заказа, сотруднику ничего вручную привязывать не нужно. Правило узкое и намеренное: на фолио попадают заказы, сделанные именно с комнатного QR-кода; пробитое на кассе, в киоске или пришедшее из агрегатора туда не уедет;
  • на кассе по счёту номера доступны ручные операции: начисление, сервисный сбор, скидка, депозит и перенос позиций между счетами;
  • баланс виден на карточке номера в борде и на кассе — в списке открытых счетов (в интерфейсе кассы это «счёт», термин «фолио» там не используется).

При выезде фолио закрывается одним расчётным сигналом со всеми начислениями и оплатой.

Если у отеля уже есть внешняя PMS, фолио можно не вести у нас: кнопка «🔌 PMS» переключает контур в режим внешней системы — с журналом начислений и статусами «проведено / сторно». Тогда «На счёт номера» уходит в вашу систему, а не в наш фолио.

Оговорка про адаптеры: сейчас в списке доступен только демонстрационный адаптер «Mock (демо)» — он нужен, чтобы проверить сам контур, поля подключения при нём не используются. Живые коннекторы к внешним PMS в разработке; переключаться на режим внешней системы на боевом отеле пока рано.


Room service — заказ гостя по QR#

Гость сканирует QR в номере и заказывает из меню так же, как за столиком в ресторане. Два серверных правила защищают от заказов «в никуда»:

  • заказ из незаселённого номера блокируется — если по QR номера ещё нет открытого заезда, заказ автоматически отменяется с причиной «номер не заселён», а гость видит предупреждение в чек-ауте ещё до отправки заказа;
  • при оформлении в занятом номере доступен способ оплаты «На счёт номера» — сумма добавляется к фолио и оплачивается при выезде вместе со всем проживанием; гость видит текст согласия с точной суммой и номером комнаты перед подтверждением.

Заявки гостя и панель приборки#

Помимо заказа еды у гостя есть кнопка сервисных заявок: полотенца, уборка, не беспокоить, побудка (с выбором времени), техническая проблема, другое. В отеле она занимает место кнопки вызова персонала — и, как и та, показывается только при включённом «вызове персонала» в настройках локации. Заявка подчиняется гейту по заселению: из свободного номера её не оформить.

На стороне персонала — блок «Запросы гостей» прямо в карточке номера на борде: счётчик активных заявок, список с типом, комментарием и временем побудки, действия «В работу» и «Готово». Обновления приходят в реальном времени.


«Мой счёт» у гостя#

В меню гостя (пункт настроек рядом с бронью и вызовом персонала) есть «Мой счёт» — гость видит список начислений (по убыванию времени) и оплат по своему фолио и итоговый баланс, без привязки к персоналу заведения. До заселения показывается пустое состояние («счёт появится после заселения»), после расчёта — отметка «Оплачено».


Брони, каналы продаж и отчёты#

Помимо мгновенного заселения у отеля есть полноценные брони с датами заезда/выезда — они видны на шахматке как отдельные полосы и переводятся в заезд одним действием на дату заезда. У брони есть источник (walk-in/админка, телефон, прямая от гостя, сайт, OTA), отмена с причиной и отметка «не приехал»; при накладке и слишком раннем заезде панель предупреждает.

Продавать можно не только конкретный номер, но и тип номера: такие брони живут неназначенными и держат квоту (сколько номеров этого типа продано на дату), а физический номер подбирается кнопкой назначения — вручную или автоматически. Блок неназначенных броней висит прямо над шахматкой, чтобы про них не забыли.

С сайта заведения гость может забронировать номер сам: выбрать даты и тариф, увидеть расчёт стоимости по сезонам и тарифному плану (с проверкой ограничений — минимума ночей, окна бронирования, стоп-продажи; максимум одной брони — 30 ночей) и получить код подтверждения. Сервер отвечает синхронно: либо подтверждает бронь и сразу закрепляет за ней свободный номер, либо честно отказывает с причиной («нет мест на эти даты», «недопустимые даты», «ограничение тарифа»). Ждать подтверждения персоналом гостю не нужно; предоплата на этом шаге не собирается. Если у локации подключён Telegram-бот, гость получает напоминания о заезде.

Каналы продаж (channel manager). Есть оба направления обмена с OTA:

  • Импорт iCal — в настройках номеров вставляется ссылка экспорта из Booking.com, Airbnb или другого сервиса; внешние брони автоматически блокируют эти даты у вас, синхронизация примерно каждые 15 минут, а спорные наложения собираются в список конфликтов «разберите вручную»;
  • Экспорт iCal — у каждого номера есть собственный фид (ical-*.ics), если включена публикация занятости: ссылку добавляют календарём на стороне канала;
  • Двусторонний канал-менеджер (через Channex.io) — цены, ограничения и свободные номера уезжают в каналы автоматически при каждом изменении, а брони приходят обратно (неназначенными, их распределяет ресепшн). В панели подключений настраивается соответствие «тип номера × тариф» внешним, есть журнал синхронизации и кнопка «Синхронизировать сейчас», плюс ночная полная пересинхронизация.

Канал-менеджер готов технически, но подключение к живым каналам (Booking.com и другим) требует партнёрского аккаунта Channex, которого у нас пока нет: контур работает на тестовой площадке провайдера. Для реальной блокировки дат в каналах пользуйтесь импортом и экспортом iCal — они работают в обе стороны и партнёрского аккаунта не требуют.

Письма гостю. Раз в сутки отель сам пишет двум группам гостей: тем, кто заезжает завтра (напоминание о заезде), и тем, кто выехал вчера («спасибо за визит»). Письмо уходит на языке брони, а если он не указан — на языке локации. Ничего настраивать не нужно, дубликатов не бывает: одному и тому же гостю по одной броне письмо уходит один раз.

Отчёты. На борде номеров есть вкладка отчётов за период: загрузка (Occupancy), средняя цена (ADR) и доход на номер (RevPAR), а также выручка всего и отдельно по еде и напиткам, число заказов и подневная таблица «занято номеров · проживание · заказы · итого» с разбивкой по валютам.


Миграционный учёт (Россия)#

Для российских гостиниц есть отдельный контур постановки иностранных гостей на миграционный учёт — кнопка «🛂 Миграционный учёт» на борде номеров. Запись заводится автоматически при заселении; в журнале видны сроки («подать до…», «просрочено») и статусы — подготовлено, подано, подтверждено, снято с учёта при выезде. Оттуда же печатаются формы уведомлений и выгружается CSV, а реквизиты принимающей стороны заполняются один раз в настройках.


Связанные разделы#


Частые вопросы#

Что если гость закажет из номера, в котором ещё никто не заселён?#

Заказ автоматически отменяется с пометкой «номер не заселён» — сервер проверяет статус заселения по каждому заказу с комнатного QR, независимо от того, что показывает клиент.

Как гость платит за room service — сразу или при выезде?#

На выбор: обычная оплата (наличные/карта на месте) или «На счёт номера» — тогда сумма попадает в фолио и оплачивается одним расчётом при выезде вместе со всем проживанием.

Можно ли синхронизировать календарь номера с Booking.com?#

Да, в обе стороны. Экспорт — iCal-ссылка номера, её добавляют календарём на стороне канала. Импорт — вставьте в настройках ссылку экспорта из Booking.com или Airbnb: внешние брони начнут блокировать даты у вас (обновление примерно каждые 15 минут). Это и есть рабочий сегодня путь. Двусторонний канал-менеджер (обмен ценами и остатками) написан, но ждёт партнёрского аккаунта у провайдера — пока он работает на тестовой площадке.

Что делает ночное начисление и можно ли его не ждать?#

Оно автоматически начисляет плату за прожитую ночь на фолио каждого заселённого номера — вручную запускать не нужно. Сервер проверяет отели раз в час и начисляет ночь сразу после 03:00 по времени вашей локации.

Пробивается ли при выселении фискальный чек?#

Нет. Выселение закрывает фолио расчётом и переводит номер в уборку; фискализация в этот путь не встроена, чек при необходимости пробивается отдельно на кассе.