CRM для автопроката и отелей: Как считать сутки и льготные часы
В этом видео я покажу, как автоматизировать расчет суток аренды и настроить гибкие правила для задержек возврата. Мы разберем, как избавить менеджеров от ручных вычислений и споров с клиентами из-за лишних часов. Мы разберем:
- Как считать разницу между датами с точностью до минуты (функция DAYS_BETWEEN);
- Настройку "льготного времени" (например, 2 часа бесплатно при опоздании);
- Создание сложной тарифной сетки: расчет половинок дней и полных суток;
- Применение функции MATCH для автоматического выбора тарифа в зависимости от времени задержки.
Споры из-за задержки возврата в аренде: нужна формула с учётом льготных часов
Привет, я Илья, основатель daocrm.
В любом арендном бизнесе — от проката автомобилей до отелей и посуточной аренды квартир — часто возникают споры из-за задержек. Кто-то разрешает опоздать на час-два бесплатно, а кто-то — сразу добавляет еще одни сутки.
В качестве примера возьмем автопрокат: допустим, клиент арендовал авто в 10:00, а вернул через день в 12:00. В этом видео я покажу, как настроить формулу, которая сама определит длительность аренды с учетом ваших "льготных часов".
DAYS_BETWEEN для диапазона дат: считаем количество суток аренды в автопрокате
В карточке сделки у нас есть два поля: "Дата выдачи/возврата" и "Количество суток". Во втором поле мы будем хранить итоговую длительность аренды в днях. Давайте зайдем в его настройки и соберем формулу.
Открываем вкладку "Функции", находим DAYS_BETWEEN (дней между) и нажимаем по ее названию, чтобы вставить в формулу. Этой функции нужно передать дату начала и дату конца.
Здесь же в функциях выбираем START_DATE, затем переходим на вкладку "Поля" и кликаем по нашему полю "Дата выдачи/возврата". Ставим запятую. Снова идем в функции, выбираем END_DATE и точно так же вставляем наше поле "Дата выдачи/возврата".
В итоге формула выглядит так:
DAYS_BETWEEN(
START_DATE( {{data_vydachi_vozvrata}} ),
END_DATE( {{data_vydachi_vozvrata}} )
)Сохраняем. Заходим в сделку.
Укажем в поле "Дата выдачи/возврата": с 20-го числа 10:00 по 22-е число 10:00. В поле "Количество суток" получилось 2. Всё верно.
Но смотрите, что будет, если я изменю время возврата всего на одну минуту — на 10:01. Функция DAYS_BETWEEN тут же округлит результат в большую сторону, и мы получим 3 суток. Согласитесь, в реальном бизнесе это выглядит странно: вряд ли вы захотите брать оплату за целые сутки из-за одной лишней минуты. Изменим обратно на 10:00.
Третий параметр DAYS_BETWEEN: задаём льготный период в минутах без доп. сутки
Вернемся в настройки поля "Количество суток".
Обычно в аренде всегда есть "льготный час" или два, когда задержка не считается нарушением. Специально для таких случаев мы добавили в функцию DAYS_BETWEEN третий параметр — льготный период в минутах.
Давайте после даты окончания поставим запятую и передадим туда число 120 — то есть 2 часа бесплатно.
DAYS_BETWEEN(
START_DATE( {{data_vydachi_vozvrata}} ),
END_DATE( {{data_vydachi_vozvrata}} ),
120 // 2 часа бесплатно
)Сохраняем. Вернемся в сделку.
Давайте проверим. Ставим возврат на 12:00 — то есть опоздание ровно на два часа. Смотрите: daocrm по-прежнему считает это как 2 суток. Льготный период сработал.
Но стоит клиенту задержаться хотя бы на минуту дольше, например, вернуть машину в 12:01 — и формула тут же переключится на 3 дня. Теперь расчет учитывает льготное время, и daocrm сама понимает, когда нужно добавить еще одни сутки.
Тарифная сетка задержки через MATCH: бесплатно, полсуток или полные сутки
А теперь задача еще интереснее. Разберем реальный пример нашего клиента из автопроката. У них условия задержки возврата устроены сложнее:
- Опоздание до 4 часов — бесплатно.
- От 4 до 12 часов — считается как половина суток.
- Больше 12 часов — как полные сутки.
Для такой логики одной функции уже недостаточно. Нам нужно вычислить точное количество лишних часов, а затем применить к ним тарифную сетку.
Давайте напишем новую формулу шаг за шагом.
Шаг 1. Считаем, сколько всего часов длилась аренда.
let hours = HOURS_BETWEEN(
START_DATE( {{data_vydachi_vozvrata}} ),
END_DATE( {{data_vydachi_vozvrata}} )
);Функция HOURS_BETWEEN берет начало и конец нашего периода и вычисляет длительность в часах. Полученный результат мы сохранили под именем hours, чтобы использовать его в следующих шагах.
Шаг 2. Выделяем полные сутки.
let full_days = ROUND_DOWN( hours / 24 );Делим общее количество часов на 24. Функция ROUND_DOWN отбрасывает дробную часть, чтобы мы получили количество полных суток без учета опозданий.
Шаг 3. Считаем "хвостик" — сколько часов осталось сверх полных суток.
let hours_within_day = MOD( hours, 24 );Функция MOD (остаток от деления) как раз возвращает нам этот "хвостик". Например, если клиент пользовался машиной 27 часов, функция вернет нам 3 часа.
Шаг 4. Применяем тарифную сетку.
MATCH( hours_within_day,
0..=4, full_days, // До 4 часов: берем только полные дни
4..=12, full_days + 0.5, // До 12 часов: добавляем половинку
full_days + 1 // Иначе: добавляем целые сутки
)Используем функцию MATCH, чтобы сравнить наш "хвостик" с тарифами. Посмотрите, как легко здесь читается логика:
- Если остаток от 0 до 4 часов включительно — результат равен полным суткам.
- Если от 4 до 12 включительно — прибавляем половинку.
- Во всех остальных случаях — то есть когда опоздание больше 12 часов — добавляем к итогу единицу.
Обратите внимание на знак "равно" после двух точек. Он означает "включительно". То есть, если задержка составит ровно 4 часа, daocrm всё равно посчитает это по первому правилу. Если же вы хотите, чтобы при задержке ровно в 4 часа срабатывало уже второе правило — просто уберите этот знак "равно".
Сохраним и вернемся в сделку.
- Ставим задержку 3 часа. Результат — 2 дня. Всё верно, это в пределах бесплатного лимита.
- Ставим задержку 5 часов. Результат — 2.5 дня. daocrm сама добавила полдня.
- Ставим задержку 13 часов. Результат — 3 дня. Теперь это считается как полные сутки.
Настройте любую сетку тарифов через MATCH
Теперь вам больше не нужно держать эти правила в голове — daocrm всё посчитает за вас. Вы можете настроить любую сетку тарифов, используя функцию MATCH.
В следующем видео мы научим daocrm работать с сезонными ценами. Разберем, как автоматически добавлять наценку на летний период, чтобы программа сама считала итоговую стоимость в зависимости от даты заказа.