# Receptury / BOM: Zestawy i Montaż, kompletny przewodnik

> Instalacja i konfiguracja modułu Receptury / BOM dla PrestaShop 8 i 9: tryb zestawu wirtualnego, tryb montażu fizycznego, cena obliczana, receptury wielopoziomowe i zakładka Skład.

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

## Prezentacja i wymagania

Moduł Receptury / BOM dodaje do PrestaShop zarządzanie **Bill of Materials**: każdy produkt może zadeklarować listę swoich komponentów wraz z ilościami, a sklep automatycznie wyciąga z tego konsekwencje dla stanu magazynowego i ceny. Dostępne są dwie logiki, zależnie od Twojej działalności: **zestaw wirtualny** (stan obliczany, zmniejszanie komponentów przy sprzedaży) oraz **montaż fizyczny** (zlecenia produkcyjne zasilające stan produktu gotowego).

- Zgodny z PrestaShop 8.0 do 9.x, motyw Classic i motywy pochodne.
- PHP 7.4 do 8.3.
- Multisklep i wielojęzyczność.
- Komponenty z wariantami, receptury wielopoziomowe, ochrona przed referencjami cyklicznymi.
- Architektura zgodna ze standardami PrestaShop (ModuleAdminController, ObjectModel), bez zależności Composer.

W trybie **zestawu wirtualnego** stan produktu nie jest już wpisywany ręcznie: moduł oblicza go jako minimum, na które pozwalają komponenty, i aktualizuje przy każdym ruchu magazynowym.

## Instalacja

Zainstaluj moduł jak każdy inny moduł PrestaShop:

1. Pobierz archiwum `datafireflybom.zip` ze swojego konta klienta.
2. W panelu administracyjnym przejdź do **Moduły > Menedżer modułów**.
3. Kliknij **Wgraj moduł** i wskaż archiwum.
4. Po instalacji kliknij **Konfiguruj**, jeśli chcesz zmienić ustawienia globalne.

Podczas instalacji moduł tworzy swoje tabele (`dfbom`, `dfbom_component`, `dfbom_assembly_log`), rejestruje hooki i dodaje zakładkę **Receptury / BOM** w menu Katalog. Samymi recepturami zarządzasz następnie z poziomu każdej karty produktu.

## Ustawienia ogólne modułu

Strona konfiguracji (**Moduły > DataFirefly BOM > Konfiguruj**) zbiera ustawienia globalne oraz listę istniejących receptur:

- **Synchronizacja w czasie rzeczywistym**: automatycznie przelicza stan zestawów wirtualnych i ceny obliczane, gdy tylko komponent zmieni stan lub cenę. Włączona domyślnie.
- **Dopuść stany ujemne**: pozwala montować lub sprzedawać nawet wtedy, gdy stan komponentów jest niewystarczający (praca just-in-time). Wyłączona domyślnie.
- **Resynchronizuj wszystkie stany i ceny**: przycisk, który za jednym razem przelicza stan i cenę wszystkich aktywnych receptur. Przydatny po imporcie lub migracji danych.

## Tworzenie receptury

Otwórz kartę produktu, a następnie zakładkę **Moduły**: pojawi się panel **Receptura / BOM**. Włącz recepturę przełącznikiem u góry i wykonaj ponumerowane kroki.

### 1. Wybór trybu magazynowego

- **Zestaw wirtualny**: stan produktu jest obliczany automatycznie z komponentów, a każda sprzedaż je zmniejsza. Idealny dla zestawów prezentowych i pakietów kompletowanych na zamówienie.
- **Montaż fizyczny**: produkt gotowy ma własny stan, zasilany zleceniami montażu. Idealny dla produkcji seryjnej.

### 2. Wybór trybu cenowego

- **Cena stała**: cena pozostaje tą zdefiniowaną na karcie produktu. Bez przeliczania.
- **Cena obliczana**: cena staje się sumą cen komponentów pomniejszoną o **rabat procentowy**, który podajesz. Przeliczana automatycznie, gdy komponent zmieni cenę.

### 3. Dodawanie komponentów

Użyj pola wyszukiwania, aby znaleźć produkt po nazwie, indeksie lub identyfikatorze. Wyniki pokazują miniaturę, indeks, stan i cenę; kliknij, aby dodać komponent. Każdy wiersz pozwala ustawić **wymaganą ilość** przyciskami plus i minus. Jako komponent możesz dodać **konkretny wariant**, pojawia się on w wyszukiwaniu osobno.

Cztery wskaźniki u góry panelu (komponenty, ilość możliwa do zmontowania, koszt komponentów, cena obliczana) aktualizują się **na żywo** podczas zmiany ilości i rabatu, jeszcze przed zapisaniem.

### 4. Zapis

Kliknij **Zapisz recepturę**. Moduł zapisuje recepturę, natychmiast przelicza stan zestawu (tryb wirtualny) i w razie potrzeby stosuje cenę obliczaną.

## Tryb zestawu wirtualnego

W trybie zestawu wirtualnego stan produktu to **minimum** tego, na co pozwalają jego komponenty: dla zestawu wymagającego 2 młotków i 1 walizki, przy 120 młotkach i 40 walizkach na stanie, zestaw pokazuje 40 dostępnych sztuk.

- Przy **zatwierdzeniu zamówienia** stan każdego komponentu jest zmniejszany zgodnie z ilościami receptury, a następnie stan zestawu, oraz wszystkich zestawów współdzielących te komponenty, jest przeliczany.
- W razie **anulowania lub zwrotu** pozycji komponenty są automatycznie przywracane.
- Jeśli **synchronizacja w czasie rzeczywistym** jest włączona, każda zmiana stanu komponentu (sprzedaż bezpośrednia, dostawa, inny zestaw) aktualizuje stan powiązanych zestawów.

Tryb zestawu wirtualnego zakłada, że sam zestaw jest produktem **bez wariantów**: obliczony stan jest zapisywany na produkcie (wariant 0). Komponenty natomiast mogą być wariantami.

## Tryb montażu fizycznego

W trybie montażu produkt gotowy zachowuje własny stan. Zasilasz go **zleceniami montażu** z panelu na karcie produktu:

1. Podaj ilość (przycisk **Max** pokazuje, ile sztuk pozwala wytworzyć Twój stan komponentów).
2. Kliknij **Zmontuj**: komponenty zostają zużyte, a stan produktu gotowego rośnie.
3. Kliknij **Zdemontuj**, aby wykonać operację odwrotną: produkt gotowy jest zmniejszany, a komponenty przywracane.

Każda operacja jest rejestrowana w **historii** wraz z pracownikiem, datą, operacją i ilością. Pełna historia jest dostępna w **Katalog > Receptury / BOM**.

Jeśli stany ujemne nie są dopuszczone, montaż jest blokowany, gdy stan komponentów jest niewystarczający, a demontaż, gdy niewystarczający jest stan produktu gotowego. Komunikat wskazuje maksymalną możliwą ilość.

## Cena obliczana

W trybie ceny obliczanej cena netto zestawu równa się sumie cen netto jego komponentów (pomnożonych przez ich ilości), pomniejszonej o zdefiniowany rabat procentowy. Ta cena jest zapisywana na karcie produktu i przeliczana:

- przy każdym zapisie receptury;
- gdy zmienia się cena komponentu, o ile synchronizacja w czasie rzeczywistym jest włączona;
- przy globalnej resynchronizacji ze strony konfiguracji.

W trybie **ceny stałej** moduł nigdy nie dotyka ceny na Twojej karcie produktu. Cena obliczana pozostaje widoczna w panelu orientacyjnie, ale nie jest stosowana.

## Receptury wielopoziomowe i warianty

Komponentem może być **konkretny wariant** produktu (rozmiar, kolor...) albo sam **zestaw** posiadający własną recepturę. Podzespoły zagnieżdżają się wtedy na wielu poziomach, a obliczenia stanów propagują się kaskadowo. Moduł wykrywa i **blokuje referencje cykliczne**, także pośrednie, w momencie zapisu: zestaw nie może zawierać samego siebie.

## Skład w sklepie

Pole wyboru **Pokaż zakładkę Skład na karcie produktu w sklepie** pozwala, produkt po produkcie, zaprezentować klientom zawartość zestawu. Zakładka **Skład** wymienia wtedy każdy komponent z jego obrazem, ilością i linkiem do karty. Wyłączona sprawia, że receptura pozostaje całkowicie niewidoczna po stronie sklepu.

## FAQ i rozwiązywanie problemów

### Stan zestawu się nie aktualizuje

Sprawdź, czy receptura jest **aktywna**, w trybie **zestawu wirtualnego**, i czy synchronizacja w czasie rzeczywistym jest włączona w ustawieniach. Przycisk **Resynchronizuj wszystkie stany i ceny** na stronie konfiguracji wymusza pełne przeliczenie.

### Cena obliczana nie jest stosowana

Cena jest zapisywana na karcie produktu wyłącznie w trybie **ceny obliczanej**. W trybie ceny stałej wyświetlana wartość ma charakter orientacyjny. Sprawdź też, czy komponenty mają uzupełnioną cenę.

### Nie mogę zmontować

Bez dopuszczenia stanów ujemnych montaż jest ograniczony stanem komponentów. Przycisk **Max** pokazuje maksymalną możliwą ilość. Włącz opcję **Dopuść stany ujemne** w ustawieniach, jeśli Twój przepływ tego wymaga.

### Pojawia się komunikat o referencji cyklicznej

Próbujesz dodać jako komponent produkt, który już zawiera (bezpośrednio lub przez podzespół) edytowany właśnie produkt. Usuń ten komponent albo przebuduj strukturę swoich receptur.

### Czy mogę sprzedawać komponenty osobno?

Tak, to wręcz typowy scenariusz. Każdy komponent pozostaje normalnym produktem, sprzedawalnym indywidualnie. Moduł dba o spójność: każda sprzedaż, samego komponentu lub zestawu, aktualizuje stany i ilości możliwe do zmontowania wszystkich powiązanych zestawów.

### Co dzieje się przy deinstalacji?

Deinstalacja usuwa zakładkę i hooki modułu, kasuje jego tabele (`dfbom`, `dfbom_component`, `dfbom_assembly_log`) oraz zmienne konfiguracyjne. Stany i ceny już zapisane na kartach produktów pozostają bez zmian.
