Gestion DLC & DLUO — Documentation
Installer et utiliser la gestion des lots DLC/DLUO : FEFO, promotions automatiques, lots périmés, cron et alertes.
Installation
Le module s’installe comme n’importe quel module PrestaShop, sans dépendance ni Composer.
- Dans votre back-office, ouvrez Modules → Gestionnaire de modules.
- Cliquez sur Installer un module et déposez le fichier
dfdlc-1.0.0.zip. - Une fois l’installation terminée, cliquez sur Configurer.
À l’installation, le module crée deux tables (lots et mouvements de stock), ajoute l’onglet Catalogue → Lots DLC/DLUO et enregistre quatre hooks : displayHeader, displayProductAdditionalInfo, actionValidateOrder et actionProductDelete.
Si l’onglet Lots DLC/DLUO n’apparaît pas immédiatement dans le menu Catalogue, videz le cache PrestaShop depuis Paramètres avancés → Performances, puis reconnectez-vous au back-office.
Comprendre DLC et DLUO
Le module distingue deux types de date, et cette distinction n’est pas cosmétique : elle détermine ce que le module s’autorise à faire automatiquement.
DLC — date limite de consommation
Mention « à consommer jusqu’au ». Elle concerne les denrées microbiologiquement périssables. Au-delà de cette date, le produit est réputé dangereux et sa commercialisation est interdite. Le module applique donc aux lots DLC les actions automatiques sur le stock et, si vous le souhaitez, la désactivation du produit.
DLUO / DDM — date de durabilité minimale
Mention « à consommer de préférence avant ». Elle signale une perte de qualité, pas un risque sanitaire. Le produit reste légalement vendable après cette date, sous réserve d’une information claire du client. Le module se limite donc à désactiver le lot échu : il ne retire jamais le stock et ne désactive jamais le produit sur une DLUO.
Choisissez le type de date avec attention à la création de chaque lot. C’est ce champ, et lui seul, qui déclenche ou non les actions automatiques sur le stock à l’expiration.
Configurer le module
La page de configuration regroupe l’ensemble des réglages, ainsi que l’URL de la tâche cron et un état rapide de vos lots.
Affichage en front-office
- Afficher la date sur la fiche produit : affiche la date du lot disponible le plus proche, avec la mention adaptée au type de date.
- Seuil du badge date courte (jours) : en dessous de ce nombre de jours restants, un badge « Date courte » apparaît à côté de la date. Valeur par défaut : 10 jours.
Promotions automatiques
- Activer les promotions automatiques : active ou coupe entièrement le mécanisme.
- Appliquer la remise à partir de (jours) : fenêtre avant la date limite dans laquelle un lot devient éligible. Valeur par défaut : 15 jours.
- Pourcentage de remise : taux appliqué, entre 1 et 90 %. Valeur par défaut : 30 %.
Traitement des lots périmés
Trois modes sont disponibles, du plus prudent au plus automatique :
- Désactiver le lot uniquement — aucune action sur le stock. À privilégier si vous préférez arbitrer chaque cas manuellement.
- Désactiver le lot et retirer sa quantité restante du stock — aligne immédiatement le stock PrestaShop sur la réalité de l’entrepôt. C’est le mode recommandé.
- Retirer le stock et désactiver le produit s’il ne reste aucun lot valide — évite la vente d’un article dont tout le stock est périmé.
Alertes
- Seuil d’alerte (jours avant expiration) : fenêtre de surveillance pour l’e-mail récapitulatif. Valeur par défaut : 30 jours.
- E-mail destinataire : laissez vide pour utiliser l’adresse de la boutique.
Créer et gérer les lots
Rendez-vous dans Catalogue → Lots DLC/DLUO. La liste affiche vos lots triés par date d’expiration croissante, avec un code couleur et le nombre de jours restants. Deux indicateurs en tête de page rappellent le nombre de lots périmés encore actifs et le nombre de lots proches de l’échéance.
Ajouter un lot
- Cliquez sur Ajouter un lot.
- Saisissez au moins deux caractères dans le champ Produit : la recherche propose les produits correspondants. Sélectionnez-en un.
- Si le produit a des déclinaisons, un second champ apparaît. Laissez « Toutes les déclinaisons » pour rattacher le lot au produit entier, ou choisissez une déclinaison précise.
- Renseignez le numéro de lot, le type de date, la date limite et la quantité reçue.
- La référence fournisseur et la note sont facultatives mais utiles en cas de rappel.
Vous pouvez mélanger les deux niveaux sur un même produit : quelques lots rattachés à une déclinaison précise et un lot générique au niveau produit. Le déstockage consomme d’abord les lots de la déclinaison commandée, puis les lots du produit.
Modifier ou supprimer un lot
L’édition permet d’ajuster la quantité (après un inventaire par exemple) ou de corriger une date. La suppression d’un lot retire également la règle de prix associée si une promotion automatique était en cours, ainsi que son historique de mouvements.
Exporter
Le bouton d’export de la liste génère un CSV de vos lots, filtres et tri appliqués compris. Pratique pour un contrôle qualité ou un inventaire.
Le déstockage FEFO
FEFO signifie First Expired, First Out : le lot dont la date est la plus proche sort en premier. Aucun réglage n’est nécessaire, le mécanisme s’applique automatiquement.
À la validation d’une commande, pour chaque ligne de produit, le module :
- rassemble les lots actifs du produit ayant encore une quantité disponible ;
- place en tête ceux rattachés à la déclinaison exactement commandée, puis ceux rattachés au produit ;
- trie ce sous-ensemble par date d’expiration croissante ;
- décompte la quantité commandée en remontant cette liste, lot après lot.
Exemple : une commande de 10 unités face à un lot de 4 (expirant le 12 août) et un lot de 8 (expirant le 3 octobre) consommera les 4 unités du premier lot, puis 6 unités du second. Les deux mouvements sont enregistrés séparément, avec la même commande d’origine.
Le déstockage FEFO est indépendant du stock PrestaShop, qui continue de fonctionner normalement. Le module tient la ventilation de ce stock en lots datés ; le stock PrestaShop reste la référence pour la disponibilité à la vente.
Promotions automatiques sur les dates courtes
Quand un lot entre dans la fenêtre configurée, le cron crée une règle de prix catalogue (une specific price PrestaShop standard) sur le produit :
- remise en pourcentage, au taux que vous avez défini ;
- date de début : le jour de création ;
- date de fin : la date de péremption du lot, à 23h59.
La promotion s’éteint donc d’elle-même à l’échéance, sans laisser de règle orpheline dans votre catalogue. Le module ne crée qu’une seule promotion à la fois par produit, même si plusieurs lots entrent simultanément dans la fenêtre.
Côté client, la remise s’affiche normalement sur la fiche produit, et le badge « Date courte » indique le pourcentage en cours.
La règle créée est une règle de prix catalogue standard, soumise aux mêmes mécanismes de priorité que vos autres règles. Si vous appliquez déjà des remises catalogue larges, vérifiez la cohérence des priorités avant d’activer les promotions automatiques.
Configurer la tâche cron
Le déstockage FEFO fonctionne sans cron, puisqu’il est déclenché par les commandes. En revanche, trois traitements nécessitent un appel quotidien : les promotions automatiques, le traitement des lots périmés et l’alerte e-mail.
L’URL sécurisée par jeton est affichée dans la page de configuration du module. Elle a la forme suivante :
https://votre-boutique.com/index.php?fc=module&module=dfdlc&controller=cron&token=VOTRE_JETON
Programmez un appel par jour, de préférence tôt le matin. Deux méthodes courantes :
- Cron de votre hébergeur : ajoutez une tâche quotidienne appelant l’URL avec
wgetoucurl. - Service externe : n’importe quel service de cron en ligne accepte cette URL.
La réponse est un JSON détaillant l’exécution :
{
"success": true,
"promos_applied": 3,
"expired": {
"lots_deactivated": 2,
"stock_deducted": 7,
"products_disabled": 0
},
"alerts_sent": 5
}
Ce format est directement exploitable dans un outil de supervision, ce qui évite de laisser l’automatisation tourner à l’aveugle.
Le jeton est généré aléatoirement à l’installation. Si vous pensez qu’il a fuité, réinstallez le module pour en générer un nouveau, et pensez à mettre à jour votre tâche planifiée.
Les alertes e-mail
À chaque exécution du cron, le module recherche les lots dont la date arrive dans la fenêtre d’alerte et qui n’ont pas encore été signalés. S’il en trouve, il envoie un e-mail récapitulatif unique listant, pour chaque lot : le numéro, le produit, le type de date, l’échéance et la quantité restante.
Chaque lot n’est signalé qu’une seule fois, grâce à un marqueur en base. Vous ne recevez donc pas le même rappel tous les jours.
Les modèles d’e-mail sont fournis en français et en anglais dans le dossier mails/ du module. Vous pouvez les personnaliser librement, ou en ajouter d’autres langues en dupliquant un dossier existant.
Affichage sur la fiche produit
Le module utilise le hook displayProductAdditionalInfo, présent dans les thèmes Classic, Hummingbird et la grande majorité des thèmes tiers. Le bloc affiche :
- la mention adaptée au type de date : « À consommer jusqu’au » pour une DLC, « À consommer de préférence avant » pour une DLUO ;
- la date du lot disponible le plus proche ;
- le badge « Date courte » si le seuil est franchi, avec le pourcentage de remise si une promotion est active.
Si le produit n’a aucun lot actif avec du stock et une date valide, rien ne s’affiche : aucun cadre vide n’apparaît sur la fiche.
Personnaliser l’affichage
Le rendu est isolé dans le template views/templates/hook/product-expiry.tpl et les styles dans views/css/front.css. Vous pouvez surcharger le template depuis votre thème pour ajuster la position ou la mise en forme, sans modifier le module.
Traçabilité et rappel de lot
Chaque sortie de stock est enregistrée dans la table des mouvements avec le lot concerné, la quantité et la commande à l’origine. Vous pouvez donc, à partir d’un numéro de lot, remonter la liste des commandes qui l’ont consommé.
C’est la base d’une procédure de rappel. Le module fournit la donnée brute ; la procédure de rappel elle-même (information des clients, gestion des retours, déclaration éventuelle aux autorités) relève de votre organisation qualité.
Questions fréquentes
Le module remplace-t-il le stock PrestaShop ?
Non, il le complète. Les quantités PrestaShop restent la référence pour la vente. Le module tient en parallèle la ventilation de ce stock en lots datés. En mode retrait du stock, il ajuste la quantité PrestaShop lorsqu’un lot DLC périmé est retiré, pour que les deux vues restent cohérentes.
Que se passe-t-il si mes lots ne couvrent pas tout mon stock ?
Rien de bloquant. Le déstockage FEFO ne consomme que ce qui est disponible dans les lots ; si les lots sont épuisés, la commande se poursuit normalement et seule la quantité PrestaShop est décomptée. À vous de compléter la saisie des lots à mesure des réceptions.
Puis-je saisir un lot avec une date déjà passée ?
Oui, mais il sera traité comme périmé à la prochaine exécution du cron. Pour l’historique, mieux vaut le saisir avec sa vraie date puis laisser le module faire son travail.
Le module est-il compatible multiboutique ?
Oui. Chaque lot est rattaché à la boutique dans laquelle il a été créé, et les retraits de stock sont appliqués sur cette boutique.
Que se passe-t-il à la désinstallation ?
Les deux tables sont supprimées, l’onglet d’administration est retiré et les hooks désenregistrés. Les lots et leur historique ne sont pas conservés : sauvegardez votre base si vous prévoyez une réinstallation.