Wo WooCommerce Intermedio

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.

Aggiornato Versione del modulo 1.0.0

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

  1. Scarica l’archivio ZIP dal tuo account cliente su datafirefly.com.
  2. In WordPress, vai su Plugin → Aggiungi nuovo → Carica plugin.
  3. Seleziona lo ZIP poi clicca su Installa ora.
  4. 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

  1. Bozza: creato ma non inviato, modificabile
  2. Inviato: PDF generato e spedito al fornitore per email
  3. Parzialmente ricevuto: almeno una riga ma non tutte le quantità ricevute
  4. Ricevuto: tutte le quantità registrate
  5. 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:00Ricostruzione dello storico: aggrega gli ordini del giorno precedente nella tabella sales_daily. Leggero, qualche secondo.
  • 02:30Calcolo delle previsioni: ricalcola tendenza, stagionalità e punti di riordino. Più pesante, da uno a cinque minuti a seconda del catalogo.
  • 03:00Rilevamento degli avvisi: crea e risolve gli avvisi secondo le soglie. Rapido.
  • 04:00Generazione 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.

Questa pagina ti è stata utile?

Ancora bloccato? Contatta l'assistenza