Переходящая бронь в CRM: Как считать цену на стыке сезонов
В этом видео я покажу, как настроить точный и справедливый расчет стоимости, если период аренды или проживания выпадает на стык разных сезонов (например, дешевого майского и дорогого летнего). Мы разберем:
- Как превратить общий период сделки в список отдельных дней (функция DATE_SEQUENCE);
- Использование функции MAP для проверки и назначения тарифа на каждый конкретный день;
- Вычисление среднего сезонного коэффициента для всего заказа (функция AVG);
- Как добиться идеальной точности в итоговой стоимости, чтобы не потерять прибыль и не обсчитать клиента.
Стык сезонов в аренде: один тариф за весь период — либо теряем деньги, либо клиент переплачивает
Привет, я Илья, основатель daocrm.
В прошлом видео мы научились применять сезонный коэффициент в зависимости от даты. Лето — высокий коэффициент, зима — базовый. Но что делать, если аренда попадает на стык сезонов?
Представьте: клиент берет машину 20 мая (когда тариф еще дешевый), а возвращает 8 июня (когда уже действует дорогой). Считать весь период по дешевому тарифу? Мы теряем деньги. По дорогому? Клиент переплатит за майские дни и будет недоволен.
Правильный подход — посчитать каждый день по своему тарифу и взять среднее значение. Вручную это делать слишком долго. Давайте автоматизируем.
Нам нужно, чтобы daocrm сделала три действия:
- Превратила период аренды в список конкретных дней.
- Определила коэффициент сезонности для каждого дня.
- И вычислила средний коэффициент для всего периода.
Формула по шагам: DATE_SEQUENCE разбивает период на дни, MAP назначает тариф, AVG усредняет
Заходим в настройки поля "Сезонный коэффициент" и напишем формулу по шагам.
Шаг 1. Получаем даты начала и окончания.
let start = START_DATE( {{data_vydachi_vozvrata}} );
let end = END_DATE( {{data_vydachi_vozvrata}} );Так как "Дата выдачи/возврата" — это одно поле, мы сначала "достаем" из него начальную и конечную даты с помощью функций START_DATE и END_DATE.
Шаг 2. Считаем количество дней.
let days_count = DAYS_BETWEEN( start, end );Функция DAYS_BETWEEN вычисляет, сколько всего дней длится наша аренда. Кстати, если у вас есть льготный период при возврате, вы можете сразу указать его здесь третьим параметром в минутах. Например, написать 120 — что будет означать 2 часа бесплатно.
Шаг 3. Создаем список всех дней.
let days_list = DATE_SEQUENCE( start, days_count );Функция DATE_SEQUENCE берет дату начала, прибавляет к ней количество дней и составляет полный список дат. Теперь в переменной days_list у нас лежит каждый день аренды по отдельности: 20 мая, 21 мая и так далее.
Шаг 4. Определяем коэффициент для каждого дня.
let rates_list = MAP( days_list,
MATCH( it,
MD(6,1)..MD(9,1), 1.5, // Лето
1 // Обычный день
)
);Здесь происходит самое интересное. Нам нужно "пробежаться" по этому списку дат и проверить каждую из них. Мы используем функцию MAP, чтобы пройтись по списку. Слово it — это конкретная дата, которую daocrm проверяет прямо сейчас. Функция MATCH смотрит: если этот день (it) попадает в лето — ставит коэффициент 1.5. Если нет — оставляет единицу. В итоге мы получаем список готовых коэффициентов для каждого дня.
Шаг 5. Считаем среднее.
let average_rate = AVG( rates_list );Мы передаем наш список коэффициентов в функцию AVG. Она вычисляет среднее арифметическое. Но результат может содержать большое количество знаков после запятой. Поэтому сначала сохраним его в переменную average_rate.
Шаг 6. Округляем итог.
ROUND( average_rate, 2 )Функция ROUND берет наше среднее значение и оставляет только 2 знака после запятой.
В результате мы получим средний коэффициент сезонности, который учитывает и дешевые, и дорогие дни. Сохраняем.
Проверяем формулу на трёх периодах: весь май, весь июль и стык сезонов
Давайте проверим. Вернемся в сделку.
У нас в поле "Цена за сутки" установлено 5000 рублей. А общая стоимость считается автоматически: "Количество суток" умножить на "Цена за сутки" и на наш "Сезонный коэффициент".
- Ставим даты с 10 по 20 мая. Это обычные дни. Коэффициент равен 1.
- Меняем на 10 - 20 июля. Весь период попадает на лето. Коэффициент стал 1.5.
- А теперь стык сезонов: ставим с 20 мая по 8 июня. Большая часть дней в мае, но мы захватили пару дорогих летних дней. Смотрите: коэффициент стал 1.18. daocrm проверила каждый день и вывела средний тариф.
Точный тариф за каждый день: клиент не переплачивает, прибыль не теряется на стыке сезонов
Такая формула гарантирует идеальную точность: клиент не переплачивает, а вы не упускаете прибыль на стыке сезонов. daocrm просто применила верный тариф к каждому дню по отдельности, полностью избавив вас от сложных расчетов вручную.
В следующем видео мы разберем, как встроить кредитный калькулятор прямо в сделку, чтобы можно было сразу сообщать клиенту размер ежемесячного платежа.