# DataFirefly Inventory Forecasting: kompletny przewodnik

> Kompletny przewodnik po instalacji, konfiguracji i użytkowaniu DataFirefly Inventory Forecasting: prognozowanie braków magazynowych, generowanie zamówień zakupu do dostawców i automatyczne alerty w WooCommerce.

- Strona: <https://www.datafirefly.com/pl/documentation/datafirefly-inventory-forecasting/>
- Język: pl
- Zaktualizowano: 2026-07-29
- Inne języki: [fr](https://www.datafirefly.com/documentation/datafirefly-inventory-forecasting/index.md), [en](https://www.datafirefly.com/en/documentation/datafirefly-inventory-forecasting/index.md), [es](https://www.datafirefly.com/es/documentation/datafirefly-inventory-forecasting/index.md), [de](https://www.datafirefly.com/de/documentation/datafirefly-inventory-forecasting/index.md), [it](https://www.datafirefly.com/it/documentation/datafirefly-inventory-forecasting/index.md), [nl](https://www.datafirefly.com/nl/documentation/datafirefly-inventory-forecasting/index.md), [pt](https://www.datafirefly.com/pt/documentation/datafirefly-inventory-forecasting/index.md)
- Indeks: <https://www.datafirefly.com/pl/documentation/llms.txt>

## 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:00` — **Odbudowa historii**: agreguje wczorajsze zamówienia w tabeli sales_daily. Lekkie, kilka sekund.
- `02:30` — **Obliczenie prognoz**: przelicza trend, sezonowość i reorder pointy. Cięższe, od jednej do pięciu minut zależnie od katalogu.
- `03:00` — **Wykrywanie alertów**: tworzy i zamyka alerty według progów. Szybkie.
- `04:00` — **Automatyczne 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.
