MS: Расписание доставки
Описание
Модуль ms_delivery_schedule добавляет график доступности способов доставки и позволяет покупателям выбрать дату доставки при оформлении заказа. Модуль позволяет настроить расписание работы доставки по дням недели с указанием временных интервалов.
Основные возможности
- Расписание доставки: Настройка расписания работы доставки по дням недели с указанием временных интервалов
- Выбор даты доставки: Покупатели могут выбрать желаемую дату доставки при оформлении заказа
- Ограничение доступных дат: Настройка ограничений по количеству дней вперед и времени до начала доставки
- Множественные временные интервалы: Поддержка нескольких временных интервалов для одного дня недели
- Отображение в заказе: Информация о выбранной дате и времени доставки сохраняется в заказе
Как работает модуль
Модуль использует следующие механизмы:
- Хранение расписания (
hooks.func.php):
- Расписание хранится в сериализованном виде в поле
scheduleтаблицыshippings - Структура:
[день_недели] => [временные_интервалы], где день недели: 0-6 (0=воскресенье, 1=понедельник, ..., 6=суббота) - Поддерживает множественные временные интервалы для одного дня
- Сериализация расписания (
hooks.func.php):
- Функция
fn_ms_delivery_schedule_update_shipping()сериализует расписание перед сохранением - Поддерживает новую структуру с множественными интервалами и старую структуру (для обратной совместимости)
- Преобразует дни недели: 1-7 (из формы) → 0-6 (в базе данных), где 7 → 0 (воскресенье)
- Десериализация расписания (
hooks.func.php):
- Функция
fn_ms_delivery_schedule_get_shipping_info_after_select()десериализует расписание после получения из базы данных - Преобразует дни недели обратно: 0-6 → 1-7 для отображения в форме
- Разворачивает множественные временные интервалы для отображения
- Контроллер выбора даты (
controllers/frontend/checkout.post.php):
- Обрабатывает выбор даты доставки покупателем
- Сохраняет выбранную дату и время в сессию корзины
- Определяет день недели выбранной даты и загружает доступные временные интервалы
- Отображение на странице оформления (
controllers/frontend/checkout.post.php):
- Режим
checkoutпередает расписания доставки в шаблон - Включает информацию о минимальном времени до начала доставки и ограничении по дням
- Миграции базы данных: При установке модуль выполняет миграции для добавления полей
schedule,schedule_time,schedule_daysв таблицу способов доставки.
- Сохранение в заказе: Выбранная дата и время доставки сохраняются в таблице
ms_delivery_schedule_orders_timeдля каждого поставщика отдельно.
Где находится функциональность
- Административная панель:
- Настройки способов доставки с разделом "MS: Расписание доставки"
- Настройка расписания по дням недели
- Настройка ограничений (время до начала доставки, ограничение по дням)
- Отображение выбранной даты и времени доставки в заказе
- Витрина:
- Страница оформления заказа с календарем выбора даты доставки
- Отображение доступных временных интервалов для выбранной даты
Настройки способа доставки
- MS: Расписание доставки: Раздел настроек расписания
- Доступность в часах (
schedule_time): Количество часов до крайнего времени доставки, чтобы день был доступен для заказа - Ограничение в днях (
schedule_days): Количество дней вперед, на которое ограничивается календарь доставки - Расписание по дням недели: Настройка временных интервалов для каждого дня недели (например, "09:00 - 18:00")
- Отображать дату при оформлении заказа (
show_date_in_checkout): Показывать ли поле выбора даты - Отображать время при оформлении заказа (
show_time_in_checkout): Показывать ли поле выбора времени
Технические детали
- Модуль автоматически устанавливается в мультивендор и Ultimate редакции CS-Cart
- При установке выполняет миграции для добавления полей в таблицу способов доставки
- Создает таблицу
ms_delivery_schedule_orders_timeдля хранения выбранных дат и времени доставки - Поддерживает множественные временные интервалы для одного дня недели
- Интегрируется с модулем
suppliersдля работы с несколькими поставщиками в одном заказе
- Store Builder
- Store Builder Ultimate
- Multi-Vendor
- Multi-Vendor Plus
- Multi-Vendor Ultimate
- Владельцам
- Покупателям
- English
- Русский
- 4.19.X
- 4.18.X
- 4.17.X
- 4.16.X
- 4.15.X
- 4.14.X
- 4.13.X
- 4.12.X
- 4.11.X
- 4.10.X
Установка модуля
После скачивания модуля, его установка производится штатными средствами CS-Cart на странице Панель администратора → Модули → Управление модулями → Загрузить и установить модуль (+).
Для версии CS-Cart более 4.13.1 Панель администратора → Модули → Управление модулями → Кнопка Шестеренка → Ручная установка.
Настройки модуля
Через панель администрирования: Администрирование → Доставки и налоги → Способы доставки, выбрать нужный способ доставки и прейти на вкладку [MS: Расписание доставки].
Настраиваемые параметры:
- Доступность в часах – указывает, сколько часов должно оставаться до крайнего времени доставки, чтобы день был доступен для заказа. Например, указана настройка 48 часов, это означает, что в течение указанных часов до ближайшего дня доставки, оформить заказ будет нельзя. Доступные дни заказа будут не ранее 48 часов с момента оформления заказа.
- Ограничение в днях – указывает, на сколько дней вперед ограничить доставку заказов. Например, 15 – доставка может быть заказана на период в ближайшие 15 дней, далее дни доставки в календаре не доступны.
- Часы доставки на каждый день недели – на каждый день доставки могут быть указаны интервалы доставки в часах. Если доставки в этот день нет, то поле не заполняется.
Отображение календаря доставки для клиента
На странице оформления заказа после способа доставки выводится поля с календарем и временем, где подсвечены доступные дни и время для доставки.
Отображение календаря для Администратора
Для администратора дата доставки отображается внизу на странице заказа.
**v1.5.0** [+] Добавлена возможность создавать несколько диапазонов времени на каждый день недели **v1.4.0** от 19.01.2026 [*] Приведены лицензирование, шаблоны и аннотации к стандарту **v1.3.3** [\*] Не сразу обновлялось поле времени после выбора даты, исправлено. **v1.3.2** от 14.08.2025 [\*] Настройки отображения полей даты и времени на витрине перенесены из настроек модуля в настройки доставки **v1.3.1** от 09.12.2024 [!] Изменен хук checkout_place_orders_pre_route на place_order_post (дата не сохранялась в бд при редиректе с чекаута) **v1.3.0** от 06.11.2024 [+] Добавлена совместимость с мультивендором и модулем "Поставщики" [+] Расширен возврат функции get_order_info (показывает дату для каждого поставщика) [\*] Стандартизация языковых переменных [!] Исправлена ошибка при вводе и сохранении данных во вкладке MS: Расписание доставки [!] Исправлены различные ошибки js, частично переписаны функции **v1.2.1** от 29.08.2023 [\*] Стандартизация языковых переменных [\*] Изменение иконки модуля **v1.2.0** от 14.08.2023 [\*] Добавление информации о времени доставки в заказах [\*] Стандартизация модуля [\*] Стандартизация логотипа компании [+] Добавлена иконка модуля [\*] Изменены короткие теги <? на обычные <?php **v1.1.0** от 01.07.2023 [+] Лицензирование и обновление модуля [\*] Изменен CHANGELOG.md [!] Способы доставки: Нельзя выбрать время в каждый день недели, исправлено [!] Способы доставки: Нельзя оставить время пустым полем, если не работает в определенные дни, исправлено [-] README.md, удален **v1.0.1** от 08.12.2020 [!] Исправлена ошибка js **v1.0.0** от 12.11.2020 [+] Первое издание *** [+] Добавлено [-] Удалено [\*] Изменено [!] Исправлена ошибка