Instrukcja obsługi modułu
Astra Rabaty dla PrestaShop
Pełna instrukcja wersji 0.6.25: konfiguracja kampanii, progi wartościowe i ilościowe, sumowanie rabatów, natywne CartRule, prezenty za 0,01 zł, zapis finalnych cen do zamówienia, historia zastosowanych promocji, tryb testowy, logi oraz licencjonowanie.
1. Do czego służy Astra Rabaty
Astra Rabaty jest modułem do budowania kampanii promocyjnych i kontrolowania sposobu, w jaki rabaty są liczone, pokazywane klientowi oraz zapisywane w zamówieniu. Moduł może współpracować ze standardowymi regułami koszyka PrestaShop, a nie tylko z promocjami utworzonymi w Astra.
Kampanie
Progi, kody, rabaty produktowe, prezenty, cena końcowa, kategorie, marki i promocje „kup X → odbierz Y”.
Rabaty per produkt
Pokazywanie ceny bazowej i finalnej na produkcie, sumowanie procentów lub tryb sekwencyjny oraz obsługa natywnych CartRule.
Zamówienie
Opcjonalny zapis przecenionych cen do order_detail oraz trwała historia zastosowanych rabatów.
2. Okres testowy, licencja i wsparcie
Nowy klient automatycznie otrzymuje 14 dni pełnego okresu testowego na domenie. Trial służy do sprawdzenia kampanii, koszyka, checkoutu i zgodności z innymi modułami przed zakupem właściwej licencji.
Proponowany cennik licencji — 1 domena
Przedłużenie wsparcia technicznego
| Okres | Cena netto |
|---|---|
| 6 miesięcy | 179 zł |
| 12 miesięcy | 299 zł |
| 24 miesiące | 499 zł |
| Reaktywacja po wygaśnięciu + 12 miesięcy | 499 zł |
3. Instalacja i aktualizacja
- W Back Office przejdź do Moduły → Menedżer modułów → Załaduj moduł.
- Wgraj paczkę ZIP Astra Rabaty.
- Po instalacji otwórz Konfiguruj. Przycisk kieruje do ekranu Główne.
- Przed tworzeniem kampanii przejdź do Testowanie i upewnij się, że testujesz wyłącznie na własnym ruchu.
- Przy aktualizacji wgraj nowszą paczkę na istniejącą instalację. Skrypty upgrade aktualizują tabele i rejestrację hooków.
4. Nawigacja Back Office
W menu administracyjnym znajduje się jedna pozycja Astra Rabaty. Wewnątrz modułu są trzy główne ekrany:
Główne
Sposób liczenia rabatów procentowych, wyświetlanie cen po rabacie i sposób zapisu rabatów do zamówienia.
Kampanie
Lista kampanii, tworzenie, edycja, status ON/OFF, progi, produkty, kody, komunikaty i zasady łączenia.
Testowanie
Tryb testowy, filtry IP/klient/produkt, logger i podgląd logu diagnostycznego.
5. Ustawienia Główne
Te ustawienia są niezależne od konfiguracji pojedynczej kampanii. Określają globalne zachowanie rabatów produktowych w sklepie.
5.1. Wyświetlanie rabatów w koszyku
Domyślne PrestaShop
Ceny produktów pozostają w standardowej postaci, a rabat widoczny jest jako osobna pozycja podsumowania koszyka.
Pokaż rabat na przecenionych produktach
Astra rozdziela produktową część aktywnych CartRule na właściwe pozycje i pokazuje cenę bazową, finalną oraz oszczędność.
5.2. Sposób liczenia rabatów procentowych
Sumuj rabaty procentowe — domyślne
Każdy procent dotyczący produktu jest liczony od tej samej zapamiętanej ceny bazowej. 10% + 5% + 5% = 20%.
Rabatuj sekwencyjnie jak PrestaShop
Każdy kolejny procent jest liczony od ceny po wcześniejszym rabacie. 10% + 5% daje efektywnie 14,5%.
5.3. Zapis rabatów w zamówieniu
Domyślne PrestaShop
order_detail zachowuje standardowe ceny produktów, a rabat pozostaje osobną częścią zamówienia.
Zapisz jako przecenione produkty
Finalne ceny produktów trafiają do order_detail, a produktowa część rabatu jest odejmowana z pozostałych rabatów zamówienia, aby nie została naliczona drugi raz.
6. Sumowanie rabatów a tryb sekwencyjny
Domyślne sumowanie od ceny bazowej
Astra zapamiętuje cenę pozycji przed rabatami CartRule. Każdy procent dotyczący produktu jest liczony od tej samej podstawy.
Nie jest tworzona żadna dodatkowa techniczna reguła typu „korekta sumowania”. Finalna produktowa część wyniku jest używana w koszyku, checkout, płatności i zamówieniu.
Tryb sekwencyjny
Limit 100%
Jeżeli suma procentów na jednym produkcie przekroczy 100%, cena końcowa nie może zejść poniżej 0,00. Faktycznie zastosowana część kolejnych reguł jest odpowiednio przycinana.
SpecificPrice jest już częścią bieżącej ceny produktu. Astra nie traktuje jej drugi raz jako dodatkowego CartRule.7. Typy kampanii
| Typ | Przeznaczenie |
|---|---|
| Rabat progowy od wartości lub ilości | Wiele progów w jednej kampanii; każdy próg może mieć własną korzyść i własny cel rabatu. |
| Prezent lub produkt z rabatem od wartości koszyka | Po osiągnięciu progu klient otrzymuje konkretny produkt gratis, taniej lub za wskazaną cenę końcową. |
| Kup produkt aktywujący → otrzymaj produkt promocyjny | Mechanizmy „kup 2, trzeci taniej”, „kup A, odbierz B”, nagrody powtarzane za pełne zestawy. |
| Rabat na wybrane produkty, kategorie lub marki | Stała promocja ograniczona do konkretnego asortymentu. |
| Kampania uruchamiana kodem rabatowym | Kod wpisuje się w standardowym polu kuponu PrestaShop, a właściwe warunki i korzyść oblicza Astra. |
| Zaawansowana konfiguracja — wszystkie opcje | Pełny wariant, gdy jedna kampania celowo łączy kilka mechanizmów naraz. |
8. Rabaty progowe — konfiguracja dokładna
- Utwórz kampanię typu Rabat progowy od wartości lub ilości.
- Ustaw nazwę, status, priorytet, daty i odbiorców.
- Wybierz Produkty aktywujące / zakres kampanii: wszystkie produkty, kategorie, marki albo ręczną listę produktów.
- W polu Jak liczyć próg wybierz jedną z sześciu podstaw.
- Dodaj dowolną liczbę progów.
- Dla każdego progu ustaw osobno rodzaj korzyści.
- Dla procentu lub kwoty wybierz osobno Co rabatować.
- Opcjonalnie pomiń produkty przecenione katalogowo i ustaw maksymalny rabat kampanii na koszyk.
8.1. Jak liczyć próg
| Opcja | Co jest liczone |
|---|---|
| Wartość całego koszyka | Wartość wszystkich kwalifikowanych pozycji koszyka. |
| Wartość produktów z zakresu kampanii | Do progu wchodzą tylko produkty pasujące do zakresu kampanii. |
| Liczba sztuk w całym koszyku | Sumowana jest liczba sztuk wszystkich produktów. |
| Liczba sztuk z zakresu kampanii | Sumowane są tylko sztuki produktów kwalifikowanych. |
| Liczba różnych produktów w koszyku | Każdy różny produkt liczy się jeden raz niezależnie od ilości. |
| Liczba różnych produktów z zakresu | Analogicznie, ale tylko dla kwalifikowanego zakresu. |
8.2. Rodzaj korzyści na progu
- rabat procentowy,
- rabat kwotowy,
- darmowa wysyłka.
8.3. Każdy próg może działać inaczej
| Próg | Korzyść | Cel |
|---|---|---|
| 300 zł | 5% | Produkty z zakresu kampanii |
| 500 zł | 10% | Cały koszyk |
| 800 zł | 20% | Najtańszy produkt w koszyku |
| 1000 zł | Darmowa wysyłka | Wysyłka |
Astra wybiera najwyższy osiągnięty próg.
9. Co rabatować — wszystkie cele
| Cel | Zachowanie |
|---|---|
| Produkty z zakresu kampanii | Rabat dotyczy wyłącznie produktów pasujących do ustawionego zakresu. |
| Cały koszyk | Po spełnieniu warunku rabat obejmuje cały kwalifikowany koszyk. |
| Najtańszy produkt z zakresu kampanii | Astra znajduje najtańszy produkt tylko w kwalifikowanym zakresie. |
| Najtańszy produkt w koszyku | Odpowiednik natywnego celu PrestaShop reduction_product = -1. |
| Jeden wskazany produkt | Rabat trafia do wskazanego id_product. |
0, najtańszy produkt -1, grupa produktów -2 lub konkretne id_product.10. Zakres produktów, marki i odbiorcy
Zakres asortymentu
- wszystkie produkty,
- konkretne produkty z autocomplete,
- kategorie i opcjonalnie podkategorie,
- producenci / marki,
- pierwsza opcja Wszystkie marki oznacza brak ograniczenia producenta.
Wybrane marki są dodatkowym warunkiem AND względem produktów/kategorii.
Warunki ilościowe
- minimalna liczba sztuk,
- minimalna liczba różnych produktów,
- ilość liczona łącznie w zakresie albo wymagana w jednej kategorii,
- opcjonalne pomijanie produktów przecenionych katalogowo.
Odbiorcy
- wszyscy klienci lub wybrane grupy klientów,
- wszyscy / tylko zalogowani / tylko goście,
- kod publiczny lub przypisany do konkretnego klienta.
11. Produkt promocyjny i cena końcowa 0,01 zł
Nie trzeba zmieniać ceny katalogowej produktu. Astra oblicza różnicę potrzebną do osiągnięcia ceny docelowej wyłącznie w kwalifikowanym koszyku.
- Dodaj produkt promocyjny do kampanii.
- Wybierz próg, z którym nagroda jest powiązana.
- Wybierz produkt i liczbę promocyjnych sztuk.
- Jako korzyść wybierz: gratis, procent, kwotę albo Ustaw cenę końcową produktu.
- Dla prezentu za 1 grosz wpisz
0,01. - Wybierz dodawanie ręczne albo automatyczne.
12. Kup produkt aktywujący → odbierz produkt promocyjny
- Wybierz typ kampanii produktowej.
- Wskaż konkretny produkt aktywujący albo użyj całego zakresu kampanii.
- Ustaw wymaganą liczbę produktów aktywujących.
- Wybierz produkt promocyjny i jego liczbę sztuk.
- Ustaw gratis, cenę końcową, rabat procentowy lub kwotowy.
- Wybierz dodawanie produktu promocyjnego lub rabatowanie produktu już znajdującego się w koszyku.
- Opcjonalnie włącz powtarzanie nagrody za każdy pełny zestaw i ustaw maksymalny limit nagród.
W trybie ręcznego wyboru moduł zapamiętuje ilość produktu obecną przed wyborem nagrody, dzięki czemu po utracie warunku usuwa tylko promocyjne sztuki dodane ponad wcześniejszą ilość.
13. Kampanie uruchamiane kodem
Zwykły CartRule PrestaShop
Dla prostego kuponu, np. 10% na cały koszyk, wystarczy standardowa reguła koszyka.
Kod Astra
Natywny CartRule jest aktywatorem, a Astra sprawdza dodatkowe warunki: zakres, progi, ilości, nagrody, limity i łączenie.
- Wybierz typ Kampania uruchamiana kodem rabatowym.
- Ustaw warunki, zakres i korzyść.
- Dodaj kod. Pusty klient = kod publiczny; wybrany klient = kod indywidualny.
- Ustaw limit łączny i limit użyć per klient.
- Zapisz kampanię. Klient wpisuje kod w standardowym polu kuponu PrestaShop.
14. Łączenie kampanii i natywnych promocji
14.1. Kampanie Astra między sobą
Domyślnie kampania może łączyć się ze wszystkimi kampaniami Astra, także utworzonymi później. Można przełączyć ją na tryb łączenia wyłącznie z wybranymi kampaniami.
Jeżeli dwie spełnione kampanie nie mogą działać razem, decyduje priorytet: niższa liczba oznacza wyższy priorytet.
14.2. Działanie z natywnymi promocjami PrestaShop
| Tryb | Zachowanie |
|---|---|
| Stosuj natywne zasady PrestaShop | Core PrestaShop rozstrzyga zgodność i priorytety. |
| Zawsze łącz rabat Astra z promocjami PrestaShop | Techniczna reguła Astra może działać obok natywnych promocji. |
| Każda promocja PrestaShop ma pierwszeństwo | Dowolna natywna reguła blokuje kampanię Astra. |
| Tylko wpisany kod PrestaShop ma pierwszeństwo | Blokują reguły z niepustym kodem. |
| Tylko automatyczna promocja PrestaShop ma pierwszeństwo | Blokują reguły bez kodu. |
15. Rabaty per produkt dla natywnych CartRule PrestaShop
Astra nie ogranicza allocatora do własnych kampanii. Analizuje finalny zestaw reguł zwrócony przez PrestaShop.
- rabat procentowy,
- rabat kwotowy,
- cały koszyk,
- najtańszy produkt,
- konkretny produkt,
- grupa / ograniczenie produktów,
- wiele reguł jednocześnie,
- reguły automatyczne i uruchamiane kodem.
Darmowa wysyłka nie jest rozkładana na produkty. Jeżeli reguła zawiera rabat produktowy i darmową wysyłkę jednocześnie, na produkty przenoszona jest tylko część produktowa.
16. Zapis rabatów jako przecenione produkty
Opcja Zapisz jako przecenione produkty służy sklepom, które chcą, aby systemy zewnętrzne widziały cenę produktu już po rabacie.
Co jest aktualizowane
order_detail— ceny jednostkowe i sumy produktów,orders.total_products*,- pozostała wartość
order_cart_rule, - podatki,
- pojedyncza faktura zamówienia.
Produktowa część rabatu przeniesiona do cen nie może zostać odjęta ponownie jako osobny rabat.
17. Historia zastosowanych rabatów
Astra zapisuje trwały snapshot rabatów do tabeli abpe_order_discount_history. Dzięki temu po przeniesieniu rabatu do cen produktów nadal wiadomo, jakie promocje zostały użyte.
Zapisywane informacje
- nazwa i kod reguły,
- źródło: Astra lub PrestaShop,
id_cart_rule,id_campaigndla kampanii Astra,- rodzaj: procent / kwota / darmowa wysyłka,
- faktycznie zastosowana kwota rabatu,
- tryb liczenia,
- rozbicie rabatu na produkty.
Gdzie historia jest widoczna
- na stronie potwierdzenia zamówienia w bloku Zastosowane rabaty,
- w szczegółach zamówienia klienta,
- w Back Office w bocznej kolumnie zamówienia.
Bloki na potwierdzeniu i w Back Office są domyślnie zwinięte. Kliknięcie nagłówka rozwija szczegóły. Na stronie potwierdzenia blok jest pod głównym podsumowaniem zamówienia w displayOrderConfirmation1.
18. Komunikaty frontowe i hooki
Komunikat nie jest obowiązkowy. Jedna kampania może mieć wiele treści przypisanych do różnych miejsc sklepu i różnych stanów.
| Miejsce | Hook | Uwagi |
|---|---|---|
| Koszyk | displayShoppingCartFooter | Informacja o postępie lub aktywnej promocji. |
| Karta produktu | displayProductAdditionalInfo | Standardowe miejsce PrestaShop. |
| Produkt aktywujący | rabatyprodukt | Własny hook Astra do umieszczenia w motywie. |
| Produkt promocyjny | rabatyprezent | Własny hook Astra do umieszczenia w motywie. |
| Checkout nad podsumowaniem | displayCheckoutSummaryTop | Standardowy hook. |
| Checkout pod podsumowaniem | displayCheckoutSummaryBottom | Hook opcjonalny/customowy — nie każdy motyw 1.7.8 go wywołuje. |
| Przed dostawą | displayBeforeCarrier | Standardowy hook. |
| Nad płatnościami | displayPaymentTop | Standardowy hook. |
Przykład wywołania własnych hooków w szablonie produktu:
{hook h='rabatyprodukt' product=$product}
{hook h='rabatyprezent' product=$product}
Kiedy pokazywać komunikat
- zawsze, gdy kampania jest dostępna,
- przed spełnieniem warunku,
- po spełnieniu warunku,
- gdy kampanię blokuje natywna promocja PrestaShop.
19. Koszyk i aktualizacje AJAX
Zmiana ilości, usunięcie produktu albo dodanie/usunięcie kodu powodują ponowne przeliczenie kampanii.
- komunikaty koszyka są odświeżane po
prestashop.updatedCart, - techniczne CartRule są synchronizowane z aktualnym koszykiem,
- produkty promocyjne mogą zostać dodane, uzupełnione lub usunięte po zmianie warunku,
- ceny finalne w trybie rabatu per produkt są ponownie prezentowane po AJAX.
20. Tryb testowy i logi
Tryb testowy i logger są niezależnymi funkcjami. Tryb testowy kontroluje, dla kogo Astra działa. Logger tylko zapisuje diagnostykę.
Testerzy
IP
Najpierw CF_CONNECTING_IP, następnie REMOTE_ADDR.
Klient
Jeden lub kilka identyfikatorów id_customer.
Produkt
Karta wskazanego produktu albo koszyk zawierający testowy id_product.
Filtry działają jako OR. Pusta lista testerów w TEST MODE oznacza: nikt nie jest testerem.
Co może pojawić się w logu
recompute.start
snapshot.built
campaign.match
campaign.calculation
campaign.application
evaluation.result
product_discount.base_price_total
product_discount.allocator
product_discount.presenter_cart
synchronizer.create_rule / reuse_rule / replace_rule
recompute.done
request_id.21. Gotowe scenariusze konfiguracji
21.1. 10% od 500 zł na cały koszyk
- Typ: Rabat progowy od wartości lub ilości.
- Zakres: wszystkie produkty.
- Jak liczyć próg: wartość całego koszyka.
- Próg: 500.
- Korzyść: procent 10.
- Co rabatować: cały koszyk.
21.2. T-shirt tylko aktywuje rabat 10% na cały koszyk od 500 zł
- Zakres kampanii: kategoria T-shirty.
- Jak liczyć próg: wartość całego koszyka.
- Próg: 500.
- Co rabatować: cały koszyk.
- Po usunięciu ostatniego T-shirtu kampania przestaje działać, nawet jeżeli koszyk nadal ma 500 zł.
21.3. Progi ilościowe
| Próg | Korzyść |
|---|---|
| 3 sztuki | 5% |
| 5 sztuk | 10% |
| 10 sztuk | 15% |
21.4. Kup 2, trzeci produkt za 0,01 zł
- Typ kampanii produktowej.
- Wymagana liczba produktów aktywujących: 2.
- Liczba produktów promocyjnych: 1.
- Korzyść: cena końcowa produktu.
- Wartość: 0,01.
- Opcjonalnie włącz powtarzanie za każdy pełny zestaw.
21.5. Natywny kupon 10% + kampania Astra 5% + druga kampania 5%
Przy domyślnym trybie sumowania produkt objęty wszystkimi trzema regułami pokazuje łącznie 20%. Każda reguła procentowa jest liczona od tej samej ceny bazowej produktu.
22. Zalecany proces wdrożenia produkcyjnego
- Zainstaluj moduł i pozostaw TEST MODE.
- Dodaj własne IP lub klienta testowego.
- Skonfiguruj kampanię.
- Sprawdź produkt kwalifikowany i niekwalifikowany.
- Sprawdź zmianę ilości AJAX-em.
- Sprawdź kilka CartRule jednocześnie.
- Sprawdź koszyk, checkout i metodę płatności.
- Jeżeli używasz zapisu cen po rabacie, sprawdź
order_detail, Back Office i integracje zewnętrzne. - Sprawdź blok Zastosowane rabaty na potwierdzeniu i w Back Office.
- Dopiero po pełnym odbiorze wyłącz TEST MODE.
23. Diagnostyka — najczęstsze problemy
| Problem | Co sprawdzić |
|---|---|
| Tester nie widzi kampanii | TEST MODE, aktualne IP, id_customer, produkt testowy, status i daty kampanii. |
| Zwykły klient widzi kampanię podczas testów | Czy jego koszyk nie zawiera produktu oznaczonego jako testowy i czy TEST MODE nadal jest aktywny. |
| Próg nie działa | Zakres aktywujący, podstawa progu, minimalne ilości, daty i warunki klienta. |
| Rabat trafia na zły produkt | Cel „Co rabatować”, zakres kampanii i ograniczenia natywnego CartRule. |
| 10% + 5% pokazuje 14,5% | W Główne ustawiono tryb sekwencyjny. Dla prostego sumowania wybierz „Sumuj rabaty procentowe”. |
| Suma produktów nie zgadza się z checkoutem | Sprawdź log product_discount.base_price_total i allocator. Wszystkie miejsca powinny używać tego samego wyniku. |
| Produkt za 0,01 zł ma złą cenę | Korzyść „Ustaw cenę końcową produktu”, wartość 0,01 i liczba kwalifikowanych sztuk. |
| Darmowa wysyłka zmienia ceny produktów | Nie powinna. Sprawdź, czy reguła nie zawiera również części produktowej. |
| Brak historii rabatów w zamówieniu | Sprawdź tabelę historii, hook displayOrderConfirmation1, displayAdminOrderSide i log walidacji zamówienia. |
| Blok „Zastosowane rabaty” jest wysoki | Powinien być domyślnie zwinięty i rozwijać się po kliknięciu nagłówka. |
Błąd Duplicate entry w hook_module | W wersji 0.6.24+ rejestracja hooków jest idempotentna i nie powinna ponownie dodawać istniejącego wpisu. |
| Konfiguracja wygląda jak surowy HTML po wyłączeniu modułu | Od 0.6.25 kontrolery ładują admin.css i admin.js bezpośrednio. Wyczyść cache BO i upewnij się, że działa aktualna wersja plików. |
| Komunikat z własnego hooka nie jest widoczny | Sprawdź, czy motyw wykonuje rabatyprodukt/rabatyprezent i przekazuje product=$product. |
Brak komunikatu w displayCheckoutSummaryBottom | To opcjonalny/customowy hook. Jego brak w standardowym motywie nie wpływa na naliczanie rabatów. |
astrarabaty-debug.log.Astra Rabaty 0.6.25
Najpierw skonfiguruj i przetestuj kampanię na własnym ruchu. Dopiero po sprawdzeniu koszyka, checkoutu i zamówienia uruchom ją dla wszystkich klientów.