DataFirefly Inventory Forecasting — Komplette Anleitung
Saisonale Bestandsprognose für WooCommerce installieren, konfigurieren und betreiben: multiplikativer Holt-Winters-Algorithmus, Multi-Lieferanten-Verwaltung, native PDF-Lieferantenbestellungen, bevorstehende Engpasswarnungen, vier tägliche Cron-Aufgaben und REST API.
Überblick
DataFirefly Inventory Forecasting ist ein WooCommerce-Plugin für Bestandsprognose, automatische Erstellung von Lieferantenbestellungen und Lieferengpasswarnungen. Es verwandelt dein WordPress-Backend in ein Supply-Chain-Cockpit, ohne den Umweg über einen externen SaaS und ohne Gebühren pro SKU.
Das Plugin stützt sich auf einen multiplikativen Holt-Winters-Algorithmus, der deine Verkaufshistorie in zwei Komponenten zerlegt: eine Tendenz, geschätzt per linearer Regression auf einem 7-Tage-gleitenden Durchschnitt, und eine Saisonalität, berechnet als multiplikativer monatlicher Index. Die Prognosen für 30, 60 und 90 Tage werden dann mit dem aktuellen Bestand verglichen, um einen Meldebestand, eine Bestellmenge (unter Berücksichtigung von MOQ und Verpackungseinheit) und ein geschätztes Lieferengpassdatum zu produzieren.
Positionierung. Inventory Forecasting ist als selbst gehostete Alternative zu Veeqo, Cin7 oder Lokad konzipiert. Es zielt auf Kataloge von 100 bis einige tausend SKUs, mit oder ohne stabile saisonale Historie.
Voraussetzungen und Installation
Technische Voraussetzungen
- WordPress 6.4 oder höher
- WooCommerce 8.0 oder höher
- PHP 8.1 oder höher
- MySQL 5.7 oder MariaDB 10.3 mindestens
- WP-Cron aktiviert (oder ersetzt durch einen System-Cron, der wp-cron.php aufruft)
Installation
- Lade das ZIP-Archiv aus deinem Kundenkonto auf datafirefly.com herunter.
- Gehe in WordPress zu Plugins → Neu hinzufügen → Plugin hochladen.
- Wähle das ZIP aus und klicke auf Jetzt installieren.
- Aktiviere das Plugin. Bei der Aktivierung erstellt es sieben Tabellen mit dem Präfix
wp_dfif_, deklariert HPOS-Kompatibilität und plant vier tägliche Cron-Aufgaben.
Post-Installations-Check. Ein neues Menü Inventory Forecasting erscheint in der Admin-Seitenleiste mit einem Diagramm-Icon. Öffne das Dashboard, um zu bestätigen, dass die KPI-Zähler auf null stehen.
Erster Start: Historie neu aufbauen
Das Plugin muss deine vergangenen Verkäufe kennen, um Tendenz und Saisonindizes zu kalibrieren. Klicke bei der ersten Benutzung im Dashboard auf Historie neu aufbauen. Diese Aktion durchläuft die abgeschlossenen Bestellungen im konfigurierten Fenster (standardmäßig 365 Tage) und aggregiert die verkauften Mengen pro Produkt und pro Tag in der Tabelle wp_dfif_sales_daily.
Bei einem Katalog von einigen hundert Produkten mit 12 Monaten Historie dauert der Vorgang ein bis fünf Minuten. Er ist in Blöcke von 100 Bestellungen paginiert und HPOS-kompatibel.
Kernkonzepte
Tendenz und Saisonalität
Bei jedem Prognosezyklus baut das Plugin für jedes Produkt eine tägliche Reihe auf, die durch einen 7-Tage-gleitenden Durchschnitt geglättet wird. Eine lineare Regression auf dieser Reihe ergibt die Tendenz (Steigung und Achsenabschnitt). Getrennt davon werden die monatlichen Saisonindizes als Verhältnis zwischen den Verkäufen jedes Kalendermonats und dem Jahresmittel berechnet, mit einer Untergrenze von 0,3 und einer Obergrenze von 3,0, um Ausreißer zu absorbieren.
Die Prognose am Horizont H Tage kombiniert dann Tendenz und Index des Zielmonats: prognose = durchschnittsverkauf × (1 + tendenz × H) × saisonindex.
Sicherheitsbestand
Der Sicherheitsbestand wird nach der klassischen Formel z × σ × √lead_time berechnet, wobei z das Normalquantil zum gewünschten Servicegrad ist (1,645 für 95 %, 2,326 für 99 %), σ die Standardabweichung der täglichen Verkäufe und lead_time die Lieferzeit des Lieferanten in Tagen. Diese Reserve absorbiert die zufälligen Nachfrageschwankungen während der Wiederbeschaffung.
Meldebestand und Bestellmenge
Der Meldebestand ist die Bestandsschwelle, die eine Bestellung auslöst. Er entspricht durchschnittsverkauf × lead_time + sicherheitsbestand. In der Praxis muss, sobald der aktuelle Bestand unter diese Schwelle fällt, eine Bestellung ausgelöst werden, um einen Engpass zu vermeiden.
Die Bestellmenge ist die zu bestellende Menge. Sie wird auf das Vielfache der Verpackungseinheit (pack size) gerundet und anschließend auf die MOQ (Mindestbestellmenge des Lieferanten) angehoben, falls erforderlich.
Konfidenzwert
Jede Prognose ist mit einem Konfidenzwert von 0 bis 100 % versehen, der heuristisch anhand der Länge der verfügbaren Historie, der Verkaufsregularität und des Vorhandenseins ausgeprägter Saisonalität berechnet wird. Eine Konfidenz unter 40 % wird rot angezeigt und wechselt automatisch zu einer naiven (gleitender Durchschnitt) Prognose, die vorsichtiger ist.
Lieferantenverwaltung
Einen Lieferanten anlegen
Klicke im Menü Inventory Forecasting → Lieferanten auf Lieferant hinzufügen. Fülle mindestens Name und E-Mail aus (verwendet für den Versand von Bestellungen). Optionale Felder: Ansprechpartner, Telefon, Postanschrift, Abrechnungswährung und interne Notizen.
Einen Lieferanten mit einem Produkt verknüpfen
Auf der Bearbeitungsseite eines WooCommerce-Produkts erscheint eine Meta-Box Inventory Forecasting Lieferanten in der Hauptspalte. Sie erlaubt das Hinzufügen eines oder mehrerer Lieferanten für dieses Produkt, jeweils mit eigenen Parametern:
- Einkaufspreis ohne Steuer, verwendet auf der Bestellposition
- Lieferanten-SKU, oft anders als die interne SKU, wird auf dem PDF gedruckt
- Lieferzeit in Tagen, fließt in die Meldebestandsberechnung ein
- MOQ, vom Lieferanten geforderte Mindestbestellmenge
- Verpackungseinheit, Inkrement, mit dem die Mengen gerundet werden
- Hauptlieferant, Radio-Button, der den Lieferanten für die automatische Bestellungserstellung bestimmt
Mehrere Lieferanten. Dasselbe Produkt kann mit mehreren Lieferanten verknüpft werden, z. B. einem günstigeren Hauptlieferanten und einem sekundären Reservelieferanten. Nur der Hauptlieferant wird von der automatischen Erstellung verwendet, du kannst aber manuell von der Produktseite auf einen anderen umschalten.
Prognosen und Horizonte
Die Seite Inventory Forecasting → Prognosen listet alle Produkte mit jeweils der Prognose am ausgewählten Horizont, dem Meldebestand, der zu bestellenden Menge, dem geschätzten Engpassdatum und dem Konfidenzniveau.
Filter
- Horizont: 30, 60 oder 90 Tage (alle drei werden parallel vom Cron berechnet)
- Schweregrad: kritisch (Engpass unter 7 Tagen), Warnung (Engpass unter 14 Tagen), normal
- Suche: nach Produkttitel oder SKU
Manuelle Neuberechnung
Der Button Prognosen neu berechnen im Dashboard erzwingt einen sofortigen Zyklus, ohne den 2:30-Cron abzuwarten. Nützlich nach einer Parameteränderung (Servicegrad, Größe des Historienfensters) oder nach einem Massenimport von Bestellungen.
Lieferantenbestellungen
Bestellungslebenszyklus
- Entwurf: erstellt, aber nicht versandt, editierbar
- Versandt: PDF generiert und per E-Mail an den Lieferanten geschickt
- Teilweise empfangen: mindestens eine Position, aber nicht alle Mengen empfangen
- Empfangen: alle Mengen erfasst
- Storniert: Bestellung vor Empfang abgebrochen
Manuelle Erstellung
Der Button Aus Prognosen generieren unter Inventory Forecasting → Bestellungen durchläuft die Produkte unter Meldebestand, gruppiert sie nach Hauptlieferant und erstellt pro Lieferant eine Bestellung im Entwurfsstatus. Anschließend kannst du Mengen bearbeiten, Positionen hinzufügen oder entfernen und versenden.
Automatische Erstellung
Der 4-Uhr-Cron kann Bestellungen automatisch generieren, mit oder ohne sofortigen Versand. Diese Option ist standardmäßig deaktiviert. Nach Aktivierung in den Einstellungen sind zwei Modi möglich: Erstellung als Entwurf (manueller Versand nach Prüfung) oder sofortiger Versand.
Empfehlung. Lasse den automatischen Versand mindestens zwei Wochen nach der Installation deaktiviert. Prüfe die Prognoserelevanz, bevor du der vollen Automatisierung vertraust, sonst riskierst du, zu früh oder in zu großen Mengen zu bestellen.
Natives PDF
Das PDF wird von einer eingebetteten reinen PHP-Engine erzeugt (Helvetica-Schrift, A4-Format, etwa 250 Zeilen Code). Es enthält deinen Firmenkopf, die Lieferantendaten, die Positionstabelle mit Lieferanten-SKU und Einkaufspreis, den Nettosumme und eine anpassbare Fußzeile. Keine Abhängigkeit von Dompdf, TCPDF oder mPDF erforderlich.
Wareneingang
In der Detailansicht einer Bestellung verfügt jede Position über ein Feld Empfangene Menge. Die Eingabe des empfangenen Werts aktualisiert den WooCommerce-Bestand des Produkts um das Delta gegenüber dem vorherigen Wert. Diese Logik verhindert Doppelzählungen, wenn du nachträglich einen Wareneingang korrigierst.
Engpasswarnungen
Das Plugin erkennt täglich vier Situationstypen und weist jedem einen Schweregrad zu.
Warnungstypen
- IMMINENT: Engpass innerhalb von 7 Tagen erwartet (konfigurierbar), kritischer Schweregrad
- WARNING: Engpass innerhalb von 14 Tagen erwartet (konfigurierbar), Warnungs-Schweregrad
- OVERSTOCK: Bestandsreichweite über 180 Tage, Info-Schweregrad
- REORDER: Bestand unter Meldebestand gefallen, Warnungs-Schweregrad
Lebenszyklus
Eine Warnung wird mit Status active erstellt. Wenn die Situation im nächsten Zyklus fortbesteht, wird sie als pending_recheck markiert; wenn sie sich aufgelöst hat, wechselt sie in resolved mit Zeitstempel. Dieser Mechanismus verhindert Spam durch wiederholte Warnungen.
E-Mail-Benachrichtigungen
Ein tägliches Digest wird an die in den Einstellungen konfigurierte Adresse gesendet und listet die neuen kritischen und Warnungs-Meldungen auf. Der Inhalt der E-Mail ist eine schlichte HTML-Tabelle, filterbar nach Schweregrad.
Einstellungen
Die Seite Inventory Forecasting → Einstellungen gruppiert vier Abschnitte.
Prognosen
- Historienfenster: standardmäßig 365 Tage. Je länger das Fenster, desto robuster die Saisonalität, aber die Tabelle sales_daily wächst.
- Prognosehorizonte: kommagetrennte Liste, standardmäßig 30, 60, 90. Du kannst z. B. 14 oder 180 hinzufügen.
- Servicegrad: standardmäßig 95 %. Übersetzt zu z = 1,645 über die inverse Normale. Wechsle zu 99 % (z = 2,326) für kritischen Bestand, zu 90 % (z = 1,282) für nicht-strategische Artikel.
Warnungen
- Warntage Vorlauf: standardmäßig 14
- Kritische Vorlauftage: standardmäßig 7
- Empfänger-E-Mail des täglichen Digests
Bestellungen
- Automatische Erstellung aktiviert: standardmäßig deaktiviert
- Nummerierungspräfix: standardmäßig PO-, ergibt Identifikatoren wie PO-2026-00042
- Währung: von WooCommerce geerbt, pro Lieferant überschreibbar
Firma
Firmenangaben, die auf den PDF-Kopfzeilen von Bestellungen gedruckt werden: Firmenname, Adresse, USt-ID oder Steuernummer, E-Mail, Telefon, Logo.
Cron-Aufgaben
Bei der Plugin-Aktivierung werden automatisch vier Aufgaben in der Site-Zeitzone geplant.
02:00— Historie-Rebuild: aggregiert die Bestellungen des Vortags in die Tabelle sales_daily. Leicht, wenige Sekunden.02:30— Prognoseberechnung: berechnet Tendenz, Saisonalität und Meldebestände neu. Schwerer, ein bis fünf Minuten je nach Katalog.03:00— Warnungserkennung: erstellt und löst Warnungen entsprechend den Schwellenwerten. Schnell.04:00— Automatische Bestellungserstellung: läuft nur, wenn die Option in den Einstellungen aktiviert ist.
WP-Cron. Standardmäßig läuft WP-Cron nur bei einem Besucher-Hit. Auf einer Site mit wenig Traffic kann das die nächtlichen Aufgaben verzögern. Konfiguriere vorzugsweise einen System-Cron, der wp-cron.php alle 15 Minuten aufruft, oder deaktiviere WP-Cron in wp-config.php und steuere alles vollständig über den System-Cron.
REST API
Das Plugin stellt mehrere REST-Routen unter dem Namensraum dfif/v1 bereit. Alle erfordern die Capability manage_woocommerce und den WordPress-Nonce 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
Diese Routen werden intern von den Dashboard-Buttons (über wp.apiFetch mit X-WP-Nonce-Header) verwendet und können auch von jedem über WordPress-Cookies oder Application Passwords authentifizierten Client aufgerufen werden.
WordPress-Hooks
Die wichtigsten Plugin-Schritte geben Actions und Filter aus, die du abfangen kannst:
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);
Fehlerbehebung
Prognosen bleiben auf null
Prüfe, ob der Historie-Rebuild ausgeführt wurde und die Tabelle sales_daily Zeilen enthält. Wenn du im konfigurierten Fenster keine abgeschlossenen oder in Bearbeitung befindlichen Bestellungen hast, kann das Plugin nichts vorhersagen. Prüfe auch, dass WooCommerce aktiv ist.
Prognosen wirken inkohärent
Zwei häufige Ursachen: zu kurze Historie (unter 30 Tagen fällt das Plugin auf eine naive Prognose zurück) oder extreme, nicht repräsentative Saisonalität (isolierter Black Friday). Sieh dir den angezeigten Konfidenzwert an: unter 40 % sollte die Prognose mit Vorsicht behandelt werden.
PDF wird nicht erzeugt
Prüfe, ob das Verzeichnis wp-content/uploads/dfif-po/ schreibbar ist. Das Plugin legt dort die PDFs vor dem Versand ab. Eine .htaccess-Datei wird automatisch abgelegt, um den direkten öffentlichen Zugriff zu verhindern.
E-Mail wird nicht versandt
Das Plugin verwendet wp_mail, das bei manchen Hostern manchmal unzuverlässig ist. Installiere ein SMTP-Plugin (WP Mail SMTP, FluentSMTP) und konfiguriere einen Zustelldienst (Postmark, SendGrid, Mailjet, Brevo). Prüfe auch, ob die Lieferanten-E-Mail eingetragen und gültig ist.
Cron läuft nicht
Verwende das Plugin WP Crontrol, um die geplanten Hooks aufzulisten und ihre nächste Ausführung zu sehen. Die vier Hooks haben das Präfix dfif_. Wenn du sie nicht siehst, deaktiviere und reaktiviere Inventory Forecasting.
Deinstallation
Bei der Deaktivierung werden die Cron-Aufgaben abgemeldet, Tabellen und Daten bleiben erhalten. Bei der vollständigen Deinstallation über Plugins → Löschen sind zwei Verhalten je nach Option dfif_delete_data_on_uninstall in den Einstellungen möglich:
- Standardmäßig deaktiviert: Tabellen bleiben erhalten, du kannst ohne Verlust der Historie neu installieren.
- Aktiviert: die sieben Tabellen und das Verzeichnis
wp-content/uploads/dfif-po/werden gelöscht.
FAQ
Kann ich das Plugin auf einem variablen Katalog (Produktvariationen) verwenden?
Ja. Prognosen und Bestellungen arbeiten auf Ebene der einzelnen Variation. Jede Variation kann eigene Lieferanten und eigene Parameter haben.
Ist das Plugin Multisite-kompatibel?
Ja, aber jede Site im Netzwerk verwaltet ihren eigenen Katalog, ihre Lieferanten und ihre Prognosen. Es gibt keine Cross-Site-Bündelung.
Kann ich die Daten exportieren?
Alle Tabellen sind über Standard-SQL zugänglich. Ein nativer CSV-Export ist für eine spätere Version geplant. In der Zwischenzeit genügt ein einfaches SELECT INTO OUTFILE oder ein Plugin wie WP All Export.
Blockiert das Plugin das Backend, wenn der Cron nicht gelaufen ist?
Nein. Das Plugin funktioniert immer, angezeigte Prognosen können lediglich mehrere Tage alt sein. Ein Badge Letzter Cron im Dashboard zeigt die Datenfrische an.
Wie verhält sich das Plugin bei einem Katalog mit mehreren tausend SKUs?
Historie-Rebuild und Prognoseberechnung bleiben linear zur Anzahl aktiver Produkte. Bei 5.000 SKUs mit 12 Monaten Historie kalkuliere je nach Serverleistung 10 bis 30 Minuten nächtliche Verarbeitung. Kein Frontend-Performance-Impact: alle Berechnungen sind asynchron.