Wo WooCommerce Średnio zaawansowany

DataFirefly Inventory Forecasting: kompletny przewodnik

Instalacja, konfiguracja i wykorzystanie sezonowego prognozowania stanów dla WooCommerce: multiplikatywny algorytm Holt-Winters, obsługa wielu dostawców, natywne zamówienia zakupu PDF, alerty o zbliżających się brakach, cztery codzienne zadania cron i REST API.

Zaktualizowano Wersja modułu 1.0.0

Przegląd

DataFirefly Inventory Forecasting to wtyczka WooCommerce do prognozowania stanów magazynowych, automatycznego generowania zamówień zakupu do dostawców i alertów o brakach. Zamienia Twoje zaplecze WordPressa w stanowisko sterowania łańcuchem dostaw, bez zewnętrznego SaaS-a i bez opłat per SKU.

Wtyczka opiera się na multiplikatywnym algorytmie Holt-Winters, który rozkłada historyczną sprzedaż na dwie składowe: trend estymowany regresją liniową na siedmiodniowej średniej ruchomej oraz sezonowość liczoną jako multiplikatywny indeks miesięczny. Prognozy na 30, 60 i 90 dni są następnie porównywane z bieżącym stanem, aby wyznaczyć punkt zamówienia, ilość uzupełnienia (z uwzględnieniem MOQ i wielkości partii) oraz szacowaną datę wyczerpania zapasu.

Pozycjonowanie. Inventory Forecasting jest zaprojektowany jako samodzielnie hostowana alternatywa dla Veeqo, Cin7 czy Lokad. Celuje w katalogi od 100 do kilku tysięcy SKU, z ustabilizowaną historią sezonową albo bez niej.

Wymagania i instalacja

Wymagania techniczne

  • WordPress 6.4 lub nowszy
  • WooCommerce 8.0 lub nowszy
  • PHP 8.1 lub nowszy
  • MySQL 5.7 albo MariaDB 10.3 minimum
  • Włączony WP-Cron (albo zastąpiony cronem systemowym uruchamiającym wp-cron.php)

Instalacja

  1. Pobierz archiwum ZIP ze swojego konta klienta na datafirefly.com.
  2. W WordPressie przejdź do Wtyczki → Dodaj nową → Wyślij wtyczkę na serwer.
  3. Wybierz ZIP i kliknij Zainstaluj teraz.
  4. Włącz wtyczkę. Przy aktywacji tworzy ona siedem tabel z przedrostkiem wp_dfif_, deklaruje zgodność z HPOS i planuje cztery codzienne zadania cron.

Weryfikacja po instalacji. W pasku bocznym administracji pojawia się nowe menu Inventory Forecasting z ikoną wykresu. Otwórz panel i sprawdź, czy liczniki KPI pokazują zero.

Pierwsze uruchomienie: odbudowa historii

Wtyczka musi znać Twoją dotychczasową sprzedaż, aby skalibrować trend i indeksy sezonowe. Przy pierwszym użyciu kliknij Odbuduj historię na panelu. Ta akcja przechodzi przez zrealizowane zamówienia ze skonfigurowanego okna (domyślnie 365 dni) i agreguje sprzedane ilości per produkt i per dzień w tabeli wp_dfif_sales_daily.

Przy katalogu kilkuset produktów i 12 miesiącach historii operacja trwa od jednej do pięciu minut. Jest stronicowana blokami po 100 zamówień i zgodna z HPOS.

Podstawowe pojęcia

Trend i sezonowość

W każdym cyklu prognozowania wtyczka buduje dla każdego produktu dzienną serię wygładzoną siedmiodniową średnią ruchomą. Regresja liniowa na tej serii daje trend (nachylenie i wyraz wolny). Osobno miesięczne indeksy sezonowe liczone są jako stosunek sprzedaży w danym miesiącu kalendarzowym do średniej rocznej, z dolnym ograniczeniem 0,3 i górnym 3,0 dla zaabsorbowania wartości odstających.

Prognoza na horyzont H dni łączy następnie trend i indeks miesiąca docelowego: sprzedaż_prognozowana = sprzedaż_średnia × (1 + trend × H) × indeks_sezonowy.

Safety stock

Zapas bezpieczeństwa liczony jest klasycznym wzorem z × σ × √lead_time, gdzie z to kwantyl rozkładu normalnego odpowiadający pożądanemu poziomowi obsługi (1,645 dla 95 %, 2,326 dla 99 %), σ to odchylenie standardowe sprzedaży dziennej, a lead_time to czas dostawy od dostawcy w dniach. Ta rezerwa absorbuje losowe wahania popytu podczas uzupełniania zapasu.

Reorder point i reorder quantity

Reorder point to próg zapasu wyzwalający zamówienie. Wynosi sprzedaż_średnia × lead_time + safety_stock. W praktyce, gdy bieżący stan schodzi poniżej tego progu, trzeba złożyć zamówienie, aby uniknąć braku.

Reorder quantity to ilość do zamówienia. Jest zaokrąglana do wielokrotności wielkości partii (pack size), a następnie podnoszona do MOQ (minimalnej ilości zamówienia u dostawcy), jeśli to konieczne.

Poziom pewności

Każdej prognozie towarzyszy wynik pewności od 0 do 100 %, liczony heurystycznie na podstawie długości dostępnej historii, regularności sprzedaży i obecności wyraźnej sezonowości. Pewność poniżej 40 % wyświetla się na czerwono i automatycznie przełącza na ostrożniejszą prognozę naiwną (średnia ruchoma).

Zarządzanie dostawcami

Tworzenie dostawcy

Z menu Inventory Forecasting → Dostawcy kliknij Dodaj dostawcę. Podaj co najmniej nazwę i e-mail (używany do wysyłki zamówień zakupu). Pola opcjonalne: osoba kontaktowa, telefon, adres pocztowy, waluta rozliczeniowa i notatki wewnętrzne.

Przypisanie dostawcy do produktu

Na stronie edycji produktu WooCommerce w głównej kolumnie pojawia się meta box Dostawcy Inventory Forecasting. Pozwala dodać jednego lub kilku dostawców dla tego produktu, każdego z własnymi parametrami:

  • Cena zakupu netto, używana w pozycji zamówienia zakupu
  • SKU dostawcy, często inny niż SKU wewnętrzny, drukowany na PDF-ie
  • Czas dostawy w dniach, wchodzący do obliczenia reorder point
  • MOQ, minimalna ilość wymagana przez dostawcę
  • Wielkość partii, przyrost, do którego zaokrąglane są ilości
  • Dostawca główny, przełącznik radio wskazujący dostawcę wybieranego przez automatyczne generowanie zamówień zakupu

Wielu dostawców. Ten sam produkt może mieć kilku dostawców, na przykład tańszego głównego i zapasowego drugiego. Tylko główny jest używany przez generowanie automatyczne, ale możesz ręcznie przełączyć się na innego ze strony produktu.

Prognozy i horyzonty

Strona Inventory Forecasting → Prognozy wyświetla listę wszystkich produktów, a dla każdego prognozę na wybranym horyzoncie, reorder point, ilość do zamówienia, szacowaną datę wyczerpania zapasu i poziom pewności.

Filtry

  • Horyzont: 30, 60 albo 90 dni (wszystkie trzy liczone są równolegle przez crona)
  • Powaga: krytyczne (brak w ciągu 7 dni), warning (brak w ciągu 14 dni), normalne
  • Wyszukiwanie: po tytule produktu albo SKU

Ręczne przeliczenie

Przycisk Przelicz prognozy na panelu wymusza natychmiastowy cykl bez czekania na crona z 2:30. Przydatny po zmianie parametru (poziom obsługi, rozmiar okna historii) albo po masowym imporcie zamówień.

Zamówienia zakupu do dostawców

Cykl życia zamówienia zakupu

  1. Szkic: utworzone, ale niewysłane, edytowalne
  2. Wysłane: PDF wygenerowany i wysłany do dostawcy e-mailem
  3. Częściowo przyjęte: co najmniej jedna pozycja, ale nie wszystkie ilości przyjęte
  4. Przyjęte: wszystkie ilości zarejestrowane
  5. Anulowane: zamówienie porzucone przed przyjęciem

Generowanie ręczne

W Inventory Forecasting → Zamówienia zakupu przycisk Generuj z prognoz przechodzi przez produkty poniżej reorder point, grupuje je po dostawcy głównym i tworzy szkic zamówienia zakupu per dostawca. Możesz następnie edytować ilości, dodawać albo usuwać pozycje, a potem wysłać.

Generowanie automatyczne

Cron z 4:00 może automatycznie generować zamówienia zakupu, z natychmiastową wysyłką albo bez niej. Ta opcja jest domyślnie wyłączona. Po włączeniu w ustawieniach dostępne są dwa tryby: tworzenie szkicu (wysyłka ręczna po weryfikacji) albo wysyłka natychmiastowa.

Zalecenie. Pozostaw automatyczną wysyłkę wyłączoną przez co najmniej dwa tygodnie po instalacji. Zweryfikuj trafność prognoz, zanim zaufasz pełnej automatyzacji, inaczej ryzykujesz zamawianie za wcześnie albo w zbyt dużych ilościach.

Natywny PDF

PDF generowany jest przez wbudowany silnik w czystym PHP (czcionka Helvetica, format A4, około 250 linii kodu). Zawiera nagłówek Twojej firmy, dane dostawcy, tabelę pozycji z SKU dostawcy i ceną zakupu, sumę netto oraz konfigurowalną stopkę. Nie wymaga Dompdf, TCPDF ani mPDF.

Przyjęcie towaru

W widoku szczegółów zamówienia zakupu każda pozycja ma pole Ilość przyjęta. Wpisanie przyjętej wartości aktualizuje stan magazynowy produktu w WooCommerce o deltę względem poprzedniej wartości. Ta logika zapobiega podwójnemu liczeniu przy późniejszej korekcie przyjęcia.

Alerty o brakach

Wtyczka codziennie wykrywa cztery typy sytuacji i przypisuje każdej poziom powagi.

Typy alertów

  • IMMINENT: brak przewidywany w ciągu 7 dni (konfigurowalne), powaga krytyczna
  • WARNING: brak przewidywany w ciągu 14 dni (konfigurowalne), powaga warning
  • OVERSTOCK: pokrycie zapasem powyżej 180 dni, powaga info
  • REORDER: stan spadł poniżej reorder point, powaga warning

Cykl życia

Alert powstaje ze statusem active. W następnym cyklu, jeśli sytuacja się utrzymuje, jest oznaczany pending_recheck; jeśli zniknęła, przechodzi do resolved ze znacznikiem czasu. Ten mechanizm zapobiega spamowi powtarzających się alertów.

Powiadomienia e-mail

Codzienny digest jest wysyłany na adres skonfigurowany w ustawieniach, z listą nowych alertów krytycznych i warning. Treść e-maila to prosta tabela HTML, filtrowalna po powadze.

Ustawienia

Strona Inventory Forecasting → Ustawienia zawiera cztery sekcje.

Prognozy

  • Okno historii: domyślnie 365 dni. Im dłuższe okno, tym solidniejsza sezonowość, ale rośnie waga tabeli sales_daily.
  • Horyzonty prognoz: lista rozdzielona przecinkami, domyślnie 30, 60, 90. Możesz dodać na przykład 14 albo 180.
  • Poziom obsługi: domyślnie 95 %. Przekładany na z = 1,645 odwrotnością rozkładu normalnego. Przejdź na 99 % (z = 2,326) dla zapasu krytycznego, na 90 % (z = 1,282) dla niestrategicznego.

Alerty

  • Dni wyprzedzenia warning: domyślnie 14
  • Dni wyprzedzenia krytycznego: domyślnie 7
  • E-mail odbiorcy codziennego digestu

Zamówienia zakupu

  • Generowanie automatyczne włączone: domyślnie odznaczone
  • Przedrostek numeracji: domyślnie PO-, daje identyfikatory w rodzaju PO-2026-00042
  • Waluta: dziedziczona z WooCommerce, nadpisywalna per dostawca

Firma

Dane Twojej firmy drukowane w nagłówku PDF-ów zamówień zakupu: nazwa, adres, numer rejestrowy albo NIP/VAT, e-mail, telefon, logo.

Zadania cron

Cztery zadania są planowane automatycznie przy aktywacji wtyczki, w strefie czasowej witryny.

  • 02:00Odbudowa historii: agreguje wczorajsze zamówienia w tabeli sales_daily. Lekkie, kilka sekund.
  • 02:30Obliczenie prognoz: przelicza trend, sezonowość i reorder pointy. Cięższe, od jednej do pięciu minut zależnie od katalogu.
  • 03:00Wykrywanie alertów: tworzy i zamyka alerty według progów. Szybkie.
  • 04:00Automatyczne generowanie zamówień zakupu: wykonuje się tylko przy włączonej opcji w ustawieniach.

WP-Cron. Domyślnie WP-Cron uruchamia się tylko przy zdarzeniu wywołanym przez odwiedzającego. W witrynie o niskim ruchu może to opóźniać zadania nocne. Najlepiej skonfiguruj cron systemowy wywołujący wp-cron.php co 15 minut, albo wyłącz WP-Cron w wp-config.php i steruj nim w pełni cronem systemowym.

REST API

Wtyczka udostępnia kilka tras REST w przestrzeni nazw dfif/v1. Wszystkie wymagają zdolności manage_woocommerce i nonce’a WordPressa 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

Te trasy są używane wewnętrznie przez przyciski panelu (przez wp.apiFetch z nagłówkiem X-WP-Nonce) i mogą być też wywoływane z dowolnego klienta uwierzytelnionego przez cookies WordPressa albo klucze aplikacji.

Hooki WordPressa

Główne etapy działania wtyczki emitują akcje i filtry, które możesz przechwycić:

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);

Rozwiązywanie problemów

Prognozy pozostają na zerze

Sprawdź, czy odbudowa historii została wykonana i czy tabela sales_daily zawiera wiersze. Jeśli w skonfigurowanym oknie nie masz zamówień zrealizowanych ani w trakcie realizacji, wtyczka nie ma z czego prognozować. Sprawdź też, czy WooCommerce jest włączony.

Prognozy wydają się niespójne

Dwie częste przyczyny: zbyt krótka historia (poniżej 30 dni wtyczka przechodzi na prognozę naiwną) albo skrajna, niereprezentatywna sezonowość (pojedynczy Black Friday). Spójrz na wyświetlany poziom pewności: poniżej 40 % prognozę trzeba traktować ostrożnie.

PDF się nie generuje

Sprawdź, czy katalog wp-content/uploads/dfif-po/ ma prawa zapisu. Wtyczka umieszcza tam PDF-y przed wysyłką. Plik .htaccess jest dodawany automatycznie, aby zablokować bezpośredni publiczny dostęp.

E-mail nie wychodzi

Wtyczka używa wp_mail, który na niektórych hostingach bywa zawodny. Zainstaluj wtyczkę SMTP (WP Mail SMTP, FluentSMTP) i skonfiguruj usługę dostarczalności (Postmark, SendGrid, Mailjet, Brevo). Sprawdź też, czy e-mail dostawcy jest wpisany i poprawny.

Cron nie działa

Użyj wtyczki WP Crontrol, aby wylistować zaplanowane hooki i zobaczyć ich następne wykonanie. Cztery hooki mają przedrostek dfif_. Jeśli ich nie widzisz, wyłącz i włącz ponownie Inventory Forecasting.

Deinstalacja

Przy wyłączeniu crony są odplanowywane, ale tabele i dane pozostają. Przy pełnej deinstalacji przez Wtyczki → Usuń możliwe są dwa zachowania, zależnie od opcji dfif_delete_data_on_uninstall w ustawieniach:

  • Odznaczona (domyślnie): tabele są zachowywane, możesz reinstalować bez utraty historii.
  • Zaznaczona: siedem tabel i katalog wp-content/uploads/dfif-po/ zostają usunięte.

FAQ

Czy mogę używać wtyczki na katalogu z wariantami produktów?

Tak. Prognozy i zamówienia zakupu działają na poziomie pojedynczego wariantu. Każdy wariant może mieć własnych dostawców i własne parametry.

Czy wtyczka jest zgodna z multisite?

Tak, ale każda witryna sieci zarządza własnym katalogiem, własnymi dostawcami i własnymi prognozami. Nie ma współdzielenia między witrynami.

Czy mogę wyeksportować dane?

Wszystkie tabele są dostępne przez standardowy SQL. Natywny eksport CSV jest planowany w przyszłej wersji. Tymczasem wystarczy zwykły SELECT INTO OUTFILE albo wtyczka w rodzaju WP All Export.

Czy wtyczka blokuje panel, jeśli cron nie zadziałał?

Nie. Wtyczka zawsze działa, jedynie wyświetlane prognozy mogą pochodzić sprzed kilku dni. Plakietka Ostatni cron na panelu wskazuje świeżość danych.

Jak wtyczka zachowuje się na katalogu z kilkoma tysiącami SKU?

Odbudowa historii i obliczenie prognoz pozostają liniowe względem liczby aktywnych produktów. Przy 5 000 SKU i 12 miesiącach historii licz się z 10 do 30 minutami nocnego przetwarzania, zależnie od mocy serwera. Żadnego wpływu na wydajność front-office: wszystkie obliczenia są asynchroniczne.

Czy ta strona była pomocna?

Nadal utknąłeś? Napisz do wsparcia