Wo WooCommerce Intermédiaire

DataFirefly Inventory Forecasting — Guide complet

Installer, configurer et exploiter la prévision de stock saisonnière pour WooCommerce : algorithme Holt-Winters multiplicatif, gestion multi-fournisseurs, bons de commande PDF natifs, alertes de rupture imminente, quatre tâches cron quotidiennes et REST API.

Mis à jour Version du module 1.0.0

Vue d’ensemble

DataFirefly Inventory Forecasting est un plugin WooCommerce de prévision de stock, de génération automatique de bons de commande fournisseur et d’alertes de rupture. Il transforme votre back-office WordPress en poste de pilotage supply chain, sans passer par un SaaS externe et sans frais par SKU.

Le plugin s’appuie sur un algorithme Holt-Winters multiplicatif qui décompose vos ventes historiques en deux composantes : une tendance estimée par régression linéaire sur une moyenne mobile de sept jours, et une saisonnalité calculée comme indice mensuel multiplicatif. Les prévisions à 30, 60 et 90 jours sont ensuite comparées au stock actuel pour produire un point de commande, une quantité de réapprovisionnement (tenant compte de la MOQ et de la taille de lot) et une estimation de date de rupture.

Positionnement. Inventory Forecasting est conçu comme une alternative auto-hébergée à Veeqo, Cin7 ou Lokad. Il vise les catalogues de 100 à quelques milliers de SKU, avec ou sans historique saisonnier stable.

Prérequis et installation

Prérequis techniques

  • WordPress 6.4 ou supérieur
  • WooCommerce 8.0 ou supérieur
  • PHP 8.1 ou supérieur
  • MySQL 5.7 ou MariaDB 10.3 minimum
  • WP-Cron activé (ou remplacé par un cron système déclenchant wp-cron.php)

Installation

  1. Téléchargez l’archive ZIP depuis votre compte client sur datafirefly.com.
  2. Dans WordPress, allez dans Extensions → Ajouter une extension → Téléverser une extension.
  3. Sélectionnez le ZIP puis cliquez sur Installer maintenant.
  4. Activez l’extension. À l’activation, le plugin crée sept tables préfixées wp_dfif_, déclare la compatibilité HPOS et planifie quatre tâches cron quotidiennes.

Vérification post-installation. Un nouveau menu Inventory Forecasting apparaît dans la sidebar admin, avec l’icône graphique. Ouvrez le tableau de bord pour vérifier que les compteurs KPI s’affichent bien à zéro.

Premier démarrage : reconstruire l’historique

Le plugin a besoin de connaître vos ventes passées pour calibrer la tendance et les indices saisonniers. À la première utilisation, cliquez sur Reconstruire l’historique depuis le tableau de bord. Cette action parcourt les commandes complétées de la fenêtre configurée (365 jours par défaut) et agrège les quantités vendues par produit et par jour dans la table wp_dfif_sales_daily.

Sur un catalogue de quelques centaines de produits et 12 mois d’historique, l’opération prend une à cinq minutes. Elle est paginée par blocs de 100 commandes et compatible HPOS.

Concepts fondamentaux

Tendance et saisonnalité

À chaque cycle de prévision, le plugin construit pour chaque produit une série journalière lissée par moyenne mobile de sept jours. Une régression linéaire sur cette série donne la tendance (pente et ordonnée à l’origine). Séparément, les indices saisonniers mensuels sont calculés comme le rapport entre les ventes de chaque mois calendaire et la moyenne annuelle, avec un plancher à 0,3 et un plafond à 3,0 pour absorber les valeurs aberrantes.

La prévision à l’horizon H jours combine ensuite tendance et indice du mois cible : ventes_prévues = ventes_moyennes × (1 + tendance × H) × indice_saisonnier.

Safety stock

Le safety stock est calculé selon la formule classique z × σ × √lead_time, où z est le quantile normal correspondant au niveau de service souhaité (1,645 pour 95 %, 2,326 pour 99 %), σ l’écart-type des ventes journalières et lead_time le délai de livraison du fournisseur en jours. Cette réserve absorbe les variations aléatoires de la demande pendant le réapprovisionnement.

Reorder point et reorder quantity

Le reorder point est le seuil de stock déclenchant une commande. Il vaut ventes_moyennes × lead_time + safety_stock. En pratique, dès que le stock actuel descend sous ce seuil, une commande doit être passée pour éviter la rupture.

Le reorder quantity est la quantité à commander. Elle est arrondie au multiple de la taille de lot (pack size), puis remontée à la MOQ (quantité minimale de commande du fournisseur) si nécessaire.

Niveau de confiance

Chaque prévision est accompagnée d’un score de confiance de 0 à 100 %, calculé heuristiquement selon la longueur de l’historique disponible, la régularité des ventes et la présence de saisonnalité marquée. Une confiance inférieure à 40 % s’affiche en rouge et bascule automatiquement sur une prévision naïve (moyenne mobile) plus prudente.

Gestion des fournisseurs

Créer un fournisseur

Depuis le menu Inventory Forecasting → Fournisseurs, cliquez sur Ajouter un fournisseur. Renseignez au minimum le nom et l’e-mail (utilisé pour l’envoi des bons de commande). Les champs facultatifs sont : contact, téléphone, adresse postale, devise de facturation et notes internes.

Associer un fournisseur à un produit

Sur la page d’édition d’un produit WooCommerce, une méta-boîte Fournisseurs Inventory Forecasting apparaît dans la colonne principale. Elle permet d’ajouter un ou plusieurs fournisseurs pour ce produit, chacun avec ses propres paramètres :

  • Prix d’achat hors taxes, utilisé sur la ligne de bon de commande
  • SKU fournisseur, souvent différent du SKU interne, imprimé sur le PDF
  • Délai de livraison en jours, entrant dans le calcul du reorder point
  • MOQ, quantité minimale exigée par le fournisseur
  • Taille de lot, incrément par lequel les quantités sont arrondies
  • Fournisseur principal, coche radio qui désigne le fournisseur retenu par la génération automatique des bons de commande

Multi-fournisseurs. Un même produit peut être associé à plusieurs fournisseurs, par exemple un principal moins cher et un secondaire de repli. Seul le principal est utilisé par la génération automatique, mais vous pouvez basculer manuellement sur un autre depuis la page produit.

Prévisions et horizons

La page Inventory Forecasting → Prévisions liste tous les produits avec, pour chacun, la prévision à l’horizon sélectionné, le reorder point, la quantité à commander, la date de rupture estimée et le niveau de confiance.

Filtres

  • Horizon : 30, 60 ou 90 jours (les trois sont calculés en parallèle par le cron)
  • Sévérité : critique (rupture sous 7 jours), warning (rupture sous 14 jours), normal
  • Recherche : par titre de produit ou SKU

Recalcul manuel

Le bouton Recalculer les prévisions du tableau de bord force un cycle immédiat sans attendre le cron de 2 h 30. Utile après un changement de paramètre (niveau de service, taille de fenêtre d’historique) ou après un import massif de commandes.

Bons de commande fournisseur

Cycle de vie d’un bon de commande

  1. Brouillon : créé mais non envoyé, éditable
  2. Envoyé : PDF généré et expédié au fournisseur par e-mail
  3. Partiellement reçu : au moins une ligne mais pas toutes les quantités reçues
  4. Reçu : toutes les quantités enregistrées
  5. Annulé : commande abandonnée avant réception

Génération manuelle

Depuis Inventory Forecasting → Bons de commande, le bouton Générer depuis les prévisions parcourt les produits sous reorder point, les groupe par fournisseur principal et crée un bon de commande en brouillon par fournisseur. Vous pouvez ensuite éditer les quantités, ajouter ou retirer des lignes, puis envoyer.

Génération automatique

Le cron de 4 h peut générer automatiquement les bons de commande, avec ou sans envoi immédiat. Cette option est désactivée par défaut. Une fois activée dans les réglages, deux modes sont possibles : création en brouillon (envoi manuel après validation) ou envoi immédiat.

Recommandation. Laissez l’envoi automatique désactivé pendant au moins deux semaines après l’installation. Vérifiez la pertinence des prévisions avant de faire confiance à l’automatisme complet, sinon vous risquez de commander trop tôt ou en trop grande quantité.

PDF natif

Le PDF est généré par un moteur PHP pur embarqué (police Helvetica, format A4, environ 250 lignes de code). Il inclut l’en-tête de votre société, les coordonnées du fournisseur, le tableau des lignes avec SKU fournisseur et prix d’achat, le total HT, et un pied de page personnalisable. Aucune dépendance à Dompdf, TCPDF ou mPDF n’est requise.

Réception de la marchandise

Sur la vue détail d’un bon de commande, chaque ligne dispose d’un champ Quantité reçue. Saisir la valeur reçue met à jour le stock WooCommerce du produit du delta par rapport à la valeur précédente. Cette logique évite les double-comptages si vous corrigez une réception a posteriori.

Alertes de rupture

Le plugin détecte quotidiennement quatre types de situations et attribue à chacune un niveau de sévérité.

Types d’alertes

  • IMMINENT : rupture prévue sous 7 jours (paramétrable), sévérité critique
  • WARNING : rupture prévue sous 14 jours (paramétrable), sévérité warning
  • OVERSTOCK : couverture stock supérieure à 180 jours, sévérité info
  • REORDER : stock passé sous le reorder point, sévérité warning

Cycle de vie

Une alerte est créée avec le statut active. Lors du cycle suivant, si la situation persiste, elle est marquée pending_recheck ; si elle a disparu, elle passe à resolved avec un horodatage. Ce mécanisme évite le spam d’alertes répétitives.

Notifications e-mail

Un digest quotidien est envoyé à l’adresse configurée dans les réglages, listant les alertes critiques et warning nouvelles. Le contenu de l’e-mail est un tableau HTML sobre, filtrable par sévérité.

Réglages

La page Inventory Forecasting → Réglages regroupe quatre sections.

Prévisions

  • Fenêtre d’historique : 365 jours par défaut. Plus la fenêtre est longue, plus la saisonnalité est robuste, mais le poids de la table sales_daily augmente.
  • Horizons de prévision : liste séparée par virgules, 30, 60, 90 par défaut. Vous pouvez ajouter par exemple 14 ou 180.
  • Niveau de service : 95 % par défaut. Traduit en z = 1,645 par inverse normale. Passez à 99 % (z = 2,326) pour du stock critique, à 90 % (z = 1,282) pour du non stratégique.

Alertes

  • Jours d’anticipation warning : 14 par défaut
  • Jours d’anticipation critique : 7 par défaut
  • E-mail destinataire du digest quotidien

Bons de commande

  • Génération automatique activée : décochée par défaut
  • Préfixe de numérotation : PO- par défaut, produit des identifiants comme PO-2026-00042
  • Devise : héritée de WooCommerce, surchargeable par fournisseur

Société

Coordonnées de votre entreprise imprimées sur l’en-tête des PDF de bons de commande : raison sociale, adresse, SIREN ou numéro de TVA, e-mail, téléphone, logo.

Tâches cron

Quatre tâches sont planifiées automatiquement à l’activation du plugin, sur le fuseau horaire du site.

  • 02:00Reconstruction de l’historique : agrège les commandes de la veille dans la table sales_daily. Léger, quelques secondes.
  • 02:30Calcul des prévisions : recalcule tendance, saisonnalité et reorder points. Plus lourd, une à cinq minutes selon le catalogue.
  • 03:00Détection des alertes : crée et résout les alertes selon les seuils. Rapide.
  • 04:00Génération automatique des bons de commande : ne s’exécute que si l’option est activée dans les réglages.

WP-Cron. Par défaut, WP-Cron ne s’exécute que sur un événement visiteur. Sur un site à faible trafic, cela peut retarder les tâches nocturnes. Configurez de préférence un cron système appelant wp-cron.php toutes les 15 minutes, ou désactivez WP-Cron dans wp-config.php et pilotez-le entièrement en cron système.

REST API

Le plugin expose plusieurs routes REST sous le namespace dfif/v1. Toutes exigent la capacité manage_woocommerce et le nonce WordPress wp_rest.

POST /wp-json/dfif/v1/run-forecast
POST /wp-json/dfif/v1/rebuild-history
POST /wp-json/dfif/v1/detect-alerts
POST /wp-json/dfif/v1/generate-pos
POST /wp-json/dfif/v1/send-po/{id}
POST /wp-json/dfif/v1/po/{id}/items/{item_id}/receive
GET  /wp-json/dfif/v1/stats

Ces routes sont utilisées en interne par les boutons du tableau de bord (via wp.apiFetch avec en-tête X-WP-Nonce) et peuvent également être appelées depuis n’importe quel client authentifié via cookies WordPress ou clés d’application.

Hooks WordPress

Les principales étapes du plugin émettent des actions et filtres que vous pouvez intercepter :

do_action('dfif_forecast_calculated', $product_id, $forecast_data);
do_action('dfif_purchase_order_created', $po_id, $supplier_id);
do_action('dfif_purchase_order_sent', $po_id);
do_action('dfif_alert_triggered', $alert_id, $alert_type);
apply_filters('dfif_reorder_qty', $qty, $product_id, $supplier_id);
apply_filters('dfif_pdf_company_info', $info);

Dépannage

Les prévisions restent à zéro

Vérifiez que la reconstruction d’historique a bien été exécutée et que la table sales_daily contient des lignes. Si vous n’avez pas de commandes complétées ou en cours de traitement dans la fenêtre configurée, le plugin ne peut rien prévoir. Vérifiez aussi que WooCommerce est bien activé.

Les prévisions semblent incohérentes

Deux causes fréquentes : un historique trop court (moins de 30 jours, le plugin bascule sur une prévision naïve) ou une saisonnalité extrême non représentative (Black Friday isolé). Regardez le niveau de confiance affiché : sous 40 %, la prévision doit être prise avec précaution.

Le PDF n’est pas généré

Vérifiez que le répertoire wp-content/uploads/dfif-po/ est accessible en écriture. Le plugin y dépose les PDF avant envoi. Un fichier .htaccess est déposé automatiquement pour empêcher l’accès public direct.

L’e-mail n’est pas envoyé

Le plugin utilise wp_mail, qui est parfois défaillant sur certains hébergeurs. Installez un plugin SMTP (WP Mail SMTP, FluentSMTP) et configurez un service de délivrabilité (Postmark, SendGrid, Mailjet, Brevo). Vérifiez aussi que l’e-mail du fournisseur est bien saisi et valide.

Le cron ne tourne pas

Utilisez le plugin WP Crontrol pour lister les hooks planifiés et voir leur prochaine exécution. Les quatre hooks sont préfixés dfif_. Si vous ne les voyez pas, désactivez et réactivez Inventory Forecasting.

Désinstallation

À la désactivation, les crons sont dé-planifiés mais les tables et données sont conservées. À la désinstallation complète via Extensions → Supprimer, deux comportements sont possibles selon l’option dfif_delete_data_on_uninstall dans les réglages :

  • Décochée par défaut : les tables sont conservées, vous pouvez réinstaller sans perdre l’historique.
  • Cochée : les sept tables et le répertoire wp-content/uploads/dfif-po/ sont supprimés.

FAQ

Puis-je utiliser le plugin sur un catalogue variable (variations de produit) ?

Oui. Les prévisions et les bons de commande fonctionnent au niveau de la variation individuelle. Chaque variation peut avoir ses propres fournisseurs et ses propres paramètres.

Le plugin est-il compatible multisite ?

Oui, mais chaque site du réseau gère son propre catalogue, ses propres fournisseurs et ses propres prévisions. Il n’y a pas de mutualisation cross-site.

Puis-je exporter les données ?

Toutes les tables sont accessibles via SQL standard. Un export CSV natif est prévu dans une version ultérieure. En attendant, un simple SELECT INTO OUTFILE ou un plugin comme WP All Export suffit.

Le plugin bloque-t-il l’admin si le cron n’a pas tourné ?

Non. Le plugin fonctionne toujours, simplement les prévisions affichées peuvent être datées de plusieurs jours. Un badge Dernier cron sur le tableau de bord indique la fraîcheur des données.

Comment se comporte le plugin sur un catalogue de plusieurs milliers de SKU ?

La reconstruction d’historique et le calcul des prévisions restent linéaires en nombre de produits actifs. Sur 5 000 SKU avec 12 mois d’historique, comptez 10 à 30 minutes de traitement nocturne selon la puissance du serveur. Aucun impact sur les performances front-office : tous les calculs sont asynchrones.

Cette page vous a-t-elle été utile ?

Toujours bloqué ? Contactez le support