Przewidywana data dostawy: kompletny przewodnik
Instalacja i konfiguracja modułu Przewidywana data dostawy: godzina graniczna, czasy przygotowania, przewoźnicy i dni wolne od pracy.
Prezentacja
DataFirefly Delivery Date pokazuje przewidywaną datę dostawy na karcie produktu, w koszyku i w checkoucie sklepu PrestaShop 8 albo 9. Wyliczenie łączy cztery czynniki: czas przygotowania właściwy dla każdego produktu, widełki dostawy przewoźnika (minimum i maksimum dni roboczych), weekendy i dni wolne od pracy oraz Twoją dzienną godzinę graniczną. Przed godziną graniczną licznik na żywo pokazuje klientowi czas pozostały do wysyłki tego samego dnia.
Instalacja
- W back office PrestaShop otwórz Moduły → Menedżer modułów → Wgraj moduł.
- Wgraj plik
dfdeliverydate.zip. - Kliknij Zainstaluj, a następnie Konfiguruj.
Instalacja tworzy trzy tabele (ps_dfdeliverydate_product, ps_dfdeliverydate_carrier, ps_dfdeliverydate_holiday), rejestruje potrzebne hooki, dodaje ekran administracyjny do dni wolnych i wprowadza wstępnie 8 francuskich świąt państwowych jako wpisy powtarzalne rocznie.
Konfiguracja ogólna
W Moduły → Menedżer modułów → DataFirefly Delivery Date → Konfiguruj pierwszy panel zbiera ustawienia globalne:
- Godzina i minuta graniczna: moment, do którego zamówienie kwalifikuje się do wysyłki tego samego dnia (domyślnie 14:00).
- Strefa czasowa wysyłki: identyfikator strefy PHP, domyślnie
Europe/Paris. Dla polskiego sklepu ustawEurope/Warsaw. Wszystkie wyliczenia dat odbywają się w tej strefie, niezależnie od strefy serwera. - Domyślny czas przygotowania: stosowany do każdego produktu, dla którego nie wprowadzono wartości własnej.
- Domyślne minimum i maksimum dni przewoźnika: używane, gdy przewoźnik nie ma własnych widełek.
- Wyłączenie weekendów: usuwa sobotę i niedzielę z wyliczeń. Jeśli opcja jest wyłączona, możesz wyłączyć samą niedzielę (kolejna opcja), gdy wysyłasz w soboty.
- Tryb wyświetlania: widełki (od minimum do maksimum), sama data najpóźniejsza albo widełki wraz z datą wysyłki.
- Strefy wyświetlania: trzy niezależne przełączniki, czyli karta produktu, koszyk i checkout.
- Licznik na żywo: włącza albo wyłącza licznik HH:MM:SS do godziny granicznej.
Czas przygotowania per produkt
Każda karta produktu w back office ma panel „Delivery date: preparation time”. Wpisz liczbę dni roboczych potrzebnych, zanim produkt będzie mógł zostać wysłany:
0: produkt dostępny w magazynie, gotowy do natychmiastowej wysyłki (kwalifikuje się do wysyłki tego samego dnia przed godziną graniczną);2: produkt wymagający dwóch dni roboczych przygotowania;14: produkt wytwarzany albo personalizowany na zamówienie.
Wartość zapisuje się przy zapisie produktu. W koszyku o dacie wysyłki całego zamówienia decyduje produkt o najdłuższym czasie przygotowania.
Konfiguracja przewoźników
Drugi panel strony konfiguracji wymienia wszystkich aktywnych przewoźników. Dla każdego z nich ustal minimum i maksimum dni roboczych dostawy. Typowe wartości dla polskiego rynku: InPost Paczkomat 1 do 2, DPD 1 do 3, Poczta Polska 2 do 5. Na karcie produktu i w koszyku używane są widełki domyślnego przewoźnika sklepu, a w checkoucie moduł przełącza się na przewoźnika faktycznie wybranego przez klienta.
Gdy PrestaShop wersjonuje przewoźnika (po modyfikacji automatycznie powstaje nowy identyfikator), moduł kopiuje konfigurację na nowy identyfikator, więc żadne ustawienie nie przepada.
Dni wolne od pracy
Dniami wolnymi zarządzasz w Ulepszenia → Dostawa → Dni wolne (Delivery Date). Każdy wpis ma datę, nazwę, znacznik powtarzalny oraz status aktywny albo nieaktywny:
- Powtarzalny: liczą się tylko miesiąc i dzień, a wpis jest automatycznie rzutowany na rok bieżący i następny (na przykład Boże Narodzenie każdego 25 grudnia).
- Jednorazowy: konkretna, pojedyncza data, idealna dla dnia wolnego przypadającego raz albo dla wyjątkowego zamknięcia sklepu.
Wstępnie zainstalowanych jest 8 francuskich świąt państwowych, wszystkie jako powtarzalne: 1 stycznia, 1 maja, 8 maja, 14 lipca, 15 sierpnia, Wszystkich Świętych, 11 listopada i 25 grudnia. Możesz je dezaktywować pojedynczo i wprowadzić własny kalendarz.
Dla polskiego sklepu dezaktywuj 8 maja i 14 lipca, a następnie dodaj jako powtarzalne polskie święta o stałej dacie: 1 i 6 stycznia, 1 i 3 maja, 15 sierpnia, 1 i 11 listopada oraz 25 i 26 grudnia. Święta ruchome zależne od daty Wielkanocy (Poniedziałek Wielkanocny, Zielone Świątki, Boże Ciało) wprowadź jako wpisy jednorazowe na każdy rok, ponieważ ich data zmienia się co roku.
Algorytm wyliczania
Wyliczenie przebiega w poniższych krokach, wszystkie liczone w dniach roboczych w skonfigurowanej strefie czasowej:
- Data wysyłki startuje od dnia dzisiejszego. Jeśli bieżąca godzina jest po godzinie granicznej, przesuwa się na jutro.
- Czas przygotowania produktu (albo maksimum z koszyka) jest dodawany w dniach roboczych, z pominięciem weekendów i dni wolnych.
- Jeśli uzyskana data wysyłki wypada w dniu nieroboczym, przesuwa się na najbliższy dzień roboczy.
- Widełki dostawy wyliczane są przez dodanie minimum i maksimum przewoźnika, również w dniach roboczych.
Komunikat o wysyłce dzisiaj i licznik pojawiają się wyłącznie wtedy, gdy spełnione są trzy warunki naraz: bieżąca godzina jest przed godziną graniczną, dziś jest dzień roboczy, a czas przygotowania wynosi zero.
Personalizacja szablonów
Trzy widgety frontendowe są renderowane przez szablony Smarty możliwe do nadpisania. Skopiuj potrzebne pliki z modules/dfdeliverydate/views/templates/hook/ do themes/twoj-motyw/modules/dfdeliverydate/views/templates/hook/:
product-delivery-date.tpl: karta produktu;cart-delivery-date.tpl: koszyk;checkout-delivery-date.tpl: checkout i potwierdzenie zamówienia.
Każdy szablon otrzymuje tablicę $dfdd, zawierającą między innymi ships_today, min_date_label, max_date_label, ship_date_label, cutoff_ts i display_mode. Arkusz CSS znajduje się w views/css/front.css (klasy z prefiksem dfdd-).
Rozwiązywanie problemów
- Widget nie pojawia się na karcie produktu: sprawdź, czy strefa jest włączona w konfiguracji i czy Twój motyw faktycznie implementuje hook
displayProductAdditionalInfo(robi to motyw Classic i większość motywów rynkowych). - Licznik pokazuje 00:00:00: godzina graniczna na dziś już minęła. Licznik wyświetla się tylko wtedy, gdy wysyłka tego samego dnia jest jeszcze możliwa.
- Daty wydają się przesunięte o jeden dzień: sprawdź strefę czasową ustawioną w module. Wyliczenie korzysta z tej strefy, a nie ze strefy serwera ani przeglądarki. Dla polskiego sklepu właściwa jest
Europe/Warsaw. - Dzień wolny nie jest uwzględniany: sprawdź, czy wpis jest aktywny, a przy wpisie jednorazowym, czy jego rok odpowiada rokowi bieżącemu.
Deinstalacja
Deinstalacja usuwa trzy tabele modułu, wszystkie wpisy konfiguracyjne (prefiks DFDD_), ekran administracyjny dni wolnych oraz rejestracje hooków. Czasy przygotowania wprowadzone produkt po produkcie są więc bezpowrotnie tracone. Jeśli będą Ci potrzebne, wyeksportuj je wcześniej.