Module features and functionality
Customer date selection
- List of available delivery dates. The customer chooses from days that match the store calendar, instead of entering any date in the order notes.
- Date with or without time slots. You can accept just the date or the date together with a slot such as 09:00–12:00. If you configure slots, saving the preference requires selecting one of them.
- Optional date selection. The customer can place an order without a preference. After starting to change the selection in the standard delivery step, it must be saved or removed before proceeding further.
- Save, change, and remove preferences. The form provides separate buttons for saving, removing, and refreshing available dates, and displays a message about the result of the operation.
- Checking whether the selection is still valid. The server verifies the date, slot, and whether the selected carrier is allowed to handle the date. Time slots of the current day that have already started are not available for a new save.
- Form adapted to small screens. Native selection fields, labels, and status messages support keyboard and touch device input. Saving the preference requires JavaScript to be enabled.
Calendar settings in the store
- Minimum preparation time. You define the lead time required before the preferred delivery and choose whether it is counted in calendar days or available delivery days.
- Days of the week and exceptions. You indicate the days on which you accept delivery preferences and exclude specific dates, for example holidays, vacation, or a fulfilment break.
- Cut-off time. From the configured time, the module adds one preparation day in the selected mode, which makes it possible to account for orders placed later in the day.
- Date selection range. You decide how far into the future the customer can indicate a date. All calculations refer to the time zone set in the store.
- List of supported carriers. You can make date selection available only for specific delivery methods. Leaving the list empty includes all carriers available for the given cart.
- Separate configuration in multistore. Each store can have its own days, times, and exceptions. You save the settings in the context of a specific store.
Handling saved dates
- Preference assigned to the order. When the order is created, the module saves a copy of the date and slot linked to the order and its corresponding carrier.
- Preview for both sides. The date is displayed on the order page in the administration panel, on the order confirmation page, and in the customer's order details.
- List of upcoming dates. The panel shows up to 30 nearest orders with a saved date falling today or later, together with the slot, current status, and a link to the order.
- Calendar operation preview. Before making dates available to customers, you can check up to 10 nearest available dates calculated from the saved settings.
Scope of available settings
| Setting | Available values and rules |
|---|---|
| Preparation time | From 0 to 60 days; calendar counting or counting by available delivery days. |
| Future date range | From 1 to 365 calendar days from today, including the end date. The configured number of days cannot be less than the preparation time. |
| Days of the week | Any selection from Monday to Sunday; at least one day is required. |
| Excluded dates | Up to 366 specific dates in YYYY-MM-DD format, entered one per line. Holidays are added manually. |
| Cut-off time | Optional time in HH:MM format. Reaching or exceeding it increases the required preparation time by one day. |
| Time slots | Up to 48 slots shared across available days, for example 09:00-12:00 and 12:00-16:00. Slots may touch, but they cannot overlap or cross midnight. |
| Carriers | All or selected delivery methods. Within one store, one shared calendar applies to the carriers covered by it. |
How does the module calculate available delivery dates?
Today is day zero, and positive preparation time starts being counted from tomorrow. In calendar mode, every following day is included in the preparation time. In available delivery days mode, only the selected days of the week count, reduced by the entered exceptions. Regardless of the mode, the customer can indicate only a day on which the store allows delivery.
Example: the customer selects a date on Friday before the cut-off time, the store requires two preparation days, and delivers from Monday to Friday. When counting available delivery days, the first date will be Tuesday. Excluding the nearest Monday will move that date to Wednesday. When counting calendar days, the two days will pass on Sunday, so if there are no other exclusions, the first available date will fall on Monday. The example assumes a sufficiently long future date range.
Same-day delivery may be available with zero preparation time, an allowed day, and no block resulting from the cut-off time. If you use time slots, at least one slot that has not yet started must remain available. Excluded days and the cut-off time do not extend the configured date range, so some combinations of settings may result in an empty list of dates.
Administration panel and benefits in daily operations
The module panel contains a green header with the PD logo, version number, and configuration indicators. Below it are three tabs: Calendar preview, Configuration, and Upcoming dates. The preview shows the store, time zone, and nearest dates, the form is used to set the rules, and the date list leads to the relevant orders.
For the customer, the benefit is the ability to provide a preference in an organised form during checkout. For the store staff, it is access to the same date and slot directly on the order, as well as a summary of the nearest requests. Limiting the list to days that match the settings helps collect preferences that take delivery organisation and preparation time into account.
Example use cases
- Florist with own transport: selection of the preferred order delivery date and one of the defined delivery slots.
- Catering or bakery: accepting preferences with preparation time, delivery days, and cut-off time taken into account.
- Furniture store with own transport: making dates available on selected days of the week matching trip organisation.
- In-store pickup: collecting the preferred pickup day and time after limiting the module to the carrier representing store pickup.
These are examples of using the module's shared settings. The store arranges the fulfilment of the indicated delivery or pickup with the customer outside the module.
Scope of operation and compatibility
PD Delivery Dates Pro saves one preference for the entire cart with one address and one carrier. It does not support separate dates for products or split deliveries between multiple addresses or carriers. The form is not displayed for an empty cart or an order containing only virtual products.
The module does not limit the number of orders per day or slot, does not confirm courier availability, and does not send automatic e-mail or SMS messages with the date. It does not change delivery costs, does not plan routes, and does not provide editing of the date for an already created order. The list of upcoming dates is for preview purposes and is not a booking calendar with export to external services.
Module version 2.0.0 is intended for PrestaShop 1.7, 8, and 9. The code remains syntactically compatible with PHP 7.0–8.5, although the PHP version must match the requirements of the PrestaShop version in use. Date selection uses the standard display location next to carriers; a custom theme or one-page checkout requires integration to be checked in the specific store.