Zamówienia Cykliczne i Planowane: dokumentacja PrestaShop 8 i 9
Instalacja, planowanie i obsługa zamówień cyklicznych: od codziennego crona po link koszyka wysyłany do klienta.
Co robi moduł
Moduł pozwala klientom regularnie otrzymywać to samo zamówienie: co tydzień, co miesiąc, co kwartał, co rok lub w dowolnym odstępie wyrażonym w dniach. Włączają to na stronie produktu, na etapie płatności albo później, na podstawie już złożonego zamówienia.
Przed każdym terminem harmonogram wysyła klientowi e-mail z bezpiecznym linkiem. Gdy klient kliknie link, jego koszyk jest odtwarzany dokładnie w tym momencie, z aktualnymi cenami i stanami magazynowymi, po czym klient trafia do standardowego procesu zamówienia, gdzie płaci wybraną przez siebie metodą.
Brak automatycznego obciążenia. Moduł nie przechowuje żadnych danych płatniczych i nie inicjuje żadnych obciążeń. Nie ma więc mandatu cyklicznego do zbierania, karty do tokenizacji ani silnego uwierzytelnienia do ponownego przeprowadzania. Klient sam zatwierdza i opłaca każde zamówienie, dowolną metodą płatności dostępną w sklepie.
Nowości w wersji 2.0.0
- Subskrybuj i oszczędzaj: rabat procentowy i/lub darmowa dostawa przy każdym zamówieniu cyklicznym.
- Blok na stronie produktu: wybór „Zakup jednorazowy / Zamówienie cykliczne” z częstotliwością i korzyścią.
- E-mail z przypomnieniem, jeśli link do płatności nie zostanie użyty po kilku dniach.
- Odnowiona strefa klienta: pominięcie następnej dostawy, wstrzymanie, anulowanie z opcjonalnym powodem, wybór adresu dostawy, podgląd kolejnych terminów.
- Panel: szacowany miesięczny przychód cykliczny, terminy w ciągu 30 dni, odsetek linków zamienionych w zamówienia, powody anulowania, stan harmonogramu.
- Panel administracyjny: szczegółowa karta, edytor z wyszukiwaniem produktów, akcje masowe, tworzenie ze strony zamówienia.
- Link do płatności naprawdę jednorazowy, blokada harmonogramu, dodany język niderlandzki (8 języków), dane usuwane wraz z kontem klienta (RODO).
Instalacja
- W panelu administracyjnym otwórz Moduły, Menedżer modułów, a następnie Zainstaluj moduł.
- Wgraj dostarczony plik ZIP lub skopiuj katalog
dfrecurringorderdo katalogumodules/sklepu. - Kliknij Zainstaluj. Tabele, menu administracyjne i wartości domyślne zostaną utworzone automatycznie.
- Skonfiguruj zadanie zaplanowane, opisane w następnej sekcji. Bez niego żaden link do płatności nie zostanie wysłany.
Moduł dodaje menu Zamówienia, Zamówienia cykliczne, złożone z trzech ekranów: listy zamówień cyklicznych z panelem, Historii wysyłek i Ustawień. Przycisk Konfiguruj w menedżerze modułów prowadzi do tej samej strony ustawień.
Aktualizacja z wersji 1.x
Wystarczy wgrać plik ZIP 2.0.0 w menedżerze modułów i uruchomić zaproponowaną aktualizację. Zamówienia cykliczne, historia i ustawienia zostają zachowane, a już wysłane linki pozostają ważne. Aktualizacja dodaje nowe kolumny i ustawienia, zmienia nazwy menu, usuwa nieużywane pliki i czyści pamięć podręczną szablonów. Nowe funkcje (rabat, blok produktu, opcja przy płatności, powiadomienia dla sprzedawcy) są domyślnie wyłączone: to Ty decydujesz, czy je włączyć.
Konfiguracja harmonogramu
Moduł powinien być wywoływany raz dziennie, na przykład o 6:00. Jedno wykonanie dziennie wystarcza: harmonogram przetwarza w jednym przebiegu wszystkie zamówienia cykliczne, których termin nadszedł, wysyła przypomnienia i usuwa rabaty wygasłych linków.
Strona Ustawienia wyświetla u góry stan harmonogramu (ostatnie uruchomienie, wysyłki i błędy) oraz polecenie i adres URL gotowe do skopiowania, wraz z tokenem.
Z linii poleceń (zalecane)
To zalecana metoda na serwerze dedykowanym: pozwala uniknąć limitów czasu wykonania serwera WWW.
0 6 * * * php /sciezka/do/sklepu/modules/dfrecurringorder/cli/run.php --token=TWOJ_TOKEN
Opcja --id_shop=N ogranicza wykonanie do jednego sklepu w kontekście multistore. Bez tej opcji przetwarzane są wszystkie sklepy. Token może też pochodzić ze zmiennej środowiskowej DFRO_CRON_TOKEN, dzięki czemu nie pojawia się na liście procesów.
Skrypt zwraca kod wyjścia, który może odczytać system monitorowania: 0 sukces, 2 nieprawidłowy token, 3 moduł wyłączony, 4 trwa inne uruchomienie, 5 co najmniej jedna wysyłka się nie powiodła.
Przez URL
https://twoj-sklep.tld/module/dfrecurringorder/cron?token=TWOJ_TOKEN
Tego adresu można użyć z oficjalnym modułem Zadania cron PrestaShop, z zewnętrzną usługą cron lub z crontaba serwera:
0 6 * * * wget -q -O - "https://twoj-sklep.tld/module/dfrecurringorder/cron?token=TWOJ_TOKEN"
Zwraca raport w formacie JSON. Nieprawidłowy token otrzymuje odpowiedź 403.
Sprawdzenie, czy wszystko działa
Przycisk Uruchom harmonogram teraz wywołuje natychmiastowy przebieg i wyświetla raport: wysłane linki, przypomnienia i ewentualne błędy. Jeśli harmonogram nigdy nie był uruchomiony lub nie działał od ponad 36 godzin, panel wyraźnie to sygnalizuje.
Dwa przebiegi nie mogą się nakładać: blokada w bazie danych gwarantuje, że klient nigdy nie otrzyma dwa razy tego samego przypomnienia, nawet jeśli zadanie zostanie uruchomione dwukrotnie. Jeśli wysyłka e-maila się nie powiedzie, termin nie przesuwa się, a zamówienie cykliczne zostanie przetworzone przy następnym uruchomieniu.
Przycisk Nowy token w każdej chwili generuje nowy token. Pamiętaj wtedy o aktualizacji crontaba, w przeciwnym razie kolejne wywołania zostaną odrzucone.

Konfiguracja modułu
Wszystkie ustawienia znajdują się w Zamówienia, Zamówienia cykliczne, Ustawienia. Wartości spoza zakresu są odrzucane z czytelnym komunikatem.
Doświadczenie klienta
- Klienci mogą ustawiać zamówienia cykliczne: wyświetla „Ustaw zamówienie cykliczne” na stronach potwierdzenia i szczegółów zamówienia oraz sekcję „Moje zamówienia cykliczne” na koncie klienta. Wyłącz tę opcję, jeśli wolisz tworzyć je samodzielnie z panelu administracyjnego.
- Proponuj w koszyku i przy płatności oraz Blok na stronach produktów: zobacz następną sekcję.
- Zamówienia cykliczne na klienta: aktywne i wstrzymane, 0 oznacza brak limitu. Wartość domyślna to 20. Limit jest sprawdzany przy zapisie.
- Minimalna liczba dni między zamówieniami: krótsze częstotliwości są odrzucane.
- Pytaj o powód, gdy klient anuluje: opcjonalne dla klienta. Odpowiedzi pojawiają się w panelu.
- Zestaw ikon motywu: ikona linku na koncie klienta. Classic i Hummingbird używają Material Icons, wiele innych motywów FontAwesome. Wybierz ten, który Twój motyw faktycznie ładuje, albo brak ikony.
Subskrybuj i oszczędzaj
Nagradzaj stałych klientów. Korzyść jest stosowana automatycznie do każdego koszyka odtworzonego z linku zamówienia cyklicznego:
- Rabat na zamówienia cykliczne: procentowy, tylko na zaplanowane produkty, do 90%. 0 oznacza brak rabatu.
- Darmowa dostawa zamówień cyklicznych.
Technicznie moduł tworzy dla każdego linku jednorazową regułę koszyka, przypisaną do klienta, ograniczoną do zaplanowanych produktów i do okresu ważności linku. Nigdy nie jest stosowana do innego koszyka, a harmonogram usuwa reguły wygasłych linków. Pierwsze zamówienie, które tworzy zamówienie cykliczne, pozostaje w normalnej cenie.
Dostępne częstotliwości
Każdą częstotliwość można włączyć lub wyłączyć niezależnie: codzienna, tygodniowa, dwutygodniowa, miesięczna, dwumiesięczna, kwartalna, półroczna, roczna oraz niestandardowa w dniach. Klientom proponowane są tylko włączone częstotliwości.
Domyślnie aktywne są częstotliwości od tygodniowej do rocznej. Częstotliwość codzienna oraz odstęp niestandardowy są wyłączone, ponieważ pasują głównie do specyficznych scenariuszy B2B; nadal możesz ich używać w panelu administracyjnym.
E-maile i linki do płatności
- Wyślij link do płatności przed terminem: domyślnie 3 dni, stosowane do nowych zamówień cyklicznych. Klient może dostosować tę wartość dla swojego zamówienia.
- Link do płatności ważny przez: w dniach, domyślnie 14. Po tym czasie link wyświetla komunikat o wygaśnięciu i zachęca klienta do zamówienia z poziomu konta.
- Przypomnienie, jeśli link nie zostanie użyty po: domyślnie 3 dni, 0 oznacza brak przypomnienia. Jedno przypomnienie na link, wysyłane, dopóki link jest ważny.
- Pomijaj niedostępne produkty: domyślnie włączone. Zobacz sekcję o przypadkach szczególnych.
- E-mail sprzedawcy i powiadomienia: nowe zamówienia cykliczne, anulowania z powodem, kopia każdego wysłanego linku. Przydatne w fazie rozruchu.
Kwalifikujące się produkty
Ogranicz cykliczność do wybranych kategorii (brak wyboru = wszystkie kategorie) i podaj identyfikatory produktów do wykluczenia. Wykluczone produkty nigdy nie są kopiowane do zamówienia cyklicznego ani dodawane do odtworzonego koszyka, również w istniejących zamówieniach cyklicznych. Produkty ukryte, niedostępne do zamówienia lub z obowiązkową personalizacją nigdy nie są powtarzane.
Harmonogram i dane
- Zamówienia cykliczne przetwarzane na uruchomienie: domyślnie 50. Reszta jest przetwarzana przy następnym uruchomieniu.
- Usuń wszystkie dane przy odinstalowaniu: domyślnie wyłączone. Zobacz sekcję Odinstalowanie.

Proponowanie cykliczności podczas składania zamówienia
Domyślnie klient ustawia zamówienie cykliczne później, na podstawie już złożonego zamówienia. Dwie opcjonalne funkcje pozwalają zaproponować mu cykliczność wcześniej, w momencie zakupu. Obie są wyłączone po instalacji: ich włączenie to decyzja, a nie skutek uboczny aktualizacji.
Blok na stronie produktu
Przy kwalifikujących się produktach klient wybiera między Zakupem jednorazowym a Zamówieniem cyklicznym, z częstotliwością i Twoją korzyścią (rabat, darmowa dostawa). Jego wybór jest zapisywany przy koszyku w chwili dodania produktu, nawet jeśli to jego pierwszy artykuł.
Opcja w koszyku i przy płatności
Pole wyboru „Otrzymuj to zamówienie regularnie” pojawia się w koszyku oraz na etapie płatności, a po nim selektor częstotliwości pokazujący tylko włączone częstotliwości. Klient zaznacza pole, wybiera swój rytm i normalnie kontynuuje zamówienie.
Wybór jest zapisywany przy koszyku, a nie w sesji. Ma to znaczenie przy metodach płatności przekierowujących klienta na zewnętrzną stronę: zamówienie jest często zatwierdzane w zwrotnym wywołaniu płatności, gdzie sesja klienta już nie istnieje.
Zamówienie cykliczne powstaje dopiero po zatwierdzeniu zamówienia, z nazwą w języku klienta. Adresy, przewoźnik i waluta pochodzą więc z rzeczywistego zamówienia, a ponowna próba płatności nie może utworzyć dwóch. Pierwszy termin jest wyliczany na podstawie daty zamówienia.
Te opcje pojawiają się wyłącznie dla zalogowanych klientów, ponieważ zamówienie cykliczne należy do konta klienta. Uwzględniają limit na klienta i kwalifikujące się produkty, i nie są proponowane w koszyku, który sam pochodzi z linku zamówienia cyklicznego.
Jeśli nic się nie wyświetla
Te elementy opierają się na standardowych hakach PrestaShop. Niektóre motywy, a zwłaszcza moduły zamówienia na jednej stronie, nie udostępniają ich wszystkich. Strona ustawień wymienia te haki wraz z ich stanem i oferuje przycisk Zarejestruj haki ponownie. Jeśli któryś pozostaje nieaktywny, oznacza to, że Twój motyw lub moduł zamówienia go nie udostępnia.


Po stronie klienta: ustawianie zamówień cyklicznych i zarządzanie nimi
Poza blokiem produktu i opcją przy płatności proces zaczyna się od już złożonego zamówienia, co gwarantuje spójność produktów, adresu i przewoźnika.
- Klient otwiera jedno ze swoich zamówień w historii lub pozostaje na stronie potwierdzenia tuż po zakupie.
- Klika Ustaw zamówienie cykliczne.
- W razie potrzeby dostosowuje ilości. Ilość ustawiona na 0 usuwa produkt.
- Wybiera rytm, datę następnego zamówienia, z jakim wyprzedzeniem ma przyjść link, adres dostawy oraz, opcjonalnie, automatyczne zakończenie (data lub liczba zamówień). Podsumowanie pokazuje kolejne terminy.
- Zapisuje. E-mail potwierdzający podsumowuje zamówienie cykliczne.
Zamówienie pojawia się następnie w sekcji Moje konto, Moje zamówienia cykliczne jako karta ze zdjęciami produktów, szacowaną sumą i kolejnymi terminami. Gdy czeka link, karta pokazuje komunikat „Koszyk na ten termin jest gotowy.”. Z tego ekranu klient może w każdej chwili:
- zmienić produkty, rytm, datę lub adres;
- Pominąć następny termin: zamówienie przechodzi na kolejną datę;
- Wstrzymać, a potem Wznowić, przy czym następny termin jest wtedy przeliczany na przyszłość;
- Anulować, opcjonalnie podając powód;
- kliknąć Zamów teraz, aby otrzymać koszyk bez czekania na termin.
Zakończone lub anulowane zamówienia cykliczne pozostają widoczne w historii konta.




Po stronie sprzedawcy: śledzenie zamówień cyklicznych
Panel
Na górze strony Zamówienia, Zamówienia cykliczne panel pokazuje aktywne zamówienia cykliczne, szacowany miesięczny przychód cykliczny, terminy w ciągu najbliższych 30 dni i ich kwotę, odsetek linków zamienionych w zamówienia w ciągu 90 dni oraz już wygenerowany przychód. Przedstawia też najbliższe terminy, linki wysłane i zamówione w ostatnich 12 tygodniach, powody anulowania i stan harmonogramu.
Lista i karta
Lista wyświetla dla każdego zamówienia cyklicznego klienta, częstotliwość, szacowany koszyk, następne zamówienie, liczbę złożonych zamówień i status. Akcje masowe pozwalają wstrzymać, wznowić lub usunąć kilka wierszy naraz.
Szczegółowa karta zbiera wskaźniki, produkty, adres, kolejne terminy i chronologię linków. Oferuje akcje Wyślij link do płatności teraz (przydatne w supporcie, bez przesuwania terminu), Pomiń następny, Wstrzymaj, Anuluj i Reaktywuj. Edytor pozwala dodawać produkty, wyszukując je po nazwie lub indeksie.
Na stronie zamówienia
Panel na stronie zamówienia wyświetla zamówienia cykliczne utworzone na jego podstawie. Przycisk Utwórz zamówienie cykliczne z tego zamówienia tworzy je jako wstrzymane: sprawdź produkty i datę, a następnie ustaw status Aktywne.
Historia wysyłek
Każdy wygenerowany link tworzy wiersz historii, którego status zmienia się wraz z przebiegiem procesu:
- Link wysłany: e-mail został wysłany, link nie został jeszcze otwarty.
- Link otwarty: klient kliknął, koszyk został utworzony.
- Zamówiono: koszyk stał się zamówieniem. Numer zamówienia jest dołączany automatycznie.
- Wygasł: okres ważności upłynął bez zamówienia.
- Błąd e-mail: wysyłka e-maila nie powiodła się. Sprawdź konfigurację e-mail sklepu.
- Pominięty: termin został pominięty przez klienta lub w panelu administracyjnym.





Jak działa link płatności
Zrozumienie tego mechanizmu pomaga odpowiadać na pytania klientów.
- W momencie wysyłki e-maila moduł nie tworzy żadnego koszyka. Generuje jedynie losowy token o długości 48 znaków, jednorazowy i opatrzony datą.
- Gdy klient klika, moduł weryfikuje token i jego datę wygaśnięcia.
- Jeśli klient nie jest zalogowany, zostaje przekierowany na standardową stronę logowania, a następnie automatycznie wraca do swojego linku. Link nigdy sam nie uwierzytelnia odwiedzającego.
- Po zidentyfikowaniu klienta koszyk jest budowany na podstawie zamówienia cyklicznego, z cenami, promocjami, regułami koszyka i stanami magazynowymi z tej chwili, a także z korzyścią subskrypcji, jeśli jest włączona.
- Klient trafia do procesu zamówienia. Ponowne kliknięcie tego samego linku ponownie wykorzystuje już utworzony koszyk, dopóki nie stał się on zamówieniem.
- Po złożeniu zamówienia link niczego już nie odtwarza: wyświetla komunikat „To zamówienie zostało już złożone” z odnośnikiem do zamówienia.
To dlatego, że koszyk jest budowany w chwili kliknięcia, a nie wysyłki, pozostaje zawsze aktualny. Koszyk wygenerowany z góry w momencie e-maila stawałby się błędny, gdy tylko cena, promocja lub stan magazynowy zmieniłyby się między wysyłką a kliknięciem.

Przypadki szczególne
Produkt niedostępny w terminie
Przy włączonej opcji Pomijaj niedostępne produkty produkt bez stanu jest pomijany (lub dodawany w dostępnej ilości), a pozostałe artykuły pozostają możliwe do zamówienia. Klient widzi informację w koszyku. Koszyk jest odrzucany tylko wtedy, gdy żaden produkt nie jest dostępny: klient widzi wówczas komunikat zachęcający do modyfikacji zamówienia cyklicznego.
Jeśli wyłączysz tę opcję, brak produktu blokuje odtworzenie koszyka. To zachowanie pasuje do sklepów, których zamówienia muszą wychodzić w całości albo wcale.
Adres usunięty między terminami
Jeśli zapisany adres dostawy został usunięty przez klienta, moduł automatycznie przełącza się na jego pierwszy dostępny adres. Adres rozliczeniowy podlega tej samej logice. Klient zawsze może zmienić adres w procesie zamówienia.
Prezenty i reguły koszyka
Produkt przyznany w prezencie przez regułę koszyka nigdy nie jest kopiowany do zamówienia cyklicznego. To celowe: reguła koszyka sama dodaje go przy każdej odbudowie koszyka, gdy tylko warunki są spełnione. Pozostawienie go sprawiłoby, że pojawiłby się dwukrotnie. Prezent podąża więc za aktualnym stanem Twojej reguły.
Jeśli prezent jest dodawany przez moduł zewnętrzny, a nie przez natywną regułę koszyka, automatyczne wykrywanie go nie rozpozna. Dodaj wówczas jego identyfikator do wykluczonych produktów. Wykluczenie działa także dla istniejących zamówień cyklicznych.
Końcówki miesięcy
Zamówienie miesięczne rozpoczęte 31 stycznia nie przesuwa się. Moduł cofa datę do ostatniego dnia miesiąca, gdy ten jest krótszy: 28 lub 29 lutego, a potem 31 marca. Pierwotny dzień jest zapamiętywany, więc nigdy nie ginie.
Wiele walut i multistore
Szacowana suma w e-mailu jest obliczana w walucie zamówienia cyklicznego, z podatkami kraju dostawy. Każde zamówienie cykliczne jest przypisane do sklepu, w którym zostało utworzone: e-maile wychodzą z tożsamością tego sklepu, a link płatności prowadzi do jego domeny.
Zakończenie zamówienia cyklicznego
Zamówienie cykliczne kończy się automatycznie, gdy data końcowa zostanie przekroczona lub gdy osiągnięta zostanie maksymalna liczba zamówień. Przestaje wtedy wysyłać e-maile, pozostając widoczne w historii.
Dane osobowe (RODO)
Zamówienia cykliczne klienta są usuwane wraz z jego kontem. Moduł integruje się z oficjalnym modułem RODO PrestaShop w zakresie eksportu i usuwania danych.
Personalizacja e-maili
Moduł dostarcza cztery szablony, każdy w wersji HTML i tekstowej, w ośmiu językach: francuskim, angielskim, hiszpańskim, włoskim, portugalskim, niemieckim, polskim i niderlandzkim:
dfro_reminder: koszyk gotowy do zapłaty, wysyłany przed każdym terminem z linkiem płatności.dfro_followup: przypomnienie, jeśli link nie został użyty.dfro_created: potwierdzenie wysyłane przy ustawieniu zamówienia cyklicznego.dfro_admin: powiadomienia dla sprzedawcy (nowe zamówienie cykliczne, anulowanie z powodem, kopia linków).
Można je edytować z poziomu Wygląd, Motyw i logo, E-maile lub bezpośrednio w katalogu mails/ modułu. Przypomnienie zawiera między innymi imię klienta, rytm, datę następnego zamówienia, tabelę produktów ze zdjęciami, szacowaną sumę, korzyść subskrypcji, link płatności, link do zarządzania i okres ważności linku.
Kwota wyświetlana w e-mailu to szacunek obliczany w momencie wysyłki, wyłącznie informacyjny. Faktycznie naliczana kwota to kwota koszyka odtworzonego w chwili kliknięcia. Nigdy nie przedstawiaj tej kwoty jako gwarancji ceny.


Rozwiązywanie problemów
Żaden e-mail nie jest wysyłany
Sprawdź w kolejności: czy zadanie zaplanowane faktycznie się wykonuje (panel pokazuje ostatnie uruchomienie), czy token odpowiada temu wyświetlanemu w ustawieniach, czy moduł jest włączony, czy co najmniej jedno zamówienie cykliczne jest aktywne z osiągniętym terminem oraz czy wysyłka e-maili sklepu działa. Przycisk Uruchom harmonogram teraz pozwala szybko wyizolować problem: jeśli wysyła e-maile, przyczyną jest zadanie zaplanowane. W linii poleceń kod wyjścia wskazuje przyczynę.
Link wyświetla „Ten link jest nieprawidłowy”
Token nie istnieje lub został obcięty przez klienta pocztowego. Wyślij nowy link z karty zamówienia cyklicznego w panelu administracyjnym.
Klient krąży w pętli na stronie logowania
Dzieje się tak, gdy link jest otwierany na innym koncie niż konto adresata. Klient powinien się wylogować i ponownie otworzyć link.
Odtworzony koszyk jest pusty
Wszystkie produkty zamówienia cyklicznego są wyłączone, wyprzedane lub wykluczone. Sprawdź je w katalogu i w kwalifikujących się produktach.
Przycisk lub blok się nie wyświetla
Sprawdź odpowiednią opcję w ustawieniach, a następnie stan haków. W sklepie ustawionym na „Nigdy nie kompiluj ponownie plików szablonów” wyczyść pamięć podręczną w Zaawansowane, Wydajność po aktualizacji.
Odinstalowanie
Domyślnie odinstalowanie zachowuje tabele i zamówienia cykliczne. Późniejsza ponowna instalacja odzyskuje więc wszystkie dane. Nieużywane reguły koszyka utworzone przez moduł są usuwane. Aby usunąć wszystko, włącz opcję Usuń wszystkie dane przy odinstalowaniu przed odinstalowaniem modułu.
To usunięcie jest nieodwracalne i obejmuje zamówienia cykliczne, ich pozycje produktowe oraz pełną historię wysyłek. Wykonaj kopię zapasową bazy danych przed włączeniem tej opcji.