Logo

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 работать с сезонными ценами. Разберем, как автоматически добавлять наценку на летний период, чтобы программа сама считала итоговую стоимость в зависимости от даты заказа.

4:13
Автоматизация расчетов в CRM: Написание формул
4:30
Ручная правка формул в CRM: Как совместить авторасчеты и ручной ввод
3:37
Перерасчет формул в CRM: Применение формул к существующим записям
2:47
Почему формула в CRM пустая: Как настроить значения по умолчанию
3:58
Автоматическая смена статуса в CRM при заполнении полей
1:53
Дата закрытия сделки в CRM: Как сохранять её автоматически