# DataFirefly Loyalty: program lojalnościowy Shopware 6

> Instalacja, konfiguracja i użytkowanie DataFirefly Loyalty: punkty, poziomy, konwersja na bony zakupowe i rozwiązywanie problemów.

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

## Wprowadzenie

DataFirefly Loyalty dodaje do Shopware 6 kompletny program lojalnościowy: klienci zdobywają punkty przy każdym zamówieniu, awansują w poziomach z mnożnikami i wymieniają punkty na bony zakupowe oparte na natywnych promocjach Shopware. Rozszerzenie działa na Shopware 6.5, 6.6 i 6.7 z jednego i tego samego pliku ZIP, bez żadnej kompilacji.

## Instalacja

### Z poziomu administracji

1. Przejdź do **Rozszerzenia > Moje rozszerzenia**.
2. Kliknij **Prześlij rozszerzenie** i wybierz plik `DfLoyalty-1.0.0.zip`.
3. Kliknij **Zainstaluj**, a następnie aktywuj rozszerzenie.

### Z wiersza poleceń

```
bin/console plugin:refresh
bin/console plugin:install --activate DfLoyalty
bin/console cache:clear
```

Instalacja tworzy dwie dedykowane tabele: `df_loyalty_account` (jeden wiersz na klienta) i `df_loyalty_transaction` (rejestr wszystkich operacji na punktach).

Nie jest wymagany żaden build JavaScript: rozszerzenie nie zawiera skompilowanego modułu administracji, co gwarantuje zgodność z trzema gałęziami 6.5, 6.6 i 6.7.

## Konfiguracja

Otwórz **Rozszerzenia > Moje rozszerzenia > DataFirefly Loyalty > Konfiguruj**. Wszystkie ustawienia są dostępne per kanał sprzedaży: możesz włączyć program tylko w jednym sklepie albo stosować różne stawki w zależności od kanału.

### Przyznawanie punktów

- **Włącz program**: główny przełącznik. Po wyłączeniu strona konta klienta zwraca błąd 404 i żadne punkty nie są przyznawane.
- **Wyzwalacz przyznania**: _Płatność zaksięgowana_ (status transakcji `paid`, zalecane) lub _Zamówienie zakończone_ (status zamówienia `completed`).
- **Punkty za jednostkę walutową**: liczba punktów zdobywanych za każde wydane euro. Domyślnie: 1.
- **Podstawa obliczeń**: kwota zamówienia brutto lub netto.
- **Uwzględnij koszty wysyłki**: domyślnie koszty wysyłki są wyłączone z obliczeń.

### Poziomy

Do skonfigurowania są trzy poziomy, każdy z nazwą, progiem i mnożnikiem. Progi odnoszą się do **punktów zgromadzonych łącznie** (nigdy niepomniejszanych przez konwersję), a mnożnik dotyczy wszystkich przyszłych zdobyczy.

- **Poziom 1**, domyślnie: Bronze, od 0 punktów, mnożnik ×1.0
- **Poziom 2**, domyślnie: Silver, od 500 punktów, mnożnik ×1.25
- **Poziom 3**, domyślnie: Gold, od 2 000 punktów, mnożnik ×1.5

Przykład: klient Silver (×1.25), który składa zamówienie na 100 EUR brutto przy stawce 1 punkt/EUR, zdobywa 125 punktów.

### Konwersja na bony zakupowe

- **Kurs konwersji**: liczba punktów potrzebnych na 1 EUR bonu. Domyślnie: 100 (100 punktów = 1,00 EUR).
- **Minimum konwersji**: minimalna liczba punktów, aby uruchomić konwersję. Domyślnie: 200.
- **Krok konwersji**: punkty wymieniają się w wielokrotnościach tej wartości. Domyślnie: 100.
- **Ważność bonów**: czas życia bonu zakupowego w dniach. Domyślnie: 90.

## Działanie po stronie klienta

W menu konta klienta pojawia się pozycja **Program lojalnościowy**. Strona `/account/loyalty` wyświetla:

- dostępne saldo punktów i łączną liczbę punktów zdobytych od początku;
- aktualny poziom z paskiem postępu do następnego poziomu;
- formularz konwersji na bon zakupowy;
- historię 50 ostatnich operacji (zdobycia, konwersje, anulacje).

Gdy klient wymienia punkty, rozszerzenie tworzy **natywną promocję Shopware**: unikalny kod typu `LOYAL-XXXXXXXX`, zarezerwowany dla jego konta, jednorazowego użytku, ze stałym rabatem na koszyk. Kod stosuje się w koszyku jak każdy inny kod promocyjny. Wszystkie wygenerowane promocje znajdziesz w **Marketing > Promocje**.

## Anulacje i zwroty

Gdy zamówienie przechodzi w status _Anulowane_ lub jego płatność w status _Zwrócona_, punkty zdobyte za to zamówienie są automatycznie odbierane. Operacja jest odnotowywana w historii klienta pod etykietą "Anulowane". Odebranie jest idempotentne: może nastąpić tylko raz na zamówienie.

W wersji 1.0 zwrot częściowy nie jest rozliczany proporcjonalnie: to przejście pełnej płatności w status _Zwrócona_ uruchamia odebranie całości punktów z zamówienia.

## Bezpieczeństwo i integralność danych

- Obciążenie punktów jest atomowe w bazie danych: dwie równoczesne konwersje nie mogą wydać dwa razy tego samego salda.
- Każda operacja jest zapisywana w rejestrze typu append-only, z referencją zamówienia, typem, punktami ze znakiem i kodem bonu, jeśli dotyczy.
- Utworzenie bonu i zapis księgowy są wykonywane w tej samej transakcji SQL: nigdy bon bez obciążenia ani obciążenie bez bonu.

## Rozwiązywanie problemów

### Link Program lojalnościowy nie pojawia się w koncie

Rozszerzenie wstrzykuje swój link przez blok Twig `page_account_sidebar_link_orders`. Jeśli Twój niestandardowy motyw usunął lub zmienił nazwę tego bloku, dodaj link ręcznie w szablonie sidebara konta, wskazując na trasę `frontend.account.dfloyalty.page`.

### Punkty nie są przyznawane

1. Sprawdź, czy program jest włączony dla danego kanału sprzedaży.
2. Sprawdź skonfigurowany wyzwalacz: przy _Płatność zaksięgowana_ transakcja musi osiągnąć status `paid`; przy _Zamówienie zakończone_ zamówienie musi osiągnąć `completed`.
3. Wyczyść cache po zmianie konfiguracji: `bin/console cache:clear`.

### Odinstalowanie

Przy odinstalowaniu Shopware proponuje zachowanie danych. Jeśli odznaczysz tę opcję, tabele `df_loyalty_account` i `df_loyalty_transaction` zostaną trwale usunięte; wygenerowane wcześniej promocje pozostają, ponieważ są standardowymi promocjami Shopware.
