DataFirefly Inventory Forecasting — Guida completa
Installare, configurare e utilizzare la previsione stagionale delle scorte per WooCommerce: algoritmo Holt-Winters moltiplicativo, gestione multi-fornitore, ordini PDF nativi, avvisi di rottura imminente, quattro task cron quotidiani e REST API.
Panoramica
DataFirefly Inventory Forecasting è un plugin WooCommerce per la previsione delle scorte, la generazione automatica di ordini di acquisto fornitore e gli avvisi di rottura. Trasforma il tuo back-office WordPress in una cabina di regia della catena di approvvigionamento, senza passare da un SaaS esterno e senza tariffe per SKU.
Il plugin si basa su un algoritmo Holt-Winters moltiplicativo che scompone il tuo storico vendite in due componenti: una tendenza stimata tramite regressione lineare su una media mobile di sette giorni, e una stagionalità calcolata come indice moltiplicativo mensile. Le previsioni a 30, 60 e 90 giorni vengono poi confrontate con lo stock attuale per produrre un punto di riordino, una quantità di riassortimento (tenendo conto di MOQ e dimensione del lotto) e una stima della data di rottura.
Posizionamento. Inventory Forecasting è concepito come alternativa self-hosted a Veeqo, Cin7 o Lokad. Si rivolge a cataloghi da 100 a qualche migliaio di SKU, con o senza uno storico stagionale stabile.
Prerequisiti e installazione
Prerequisiti tecnici
- WordPress 6.4 o superiore
- WooCommerce 8.0 o superiore
- PHP 8.1 o superiore
- MySQL 5.7 o MariaDB 10.3 minimo
- WP-Cron attivo (o sostituito da un cron di sistema che chiama wp-cron.php)
Installazione
- Scarica l’archivio ZIP dal tuo account cliente su datafirefly.com.
- In WordPress, vai su Plugin → Aggiungi nuovo → Carica plugin.
- Seleziona lo ZIP poi clicca su Installa ora.
- Attiva il plugin. All’attivazione, crea sette tabelle prefissate
wp_dfif_, dichiara la compatibilità HPOS e pianifica quattro task cron quotidiani.
Verifica post-installazione. Un nuovo menu Inventory Forecasting appare nella barra laterale dell’amministrazione, con icona a grafico. Apri la dashboard per confermare che i contatori KPI mostrano zero.
Primo avvio: ricostruire lo storico
Il plugin ha bisogno di conoscere le vendite passate per calibrare tendenza e indici stagionali. Al primo utilizzo, clicca su Ricostruisci storico dalla dashboard. Questa azione scorre gli ordini completati nella finestra configurata (365 giorni di default) e aggrega le quantità vendute per prodotto e per giorno nella tabella wp_dfif_sales_daily.
Su un catalogo di qualche centinaio di prodotti con 12 mesi di storico, l’operazione richiede da uno a cinque minuti. È paginata a blocchi di 100 ordini e compatibile con HPOS.
Concetti fondamentali
Tendenza e stagionalità
Ad ogni ciclo di previsione, il plugin costruisce per ogni prodotto una serie giornaliera smussata da una media mobile di sette giorni. Una regressione lineare su questa serie dà la tendenza (pendenza e intercetta). Separatamente, gli indici stagionali mensili sono calcolati come rapporto tra le vendite di ogni mese calendariale e la media annuale, con un pavimento a 0,3 e un soffitto a 3,0 per assorbire i valori anomali.
La previsione all’orizzonte H giorni combina poi tendenza e indice del mese target: vendite_previste = vendite_medie × (1 + tendenza × H) × indice_stagionale.
Scorta di sicurezza
La scorta di sicurezza è calcolata secondo la formula classica z × σ × √lead_time, dove z è il quantile normale corrispondente al livello di servizio desiderato (1,645 per 95 %, 2,326 per 99 %), σ la deviazione standard delle vendite giornaliere e lead_time il tempo di consegna del fornitore in giorni. Questa riserva assorbe le variazioni casuali della domanda durante il riassortimento.
Punto di riordino e quantità di riordino
Il punto di riordino è la soglia di stock che innesca un ordine. Vale vendite_medie × lead_time + scorta_sicurezza. In pratica, non appena lo stock attuale scende sotto questa soglia, si deve emettere un ordine per evitare la rottura.
La quantità di riordino è la quantità da ordinare. Viene arrotondata al multiplo della dimensione del lotto (pack size), poi alzata al MOQ (quantità minima ordinabile del fornitore) se necessario.
Livello di confidenza
Ogni previsione è accompagnata da un punteggio di confidenza da 0 a 100 %, calcolato euristicamente in base alla lunghezza dello storico disponibile, alla regolarità delle vendite e alla presenza di stagionalità marcata. Una confidenza sotto il 40 % viene mostrata in rosso e ripiega automaticamente su una previsione ingenua (media mobile) più prudente.
Gestione dei fornitori
Creare un fornitore
Dal menu Inventory Forecasting → Fornitori, clicca su Aggiungi fornitore. Compila come minimo nome ed email (usata per l’invio degli ordini). I campi opzionali sono: contatto, telefono, indirizzo postale, valuta di fatturazione e note interne.
Associare un fornitore a un prodotto
Nella pagina di modifica di un prodotto WooCommerce, appare un meta-box Fornitori Inventory Forecasting nella colonna principale. Permette di aggiungere uno o più fornitori per quel prodotto, ciascuno con i propri parametri:
- Prezzo d’acquisto escluse tasse, usato sulla riga dell’ordine
- SKU del fornitore, spesso diverso dallo SKU interno, stampato sul PDF
- Tempo di consegna in giorni, che entra nel calcolo del punto di riordino
- MOQ, quantità minima richiesta dal fornitore
- Dimensione del lotto, incremento con cui le quantità vengono arrotondate
- Fornitore principale, radio button che designa il fornitore usato dalla generazione automatica degli ordini
Multi-fornitore. Uno stesso prodotto può essere collegato a più fornitori, ad esempio uno principale più economico e uno secondario di riserva. Solo il principale viene usato dalla generazione automatica, ma puoi passare manualmente a un altro dalla pagina prodotto.
Previsioni e orizzonti
La pagina Inventory Forecasting → Previsioni elenca tutti i prodotti con, per ciascuno, la previsione all’orizzonte selezionato, il punto di riordino, la quantità da ordinare, la data di rottura stimata e il livello di confidenza.
Filtri
- Orizzonte: 30, 60 o 90 giorni (tutti e tre sono calcolati in parallelo dal cron)
- Gravità: critica (rottura entro 7 giorni), warning (rottura entro 14 giorni), normale
- Ricerca: per titolo prodotto o SKU
Ricalcolo manuale
Il pulsante Ricalcola previsioni della dashboard forza un ciclo immediato senza aspettare il cron delle 2:30. Utile dopo un cambio di parametro (livello di servizio, dimensione della finestra storico) o dopo un’importazione massiva di ordini.
Ordini di acquisto fornitore
Ciclo di vita di un ordine
- Bozza: creato ma non inviato, modificabile
- Inviato: PDF generato e spedito al fornitore per email
- Parzialmente ricevuto: almeno una riga ma non tutte le quantità ricevute
- Ricevuto: tutte le quantità registrate
- Annullato: ordine abbandonato prima della ricezione
Generazione manuale
Da Inventory Forecasting → Ordini, il pulsante Genera dalle previsioni scorre i prodotti sotto il punto di riordino, li raggruppa per fornitore principale e crea un ordine in bozza per fornitore. Puoi poi modificare le quantità, aggiungere o rimuovere righe, e inviare.
Generazione automatica
Il cron delle 4 può generare automaticamente gli ordini, con o senza invio immediato. Questa opzione è disattivata di default. Una volta attivata nelle impostazioni, sono possibili due modalità: creazione in bozza (invio manuale dopo revisione) o invio immediato.
Raccomandazione. Lascia l’invio automatico disattivato per almeno due settimane dopo l’installazione. Verifica la rilevanza delle previsioni prima di affidarti all’automazione completa, altrimenti rischi di ordinare troppo presto o in quantità eccessive.
PDF nativo
Il PDF è generato da un motore PHP puro integrato (font Helvetica, formato A4, circa 250 righe di codice). Include l’intestazione della tua società, i dati del fornitore, la tabella delle righe con SKU fornitore e prezzo di acquisto, il totale al netto e un piè di pagina personalizzabile. Nessuna dipendenza da Dompdf, TCPDF o mPDF richiesta.
Ricezione della merce
Nella vista dettaglio di un ordine, ogni riga dispone di un campo Quantità ricevuta. Inserire il valore ricevuto aggiorna lo stock WooCommerce del prodotto del delta rispetto al valore precedente. Questa logica evita doppi conteggi se correggi una ricezione a posteriori.
Avvisi di rottura
Il plugin rileva quotidianamente quattro tipi di situazioni e assegna a ciascuna un livello di gravità.
Tipi di avvisi
- IMMINENT: rottura prevista entro 7 giorni (configurabile), gravità critica
- WARNING: rottura prevista entro 14 giorni (configurabile), gravità warning
- OVERSTOCK: copertura stock superiore a 180 giorni, gravità info
- REORDER: stock sceso sotto il punto di riordino, gravità warning
Ciclo di vita
Un avviso viene creato con stato active. Al ciclo successivo, se la situazione persiste, viene contrassegnato come pending_recheck; se è scomparsa, passa a resolved con timestamp. Questo meccanismo evita lo spam di avvisi ripetitivi.
Notifiche email
Un digest quotidiano viene inviato all’indirizzo configurato nelle impostazioni, elencando i nuovi avvisi critici e warning. Il contenuto dell’email è una tabella HTML sobria, filtrabile per gravità.
Impostazioni
La pagina Inventory Forecasting → Impostazioni raggruppa quattro sezioni.
Previsioni
- Finestra storico: 365 giorni di default. Più lunga è la finestra, più robusta la stagionalità, ma il peso della tabella sales_daily aumenta.
- Orizzonti di previsione: lista separata da virgole, 30, 60, 90 di default. Puoi aggiungere ad esempio 14 o 180.
- Livello di servizio: 95 % di default. Tradotto in z = 1,645 tramite normale inversa. Passa al 99 % (z = 2,326) per stock critico, al 90 % (z = 1,282) per articoli non strategici.
Avvisi
- Giorni di anticipo warning: 14 di default
- Giorni di anticipo critico: 7 di default
- Email destinataria del digest quotidiano
Ordini
- Generazione automatica attivata: deselezionata di default
- Prefisso di numerazione: PO- di default, produce identificatori come PO-2026-00042
- Valuta: ereditata da WooCommerce, sovrascrivibile per fornitore
Società
Dati della tua azienda stampati sull’intestazione dei PDF di ordini: ragione sociale, indirizzo, partita IVA, email, telefono, logo.
Task cron
Quattro task sono pianificati automaticamente all’attivazione del plugin, sul fuso orario del sito.
02:00— Ricostruzione dello storico: aggrega gli ordini del giorno precedente nella tabella sales_daily. Leggero, qualche secondo.02:30— Calcolo delle previsioni: ricalcola tendenza, stagionalità e punti di riordino. Più pesante, da uno a cinque minuti a seconda del catalogo.03:00— Rilevamento degli avvisi: crea e risolve gli avvisi secondo le soglie. Rapido.04:00— Generazione automatica degli ordini: viene eseguito solo se l’opzione è attivata nelle impostazioni.
WP-Cron. Di default, WP-Cron si esegue solo su un evento visitatore. Su un sito a basso traffico, questo può ritardare i task notturni. Configura preferibilmente un cron di sistema che chiama wp-cron.php ogni 15 minuti, o disattiva WP-Cron in wp-config.php e pilotalo interamente dal cron di sistema.
REST API
Il plugin espone diverse route REST sotto il namespace dfif/v1. Tutte richiedono la capability manage_woocommerce e il 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
Queste route sono usate internamente dai pulsanti della dashboard (via wp.apiFetch con header X-WP-Nonce) e possono anche essere chiamate da qualsiasi client autenticato tramite cookie WordPress o application passwords.
Hook WordPress
I principali passaggi del plugin emettono action e filter che puoi intercettare:
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);
Risoluzione dei problemi
Le previsioni restano a zero
Verifica che la ricostruzione dello storico sia stata eseguita e che la tabella sales_daily contenga righe. Se non hai ordini completati o in elaborazione nella finestra configurata, il plugin non può prevedere nulla. Verifica anche che WooCommerce sia attivo.
Le previsioni sembrano incoerenti
Due cause frequenti: uno storico troppo corto (sotto i 30 giorni, il plugin ripiega su una previsione ingenua) o una stagionalità estrema non rappresentativa (Black Friday isolato). Guarda il livello di confidenza mostrato: sotto il 40 %, la previsione va presa con cautela.
Il PDF non viene generato
Verifica che la directory wp-content/uploads/dfif-po/ sia scrivibile. Il plugin deposita lì i PDF prima dell’invio. Un file .htaccess viene depositato automaticamente per impedire l’accesso pubblico diretto.
L’email non viene inviata
Il plugin usa wp_mail, che a volte è inaffidabile su certi hosting. Installa un plugin SMTP (WP Mail SMTP, FluentSMTP) e configura un servizio di consegnabilità (Postmark, SendGrid, Mailjet, Brevo). Verifica anche che l’email del fornitore sia inserita e valida.
Il cron non gira
Usa il plugin WP Crontrol per elencare gli hook pianificati e vedere la loro prossima esecuzione. I quattro hook sono prefissati dfif_. Se non li vedi, disattiva e riattiva Inventory Forecasting.
Disinstallazione
Alla disattivazione, i cron sono depianificati ma tabelle e dati sono conservati. Alla disinstallazione completa via Plugin → Elimina, sono possibili due comportamenti a seconda dell’opzione dfif_delete_data_on_uninstall nelle impostazioni:
- Deselezionata di default: le tabelle sono conservate, puoi reinstallare senza perdere lo storico.
- Selezionata: le sette tabelle e la directory
wp-content/uploads/dfif-po/vengono eliminate.
FAQ
Posso usare il plugin su un catalogo variabile (variazioni di prodotto)?
Sì. Le previsioni e gli ordini funzionano a livello della singola variazione. Ogni variazione può avere i propri fornitori e i propri parametri.
Il plugin è compatibile con multisito?
Sì, ma ogni sito della rete gestisce il proprio catalogo, i propri fornitori e le proprie previsioni. Non c’è mutualizzazione cross-site.
Posso esportare i dati?
Tutte le tabelle sono accessibili via SQL standard. Un’esportazione CSV nativa è prevista per una versione successiva. Nel frattempo, un semplice SELECT INTO OUTFILE o un plugin come WP All Export bastano.
Il plugin blocca l’amministrazione se il cron non è stato eseguito?
No. Il plugin funziona sempre, semplicemente le previsioni mostrate possono avere qualche giorno. Un badge Ultimo cron sulla dashboard indica la freschezza dei dati.
Come si comporta il plugin su un catalogo di diverse migliaia di SKU?
La ricostruzione dello storico e il calcolo delle previsioni restano lineari nel numero di prodotti attivi. Su 5.000 SKU con 12 mesi di storico, calcola da 10 a 30 minuti di elaborazione notturna a seconda della potenza del server. Nessun impatto sulle prestazioni front-office: tutti i calcoli sono asincroni.