Управление интервалами доставки и расчет стоимости на InSales
Система блокировки временных интервалов доставки и автоматический расчет стоимости с сохранением бесплатной доставки при использовании промокодов.
Задача
Магазину нужна была система управления временными интервалами доставки. Покупатель выбирает удобное время, но некоторые интервалы должны блокироваться автоматически.
Вторая задача — правильно считать стоимость доставки при использовании промокодов. Если заказ на 3000₽ и доставка бесплатная, то при применении промокода на 500₽ доставка должна оставаться бесплатной.
Управление интервалами доставки
Настраиваемая блокировка
В админке можно настроить время блокировки для каждого интервала. Например, интервал "10:00-12:00" блокируется за 2 часа до начала. Если сейчас 8:00 — интервал доступен. Если 8:30 — уже заблокирован.
Автоматическая блокировка
Система проверяет время в реальном времени. Когда покупатель открывает страницу оформления заказа, недоступные интервалы автоматически скрываются или помечаются как недоступные.
Не нужно перезагружать страницу. Если интервал стал недоступен, пока покупатель заполнял форму, система покажет предупреждение и предложит выбрать другое время.
Индивидуальные настройки
Для каждого интервала можно задать:
- Время блокировки (за сколько часов до начала)
- Дни недели, когда интервал доступен
- Максимальное количество заказов на интервал
- Стоимость доставки (может отличаться для разных интервалов)
Расчет стоимости доставки
Проблема с промокодами
По умолчанию InSales считает стоимость доставки после применения скидки. Если бесплатная доставка при заказе от 3000₽, а покупатель применил промокод на 500₽, сумма становится 2500₽ и появляется стоимость доставки.
Это неправильно. Покупатель набрал нужную сумму, получил право на бесплатную доставку, а потом его наказывают за использование промокода.
Как исправили
Система запоминает сумму заказа до применения промокода. Если эта сумма дает право на бесплатную доставку, то доставка остается бесплатной, даже если после промокода сумма стала меньше.
Пример расчета
- • Товары: 3000₽
- • Условие: бесплатная доставка от 3000₽
- • Промокод: -500₽
- • Итого товары: 2500₽
- • Доставка: 0₽ (была бесплатной до промокода)
- • Всего к оплате: 2500₽
Учет разных скидок
Логика работает для разных типов скидок:
- Промокоды
- Скидки по клиентским группам
- Акции на товары
- Скидки на категории
Техническая реализация
Liquid + JavaScript
Используем Liquid-шаблоны для вывода доступных интервалов и JavaScript для проверки условий в реальном времени.
Дополнительные методы доставки
Создали несколько методов доставки с разной логикой расчета стоимости. Система автоматически выбирает правильный метод в зависимости от условий заказа.
Сохранение данных
Выбранное время доставки сохраняется в дополнительных полях заказа. Менеджер видит эту информацию в админке и может планировать доставки.
Интеграция с уведомлениями
Информация о выбранном времени доставки автоматически попадает в письма клиенту и менеджеру. Не нужно вручную копировать данные.
Результат
Магазин получил гибкую систему управления доставкой. Можно настраивать интервалы без программиста — все параметры меняются через админку.
Бесплатная доставка сохраняется при использовании промокодов. Это увеличивает конверсию — покупатели не отказываются от заказа из-за неожиданной стоимости доставки.
Интервалы блокируются автоматически. Не нужно вручную следить за временем и отключать недоступные слоты.