Configuration de base des jours fériés
Bloquez les jours fériés, les fermetures de boutique ou toute période pendant laquelle votre entrepôt ne prépare ni n'expédie de commandes : le module repousse automatiquement toutes les estimations de livraison concernées, afin que vos clients voient toujours des dates exactes.
Disponible depuis la v4.0.0
Vue d'ensemble
Lorsque vous gérez une boutique, certains jours ne sont tout simplement pas des jours ouvrés : jours fériés nationaux, fermetures annuelles pour inventaire, congés de toute l'entreprise. Si le module n'en est pas informé, il les traite comme des jours de traitement normaux et affiche des estimations de livraison que votre équipe ne peut pas tenir.
La fonctionnalité Jours fériés (Holidays) vous permet de définir des périodes ponctuelles ou récurrentes et de les marquer comme non ouvrées pour la livraison. Lorsque le module calcule une date de livraison et qu'un jour férié tombe dans la fenêtre, il repousse la date estimée au-delà de ce jour férié : aucun ajustement manuel n'est nécessaire, et plus de réclamations de clients à cause de dates promises qui glissent.
Vous pouvez également choisir si un jour férié affecte la préparation (le moment où l'entrepôt emballe la commande), l'expédition (le moment où le transporteur la récupère), ou les deux. Et comme toutes les boutiques d'une installation multiboutique n'ont pas le même calendrier, chaque jour férié peut être activé ou désactivé indépendamment pour chaque boutique, sans avoir à le recréer.
Configuration
- Allez dans Modules > Gestionnaire de modules (Module Manager), trouvez Estimated Delivery et cliquez sur Configurer.
- Ouvrez l'onglet Jours fériés (Holidays).
- Remplissez le formulaire Ajouter un jour férié (Add Holiday) en haut de la page, puis cliquez sur Enregistrer.
Champs du formulaire Ajouter un jour férié
| Champ | Valeurs | Par défaut | Description |
|---|---|---|---|
| Nom du jour férié (Holiday Name) | Texte (obligatoire) | — | Un libellé pour votre propre référence, par exemple « Fermeture de Noël » ou « Jour férié ». Il n'est pas affiché aux clients. |
| Date de début (Start Date) | Date (obligatoire) | — | Le premier jour de la fermeture. |
| Date de fin (End Date) | Date (facultatif) | Identique à la date de début | Le dernier jour de la fermeture. Laissez vide pour un jour férié d'une seule journée. |
| Répétition annuelle (Yearly Repeat) | Activé / Désactivé | Désactivé | Lorsque cette option est activée, le jour férié se répète automatiquement chaque année aux mêmes dates du calendrier. Utile pour les jours fériés fixes. |
| Portée (Scope) | Les deux / Préparation uniquement / Expédition uniquement | Les deux | Détermine la partie du processus logistique affectée par le jour férié. Les deux bloque toute la fenêtre de livraison. Préparation uniquement retarde le moment où l'entrepôt traite la commande. Expédition uniquement retarde le moment où le transporteur la récupère. |
| Boutiques (Shops) | Sélection multiple (multiboutique uniquement) | Boutique courante | Les boutiques auxquelles le jour férié s'applique. Affiché uniquement si votre installation PrestaShop compte plus d'une boutique. |
Lorsque la Date de fin est laissée vide, le système la définit automatiquement égale à la Date de début, ce qui crée une fermeture d'une seule journée.
Le champ Portée vous permet de modéliser précisément des situations réelles. Par exemple, si votre entrepôt est fermé un jour férié mais qu'un transporteur continue de récupérer les commandes déjà emballées, réglez la portée sur Préparation uniquement afin que les envois déjà emballés ne soient pas retardés.
Gérer les jours fériés existants
La liste des jours fériés sous le formulaire affiche tous les jours fériés configurés. Pour chaque entrée, vous pouvez :
- Activer ou désactiver le statut — Activez ou désactivez le jour férié par boutique sans le supprimer. Cette bascule n'est pas destructive : le jour férié reste dans la liste et peut être réactivé à tout moment.
- Activer ou désactiver la répétition annuelle — Activez ou désactivez la récurrence d'un jour férié existant sans ressaisir les dates.
- Modifier — Recharge les valeurs actuelles du jour férié dans le formulaire pour que vous puissiez changer n'importe quel champ. Voir Modifier un jour férié ci-dessous.
- Supprimer — Supprime définitivement le jour férié et toutes ses associations de boutiques. Cette action est irréversible.
Modifier un jour férié
Chaque ligne de la liste des jours fériés comporte un bouton Modifier (icône en forme de crayon) dans la colonne Actions, à côté du bouton Supprimer. Un clic dessus recharge les valeurs enregistrées du jour férié dans le formulaire en haut de la page, afin que vous puissiez modifier n'importe quel détail sans supprimer puis recréer l'enregistrement.
Comment fonctionne la modification
- Cliquez sur le bouton Modifier (icône en forme de crayon) dans la colonne Actions du jour férié que vous souhaitez changer.
- Le titre du formulaire passe de « Ajouter un jour férié » (Add Holiday) à « Modifier le jour férié » (Edit Holiday) et le bouton d'envoi devient « Enregistrer les modifications » (Save Changes).
- Tous les champs sont préremplis avec les valeurs actuelles du jour férié : nom, date de début, date de fin, portée, réglage de répétition annuelle et (en mode multiboutique ou avancé) les boutiques, transporteurs et zones sélectionnés.
- Effectuez vos modifications et cliquez sur Enregistrer les modifications. L'enregistrement existant est mis à jour sur place : aucun doublon n'est créé.
- Pour abandonner la modification sans enregistrer, cliquez sur Annuler la modification (Cancel edit). Le formulaire repasse en mode Ajout avec tous les champs vidés.
Un clic sur Modifier fait défiler automatiquement la page jusqu'au formulaire. Vous n'avez pas besoin de remonter manuellement.
Dans les installations multiboutiques, les cases à cocher des boutiques en mode modification reflètent les boutiques pour lesquelles le jour férié est actuellement actif. Décocher une boutique puis enregistrer désactive le jour férié pour cette boutique : l'enregistrement de la boutique n'est pas supprimé, il est seulement mis à inactif.
Ce qui change lorsque vous enregistrez une modification
Les cinq champs principaux sont mis à jour sur la ligne existante : nom, date de début, date de fin, répétition annuelle et portée. Les associations de transporteurs et de zones sont également remplacées intégralement : les transporteurs ou zones que vous retirez sont effacés, et ceux que vous ajoutez sont enregistrés. Les associations de boutiques suivent la même logique de remplacement intégral.
Comme la mise à jour s'appuie sur la clé primaire de la ligne en base de données plutôt que sur la clé unique (date de début + date de fin + répétition + nom), vous pouvez modifier librement n'importe quelle combinaison de ces champs sans créer accidentellement un jour férié en double.
Fonctionnement
Calcul des dates et saut des jours fériés
Lorsque le module calcule une date de livraison, il avance à partir d'aujourd'hui en utilisant les jours de transit de votre transporteur et vos jours ouvrés configurés. Chaque fois que le calcul progressif tombe sur une date comprise dans la période d'un jour férié actif, l'algorithme avance au-delà de ce jour férié : il déplace la date estimée au lendemain de la fin du jour férié, puis continue de compter les jours de transit restants à partir de là.
Cela signifie que si un jour férié de trois jours tombe au milieu d'une fenêtre de livraison de cinq jours, l'estimation est repoussée de trois jours calendaires. Le client voit la date réelle, plus tardive, et non la date que le module aurait affichée si le jour férié n'existait pas.
Répétition annuelle
Les jours fériés à répétition annuelle sont développés en mémoire à l'exécution du module : les occurrences de l'année en cours et de l'année suivante sont générées automatiquement et traitées de la même manière que les jours fériés ponctuels lors de la vérification des dates. Aucune tâche cron ni ressaisie manuelle n'est nécessaire au changement d'année.
Activation par boutique
Chaque jour férié possède un indicateur d'activation par boutique, stocké séparément du jour férié lui-même. Désactiver un jour férié pour une boutique n'affecte pas les autres boutiques : les données du jour férié restent partagées, seule l'activation par boutique change. Cela facilite la tenue d'une liste centrale de jours fériés tout en activant ou désactivant chaque fermeture pour des boutiques situées dans différents pays ou régions.
Invalidation du cache
L'enregistrement d'un nouveau jour férié, la suppression d'un jour férié ou la bascule de l'indicateur de répétition annuelle vident automatiquement le cache des jours fériés et le cache des résultats pour les boutiques concernées. Vous n'avez pas besoin de vider manuellement le cache après avoir modifié des jours fériés.
Exemples d'utilisation
Exemple : jour férié national (un seul jour, chaque année)
Votre pays observe un jour férié national le 1er janvier de chaque année. Ajoutez un jour férié avec la Date de début 2025-01-01, laissez la Date de fin vide et activez la Répétition annuelle. Réglez la Portée sur Les deux. Enregistrez. Le module ignorera le 1er janvier dans les calculs de livraison chaque année, sans aucune autre action de votre part.
Exemple : fermeture estivale de l'entrepôt (plusieurs jours, ponctuelle)
Votre entrepôt ferme pendant deux semaines en août. Ajoutez un jour férié avec la Date de début 2025-08-04 et la Date de fin 2025-08-17. Laissez la Répétition annuelle désactivée, sauf si la fermeture revient exactement aux mêmes dates chaque année. Toute commande passée avant la fermeture et qui serait arrivée pendant ces dates affichera une estimation de livraison ajustée, tombant après le 17 août.
Exemple : le transporteur ne collecte plus, mais l'entrepôt continue d'emballer
Un transporteur ne collecte pas le 26 décembre, mais votre équipe est toujours à l'entrepôt pour emballer les commandes. Ajoutez un jour férié avec la Date de début 2025-12-26 et la Portée réglée sur Expédition uniquement. Le module comptera toujours le 26 décembre comme un jour de préparation, mais l'ignorera pour le décompte des jours de transit du transporteur, ce qui repousse la date d'arrivée estimée d'un jour sans affecter la date d'expédition.
Exemple : installation multiboutique avec des fermetures régionales
Vous gérez deux boutiques : une en France, une en Allemagne. Les jours fériés français ne s'appliquent pas à la boutique allemande. Ajoutez chaque jour férié et utilisez le sélecteur Boutiques pour l'attribuer uniquement à la boutique concernée. Les estimations de livraison de chaque boutique ne reflètent que les jours fériés applicables à son pays.
Remarques importantes
- Les jours fériés s'appliquent globalement à tous les transporteurs des boutiques sélectionnées, sauf si vous utilisez les options avancées de filtrage par transporteur ou par zone (disponibles en Mode Avancé). Dans la configuration de base, tous les transporteurs sont affectés de la même manière.
- Désactiver un jour férié (en le basculant sur inactif) est instantané et ne nécessite pas d'enregistrer le formulaire de configuration complet. La modification prend effet au prochain calcul de livraison après le rafraîchissement du cache.
- La suppression d'un jour férié est définitive. Si vous prévoyez de réutiliser les mêmes dates l'année prochaine, envisagez d'activer la Répétition annuelle plutôt que de supprimer puis de rajouter le jour férié.
- Dans une configuration multiboutique, l'enregistrement du jour férié est partagé, mais l'état actif est propre à chaque boutique. Si vous supprimez un jour férié, il est supprimé pour toutes les boutiques simultanément.
- Les fermetures fournisseur sont une fonctionnalité apparentée qui permet de bloquer des dates au niveau du fournisseur plutôt qu'au niveau de la boutique. Elles apparaissent dans une section distincte de l'onglet Jours fériés et sont décrites brièvement plus bas dans Fonctionnalités associées.
- Activer ou désactiver la répétition annuelle d'un jour férié existant vide immédiatement le cache des résultats ; la prochaine consultation de page recalculera donc les dates de livraison avec la nouvelle récurrence.
Dépannage
| Problème | Solution |
|---|---|
| Un jour férié a été enregistré mais les dates de livraison en front office l'ignorent toujours | Le cache sert peut-être un résultat antérieur au jour férié. Allez dans Performances > Vider tout le cache pour forcer un nouveau calcul à la prochaine consultation de page. |
| La bascule d'activation d'un jour férié est grisée ou ne répond pas | Vérifiez que vous consultez la bonne boutique dans le contexte du Back Office. Chaque boutique a son propre indicateur d'activation : changer de boutique active dans le sélecteur de boutique en haut à droite peut révéler l'état correct de la bascule. |
| La Date de fin est identique à la Date de début alors que vous attendiez une période | Si vous avez laissé la Date de fin vide, le système la définit automatiquement sur la Date de début. Saisissez explicitement la Date de fin pour créer une période de plusieurs jours. |
| Un jour férié à répétition annuelle s'affiche pour la mauvaise année | Les jours fériés à répétition annuelle sont développés pour l'année en cours et l'année suivante. Si vous consultez des estimations très proches de la fin de l'année, les deux occurrences doivent être visibles. Si aucune n'est appliquée, videz le cache et vérifiez que le jour férié est actif pour la boutique courante. |
| Après la suppression d'un jour férié, les dates de livraison reflètent toujours l'ancienne fermeture | Videz le cache depuis Performances > Vider tout le cache. La suppression vide automatiquement le cache des jours fériés, mais un cache de résultats périmé peut encore servir l'ancienne date calculée. Vider tout le cache force un recalcul complet. |
| Le bouton Modifier affiche un indicateur de chargement mais le formulaire ne se remplit pas | Le jour férié n'existe peut-être plus (supprimé dans un autre onglet ou par un autre administrateur). Actualisez la page pour recharger la liste des jours fériés et réessayez. |
| Après un clic sur Modifier, le formulaire se remplit mais l'enregistrement affiche « The holiday you are trying to edit no longer exists » | Une autre session a supprimé le jour férié entre le moment où vous avez cliqué sur Modifier et celui où vous avez cliqué sur Enregistrer les modifications. Cliquez sur Annuler la modification, actualisez la page et ajoutez de nouveau le jour férié. |
Foire aux questions
Puis-je modifier les dates ou le nom d'un jour férié déjà enregistré ?
Oui. Cliquez sur le bouton **Modifier** (icône en forme de crayon) dans la colonne Actions de la ligne du jour férié. Le formulaire se remplit avec les valeurs actuelles du jour férié, vous effectuez vos modifications, puis un clic sur **Enregistrer les modifications** met à jour l'enregistrement existant. Aucun doublon n'est créé et le cache est vidé automatiquement.
Puis-je désactiver temporairement un jour férié sans le supprimer ?
Oui. Utilisez la bascule d'activation dans la liste des jours fériés. Désactiver un jour férié le retire immédiatement du calcul de livraison sans supprimer l'enregistrement : vous pouvez le réactiver à tout moment.
La répétition annuelle fonctionne-t-elle pour les jours fériés de plusieurs jours, ou seulement pour un jour unique ?
Elle fonctionne pour n'importe quelle période. Si vous définissez un jour férié du 24 décembre au 2 janvier et activez la répétition annuelle, la période complète revient automatiquement chaque année. Les dates de début et de fin se décalent aux mêmes positions du calendrier pour l'année en cours et l'année suivante.
Que se passe-t-il si un jour férié chevauche la fin décembre et le début janvier ?
Le module gère correctement les périodes à cheval sur deux années. Un jour férié du 28 décembre au 3 janvier est enregistré tel que saisi et la vérification des dates couvre toute la période à travers le changement d'année.
Les jours fériés s'appliquent-ils à tous les transporteurs, ou puis-je les limiter à certains transporteurs ?
Dans la configuration de base, un jour férié s'applique à tous les transporteurs des boutiques sélectionnées. Si vous devez limiter un jour férié à certains transporteurs — par exemple un transporteur dont le dépôt est fermé alors que les autres restent ouverts — il faut utiliser les options de filtrage par transporteur disponibles dans la section des paramètres avancés des transporteurs.
Si j'ajoute un jour férié aujourd'hui, affectera-t-il immédiatement les estimations de livraison déjà en cache ?
Oui. L'enregistrement d'un nouveau jour férié déclenche automatiquement l'invalidation du cache pour les boutiques concernées. Les estimations de livraison de la prochaine consultation de page incluront le nouveau jour férié. Vous n'avez pas besoin de vider le cache manuellement.
Des boutiques différentes peuvent-elles avoir des jours fériés actifs différents même si elles partagent le même enregistrement de jour férié ?
Oui. L'enregistrement du jour férié est partagé (mêmes dates, même nom), mais l'indicateur d'activation est stocké par boutique. Vous pouvez activer un jour férié pour votre boutique française et le désactiver pour votre boutique allemande à partir de la même entrée de la liste.
Quelle est la différence entre la portée « Les deux », « Préparation uniquement » et « Expédition uniquement » ?
« Les deux » signifie que la date est non ouvrée pour l'ensemble du processus logistique : l'entrepôt n'emballe pas les commandes et le transporteur ne les récupère pas. « Préparation uniquement » signifie que votre entrepôt est fermé mais que les transporteurs peuvent encore récupérer les articles déjà emballés ; le module retarde la date d'expédition, mais pas nécessairement le décompte des jours de transit du transporteur. « Expédition uniquement » signifie que l'entrepôt est ouvert mais que le transporteur ne collecte pas ; l'expédition se déroule normalement, mais la remise au transporteur est retardée de la durée du jour férié.
Fonctionnalités associées
- Système de cache — Les jours fériés invalident automatiquement le cache lors de leur enregistrement ; découvrez quand vider manuellement le cache est utile.
- Générateur d'affichage — Contrôle comment et où les estimations de livraison s'affichent aux clients une fois les dates calculées.
- Modèles de messages — Personnalisez le texte affiché aux clients dans le widget de livraison, y compris le format des dates.