Szacowane terminy dostawy w PrestaShop: daty, godziny graniczne i komunikaty dla klientów
Obliczaj terminy wysyłki i dostawy w PrestaShop: dni robocze, godziny graniczne, realne przedziały. Dbaj o jasne komunikaty przy zakupie i mierz trafność.
Podaj klientom przedział dostawy, który potrafisz uzasadnić i dotrzymać. Oblicz go na podstawie dostępności, przygotowania zamówienia, transportu i kalendarzy obowiązujących na każdym etapie.
Co zrobilibyśmy na Twoim miejscu
Zacznij od obecnych etykiet dostawy i zapisów wysyłek, a następnie dodawaj wyliczone daty tam, gdzie dane wejściowe są wiarygodne. Właściwa konfiguracja zależy od źródła danych o stanach magazynowych, integracji realizacji zamówień, modułów, motywu, procesu składania zamówienia, rynków docelowych i zespołu utrzymującego reguły. Zanim dodasz kolejny szacunek, ustal, który system odpowiada za poszczególne dane wejściowe.
Przy zmianie modułu lub motywu użyj prywatnej kopii w środowisku testowym z rzeczywistą konfiguracją sklepu, odizolowanej od faktycznych rezerwacji u przewoźników, eksportów do realizacji i wiadomości e-mail do klientów. Przećwicz reprezentatywne zamówienia, uzgodnij przełączenie działającego sklepu i zachowaj poprzednie ustawienia oraz integrację gotowe do przywrócenia. Zmieniając obliczenia, zachowaj terminy już zaakceptowane przez klientów.
| Twoje wymaganie | Od czego zacząć | Potrzebny dowód |
|---|---|---|
| Jaśniejsze komunikaty bez obietnicy konkretnej daty dostawy | Użyj natywnych etykiet przewoźników i produktów. | W motywie pojawia się właściwy tekst dla produktów dostępnych i niedostępnych w magazynie. |
| Wyliczone daty na stronie produktu i wyjątki czasu przygotowania | Oceń Estimated Delivery Date w swojej konfiguracji. | Dana wersja obsługuje wymagane reguły; każde dodatkowe miejsce wyświetlania i każda reguła miejsca docelowego są prezentowane osobno. |
| Opcje ekspresowe lub dla odległych obszarów mają pojawiać się tylko dla kwalifikujących się koszyków | Oprócz szacunku użyj reguł dostępności przewoźników, takich jak Smart Carrier Rules. | Dostępne usługi i wyświetlane daty są spójne po zmianie adresu lub koszyka. Samo ograniczanie przewoźników nie oblicza daty dostawy. |
| Za obiecany termin odpowiada integracja procesu zamówienia, magazynu lub dostawcy | Zanim dodasz kolejne miejsce wyświetlania, zmapuj jej dane i zdarzenia aktualizacji. | Ten sam zaakceptowany przedział trafia do zamówienia, pracowników i klienta bez konkurencyjnych obliczeń. |
Jeśli chcesz zlecić konfigurację, usługa PrestaShop Module Installation & Configuration Service może objąć konfigurację uzgodnionego modułu i weryfikację ustalonej ścieżki; dodatkowe prace programistyczne wymagają osobnego zakresu.
Odróżniaj wysyłkę od dostawy
Szacowany termin dostawy odpowiada na pytanie, kiedy paczka powinna dotrzeć do klienta. Szacowany termin wysyłki określa, kiedy planujesz przekazać ją przewoźnikowi. Wyraźnie rozróżniaj te dwa terminy. Przedział z datami, na przykład „Szacowana dostawa: od wtorku 27 do czwartku 29 października”, sprawia, że klient nie musi sam liczyć dni roboczych.
| Dane wejściowe | Znaczenie | Co sprawdzić |
|---|---|---|
| Dostępność i przygotowanie | Czas potrzebny do przygotowania paczki do odbioru | Stan magazynowy, termin dostawcy, kompletowanie, pakowanie i harmonogram odbiorów |
| Transport | Czas od przekazania paczki do jej doręczenia | Usługę przewoźnika, miejsce nadania, miejsce docelowe i kalendarz dostaw |
| Dni zamknięcia i godzina graniczna | Dni lub godziny, w których dany etap nie może być realizowany | Zamknięcia magazynu, dni wolne przewoźnika i lokalną strefę czasową |
Traktuj przygotowanie i transport oddzielnie. Produkt wymagający trzech dni montażu nie ma tej samej daty wysyłki co produkt dostępny w magazynie, nawet gdy oba wysyła ten sam kurier. Data dostępności produktu w przedsprzedaży to element przyjętych zasad, a nie kompletne wyliczenie czasu przygotowania.
Ustal, czy przygotowanie zaczyna się od złożenia zamówienia, potwierdzenia płatności czy innego etapu realizacji. Stosuj tę regułę konsekwentnie do przelewów bankowych, opóźnionych powiadomień zwrotnych o płatności i zamówień oczekujących na zatwierdzenie.
Poprawnie używaj natywnych etykiet terminów dostawy
PrestaShop obsługuje pole tekstowe przewoźnika Transit time oraz etykiety czasu dostawy produktów. Pole przewoźnika to tekst widoczny dla klienta, na przykład „od 2 do 3 dni roboczych”, wyświetlany przy opcjach wysyłki. Nie jest to ustrukturyzowany zakres liczbowy, który kalkulator dat mógłby niezawodnie odczytać.
Produkty mogą korzystać z domyślnych etykiet dostawy lub własnych etykiet dla produktów dostępnych i niedostępnych w magazynie. Sprawdź wybrany tryb czasu dostawy oraz sposób wyświetlania w motywie. Etykiety opisują termin; nie obliczają daty kalendarzowej na podstawie godziny granicznej, reguły przygotowania i kalendarza dni wolnych.
Tekst przewoźnika znajdziesz w Wysyłka > Przewoźnicy. Na karcie Ilości produktu sprawdź Datę dostępności i zachowanie gdy brak na stanie wraz z etykietami dostawy. Układ menu zależy od wydania; zapisz, którą wartość faktycznie aktualizuje Twoja integracja stanów magazynowych.
Zachowaj spójność dostępności produktu, zgody na zamawianie produktów niedostępnych i terminu dostawcy. Nie pokazuj „wysyłka dzisiaj” dla zamówienia oczekującego na towar, jeśli proces realizacji nie pozwala dotrzymać tej obietnicy. Konfigurację przewoźników i stawek opisuje poradnik wysyłki w PrestaShop.
Przygotuj dane przed zmianą ustawień
- Prześledź rzeczywiste zamówienie: porównaj potwierdzenie płatności, rezerwację towaru, zakończenie pakowania, przekazanie przewoźnikowi i dostawę. Wydrukowana etykieta nie jest dowodem odbioru paczki.
- Rozdziel grupy produktów: wskaż produkty magazynowe, montowane, wysyłane przez dostawcę i w przedsprzedaży. Zapisz wyjątki dotyczące kombinacji i ilości, zamiast zakładać, że ustawienie domyślne produktu dotyczy każdego zakupu.
- Opisz każdą usługę: zapisz miejsce nadania, zasięg dostaw, harmonogram odbiorów i przedział czasu transportu. Sprawdź odległe kody pocztowe i usługi oferowane przez moduły procesu zamówienia.
- Uzgodnij kalendarze: zapisz strefę czasową, godzinę graniczną, dni zamknięcia magazynu i dni dostaw przewoźnika. Wskaż osobę utrzymującą każde źródło danych.
- Zapisz oczekiwane wyniki: wykorzystaj poniższe przykłady oraz rzeczywisty wyjątek z Twojego sklepu. Zanim opublikujesz obiecany termin, porównaj wynik wybranego modułu z tymi oczekiwaniami.
Ustal godzinę graniczną, licząc wstecz od ostatniego odbioru: zostaw dość czasu na potwierdzenie płatności, kompletowanie i pakowanie. Ustawienie samej godziny odbioru nie daje zapasu na przygotowanie.
Obliczaj dni robocze i godziny graniczne
Najpierw zdefiniuj, co oznacza dzień na każdym etapie. Przewoźnik może doręczać w sobotę, gdy magazyn jest zamknięty. Używaj rzeczywistego kalendarza usługi, zamiast zakładać, że każda działa od poniedziałku do piątku.
- Przelicz czas złożenia zamówienia na strefę czasową magazynu.
- Porównaj go z godziną graniczną, uwzględniając minuty, jeśli wymagają tego Twoje zasady. W poniższym przykładzie zamówienie dokładnie o 14:00 jest już po godzinie granicznej.
- Przenieś zamówienie złożone po godzinie granicznej na następny dzień.
- Przesuń tę datę na najbliższy dzień roboczy, jeśli sama nim nie jest, nawet przy zerowym czasie przygotowania.
- Dodaj dni przygotowania, a następnie dni transportu, używając kalendarza dla każdego etapu.
Poniższy przykład PHP definiuje zero dni przygotowania jako wysyłkę w początkowej dacie dostosowanej do kalendarza roboczego. Jeden dzień przygotowania oznacza następny dzień roboczy po tej dacie. Dodatnie dni transportu są liczone po wysyłce, bez wcześniejszego przesuwania daty wysyłki na dzień roboczy przewoźnika. Dwa dni transportu po poniedziałku oznaczają środę; dwa po sobotniej wysyłce przy przewoźniku działającym od poniedziałku do piątku oznaczają wtorek. Przy zerowym czasie transportu używany jest pierwszy dzień roboczy przewoźnika przypadający w dniu wysyłki lub później. Kalendarze są jawnymi danymi wejściowymi.
function isWorkingDay(DateTimeImmutable $date, array $weekdays, array $closed): bool
{
return in_array((int) $date->format('N'), $weekdays, true)
&& !in_array($date->format('Y-m-d'), $closed, true);
}
function addWorkingDays(DateTimeImmutable $date, int $days,
array $weekdays, array $closed, bool $normalizeStart = true): DateTimeImmutable
{
if ($days < 0 || !$weekdays) {
throw new InvalidArgumentException('Invalid day count or working week.');
}
foreach ($weekdays as $weekday) {
if (!is_int($weekday) || $weekday < 1 || $weekday > 7) {
throw new InvalidArgumentException('Weekdays must be integers from 1 to 7.');
}
}
$date = $date->setTime(0, 0);
if ($normalizeStart || $days === 0) {
while (!isWorkingDay($date, $weekdays, $closed)) {
$date = $date->modify('+1 day');
}
}
while ($days > 0) {
$date = $date->modify('+1 day');
if (isWorkingDay($date, $weekdays, $closed)) {
--$days;
}
}
return $date;
}
$zone = new DateTimeZone('Europe/Warsaw');
$placed = new DateTimeImmutable('2026-10-23 14:01:00', $zone);
$cutoff = $placed->setTime(14, 0);
$start = $placed >= $cutoff ? $placed->modify('+1 day') : $placed;
$warehouseWeek = [1, 2, 3, 4, 5];
$carrierWeek = [1, 2, 3, 4, 5];
$warehouseClosed = [];
$carrierClosed = [];
$dispatch = addWorkingDays($start, 0, $warehouseWeek, $warehouseClosed);
$arrival = addWorkingDays($dispatch, 2, $carrierWeek, $carrierClosed, false);
// Dispatch: 2026-10-26. Arrival: 2026-10-28.
Sprawdzaj, czy podane dni wolne są rzeczywistymi datami w tej samej strefie czasowej. Utrzymuj osobne dni zamknięcia magazynu i przewoźnika, jeśli się różnią. Przykład nie uwzględnia dni wolnych; dodanie zamknięcia magazynu w poniedziałek 26 października przesuwa wysyłkę na wtorek, a dostawę na czwartek. Zakłada on, że przewoźnik może odebrać paczkę w obliczonym dniu wysyłki. Jeśli odbiór jest niedostępny, przed dodaniem dni transportu przesuń przekazanie na następny termin odbioru; dni pracy magazynu oraz dni odbiorów i dostaw przewoźnika mogą się różnić.
| Zamówienie i założenia | Wysyłka | Dostawa |
|---|---|---|
| Piątek 23 października 2026, 13:00; zero dni przygotowania; dwa robocze dni transportu | Piątek 23 października | Wtorek 27 października |
| Piątek 23 października, 14:01; te same reguły | Poniedziałek 26 października | Środa 28 października |
| Piątek 23 października, 14:01; jeden dzień przygotowania; dwa robocze dni transportu | Wtorek 27 października | Czwartek 29 października |
Zwykłe dodanie dwóch dni kalendarzowych do piątku daje niedzielę 25 października. Przykład po godzinie granicznej daje natomiast środę 28 października, czyli trzy dni kalendarzowe później. Ani dzień zamówienia, ani dni zamknięcia nie powinny być liczone przez pomyłkę.
Uwzględniaj mieszane koszyki, trasy i niepewność
Oprzyj zapas czasu przygotowania na zmierzonych czasach realizacji. Jeśli wysyłka tego samego dnia jest zawodna podczas zwykłego dnia z dużą liczbą zamówień, daj sobie więcej czasu lub przesuń godzinę graniczną na wcześniejszą. Sprawdź wpływ zarówno na niedotrzymane terminy dostaw, jak i ukończone zakupy.
- Mieszane koszyki: jeśli wszystko wysyłasz razem, użyj najpóźniejszej daty gotowości spośród produktów. Jeśli dzielisz wysyłkę, pokaż osobne paczki i daty.
- Kilka miejsc nadania: użyj magazynu, który faktycznie zrealizuje daną pozycję. Nieprzypisane jeszcze miejsce nadania sprawia, że szacunek jest wstępny.
- Kilka usług: połącz właściwy przedział transportu przewoźnika z dniami odbioru i dostawy każdej usługi.
- Zamówienia międzynarodowe: uwzględniaj dni wolne w kraju docelowym i odprawę celną tylko na trasach, których dotyczą. Nie zakładaj stałego zapasu na opóźnienia celne.
- Niepewny czas transportu: pokazuj najwcześniejszą i najpóźniejszą datę uzasadnioną danymi usługi. Zachowaj widoczne słowo „szacowana”.
W przykładowym koszyku załóżmy, że akcesorium magazynowe jest gotowe w poniedziałek, a produkt na zamówienie w czwartek. Przy wspólnej wysyłce najwcześniejszym terminem jest czwartek, nawet jeśli samo akcesorium mogłoby wyjechać w poniedziałek. Usługa ekspresowa może skrócić transport po czwartku; nie skróci produkcji. Jeśli dostawca nie potwierdził gotowości, nie zamieniaj jego wstępnej daty w wiążącą obietnicę dostawy.
Na przykład porównaj „Ekspres: 8,90 EUR, szacowana dostawa w środę” z „Standard: bezpłatnie, szacowana dostawa w przyszły poniedziałek”. Pokazuj te opcje dopiero po obliczeniu dat dla rzeczywistego koszyka i adresu. Przykład ilustruje wybór, a nie cenę przewoźnika ani gwarancję usługi.
Pokazuj obiecany termin przez cały proces zamówienia
Umieść szacowany termin blisko miejsca podejmowania decyzji o zakupie. Wyjaśnij, czy dotyczy wysyłki, czy dostawy, jaką usługę zakłada i czy nadal potrzebny jest adres.
- Strona produktu: pokaż wstępny szacunek obok ceny i przycisku dodania do koszyka. Przelicz go po zmianie kombinacji lub ilości, jeśli wpływają one na przygotowanie.
- Koszyk: oblicz termin dla całego koszyka i zasad dzielenia przesyłek. Nowoczesne domyślne motywy używają
checkout/cart.tpli szablonów częściowych;shopping-cart.tplnależy do starszych motywów. - Etap dostawy: aktualizuj termin według wybranego przewoźnika i miejsca docelowego. Pokazuj razem szybkość i cenę.
- Potwierdzenie i e-mail: zapisz i powtórz zaakceptowany szacunek. Nie zastępuj po cichu pierwotnej obietnicy dzisiejszym przeliczeniem.
W nowoczesnych motywach displayProductAdditionalInfo jest możliwym miejscem wyświetlania na stronie produktu. Dokładne położenie zależy od motywu. Koszyk, proces składania zamówienia i e-mail order_conf wymagają własnej integracji i przepływu danych.
Pomoc modułu opisuje jego działanie na stronie produktu: czas przygotowania w sklepie, godzinę graniczną, wykluczanie weekendów, wskazane dni zamknięcia, przedziały czasu transportu przewoźników i reguły przygotowania produktów, wykorzystanie domyślnego przewoźnika sklepu bez danych o miejscu docelowym, lokalizowany tekst dat oraz etykietę szacowanej wysyłki przy braku skonfigurowanego przedziału transportu.
Estimated Delivery Date obsługuje szacunki w koszyku i procesie zamówienia, reguły miejsca docelowego oraz zapisywanie szacunków w zamówieniu; powyższe podsumowanie pomocy opisuje obliczenie na stronie produktu z użyciem domyślnego przewoźnika. Sprawdź, które funkcje udostępnia zainstalowana wersja, a następnie przetestuj wymagane miejsca wyświetlania, zmiany adresu i przewoźnika oraz odczyt zapisanego terminu. Po wysyłce podaj dane śledzenia i wyjaśnij, gdzie klient może sprawdzać postępy.
Dostosuj terminy do dni zamknięcia i okresów szczytowych
Przed Black Friday, Bożym Narodzeniem, Wielkanocą i innymi okresami wzmożonego ruchu sprawdź komunikaty przewoźników i zaległości w pakowaniu. Dostosuj przygotowanie lub transport, gdy zmienią się te dane. Użyj przedziału dat, jeśli pojedyncza data sugerowałaby większą pewność, niż faktycznie masz.
Komunikat „Zamów do 18 grudnia, a szacowany termin dostawy przypadnie przed Bożym Narodzeniem” wymaga określenia roku, usługi, miejsca docelowego, godziny granicznej i zasad wyjątków. Usuń go po upływie terminu. Licznik musi przechodzić do kolejnego okresu o właściwej lokalnej godzinie granicznej i odświeżać się po północy, także na stronach z pamięci podręcznej.
Przetestuj zmiany czasu letniego i zimowego, piątek po godzinie granicznej, weekendy, święta, zero dni przygotowania, zamówienia oczekujące na towar i zmiany przewoźnika. Jeśli nie potrafisz obliczyć wiarygodnego przedziału dostawy, wyjaśnij termin wysyłki i umożliw zapytanie o pilne zamówienia.
Wykryj błędy przed przełączeniem sklepu
| Co widzisz | Prawdopodobna przyczyna do sprawdzenia | Co sprawdzić przed wdrożeniem |
|---|---|---|
| Data zmienia się dopiero po pełnym odświeżeniu strony | Wynik z pamięci podręcznej lub brak aktualizacji koszyka | Zmień kombinację, ilość i adres, a następnie sprawdź przekroczenie godziny granicznej przy zapełnionej pamięci podręcznej. |
| Ekspres i standard pokazują tę samą nieuzasadnioną datę | Przewoźnik zastępczy lub wspólna reguła transportu | Po każdej zmianie przewoźnika prześledź wybraną usługę i jej ustrukturyzowany przedział transportu. |
| Produkt od dostawcy nadal ma komunikat o wysyłce dzisiaj | Kalkulator nie odczytuje źródła stanów magazynowych lub czasu realizacji | Zmień dostępność u dostawcy w środowisku testowym i prześledź wartość aż do komunikatu dla klienta. |
| E-mail pokazuje nowszą datę niż zaakceptowana w zamówieniu | E-mail przelicza termin zamiast odczytywać zapisaną obietnicę | Po złożeniu testowego zamówienia zmień ustawienia kalendarza i porównaj zapisane dane z potwierdzeniem. |
O co zapytać programistę lub agencję
Zapytaj o źródło wszystkich danych wejściowych, pierwszeństwo reguł produktu i przewoźnika, zdarzenia uruchamiające przeliczenie oraz dowody z używanego motywu i procesu zamówienia. Poproś o przykłady dla anonimowego odwiedzającego, zalogowanego kupującego z adresem i opóźnionej płatności. Ustal, gdzie zapisywany jest zaakceptowany przedział i jak obsługa odczytuje go bez ponownego przeliczania.
Uzgodnij, kto sprawdza pierwsze rzeczywiste zamówienia, jaki błąd powoduje wycofanie zmiany i jak przywracana jest poprzednia konfiguracja. Przy przekazaniu wskażcie zmienione ustawienia, użyte koszyki testowe i nieobsługiwane miejsca wyświetlania, aby Twój zespół mógł odróżnić zmianę konfiguracji od dodatkowych prac integracyjnych.
Mierz trafność szacunków i informuj o opóźnieniach
Zapisuj pierwotny obiecany przedział w zamówieniu. Porównuj rzeczywiste doręczenie przez przewoźnika z końcem tego przedziału. Mierz terminowość wysyłki oddzielnie, aby opóźnienia magazynu nie znikały w średnim czasie transportu.
Wskaźnik terminowości dostaw = doręczone zamówienia, które dotarły najpóźniej w ostatnim obiecanym dniu
/ doręczone zamówienia z zapisanym obiecanym terminem
* 100
Analizuj określony okres, na przykład miesiąc, według przewoźnika, trasy, magazynu i grupy czasu przygotowania produktów. Odnotuj wielkość próby i brakujące dane śledzenia. Ustal cel jakości obsługi na podstawie sprzedawanej usługi i wyników, które potrafisz utrzymać, zamiast przyjmować dowolny uniwersalny procent.
Jeśli wysyłka się opóźnia, sprawdź dokładność stanów magazynowych, reguły przygotowania i godziny graniczne odbiorów. Jeśli wysyłka jest na czas, ale dostawa opóźniona, sprawdź przedział przewoźnika i trasę. Jeśli zamówienia docierają znacznie wcześniej, przed zmianą oceń, czy węższy szacunek pozostanie wiarygodny.
Informuj klientów, gdy opóźnienie zmienia oczekiwaną datę. Podaj nowy przedział, dostępne śledzenie i termin kolejnej aktualizacji. Porównuj liczbę kontaktów dotyczących dostawy i wyniki procesu zamówienia przed zmianami i po nich, używając porównywalnych okresów. Widoczny szacunek wyjaśnia terminy; jego wpływ na sprzedaż zależy od Twojego sklepu.
Pytania właścicieli sklepów
Czy na podstawie tego szacunku klient może wybrać dzień dostawy?
Szacunek opisuje oczekiwany wynik wybranej usługi. Wybór terminu dostawy wymaga osobnego procesu rezerwacji z uwzględnieniem zasięgu usługi, dostępnych miejsc i potwierdzenia przewoźnika. Nie przedstawiaj obliczonej daty jako zarezerwowanego terminu.
Co jeśli zamówienie zostanie zmienione po jego złożeniu?
Zachowaj pierwotny obiecany termin i zapisz każdy nowy przedział wraz z powodem zmiany, takim jak dodanie produktu na zamówienie lub inny adres. Potwierdź zmianę z klientem i udostępnij historię obsłudze.
Jak mierzyć zamówienia bez skanu doręczenia?
Oznacz wynik dostawy jako nieznany i raportuj tę grupę obok mierzonej próby. Ani numer śledzenia, ani skan wysyłki nie dowodzą doręczenia. Zachowaj te zamówienia widoczne do dalszej weryfikacji, zamiast automatycznie zaliczać je jako terminowe.
Kto utrzymuje reguły po konfiguracji?
Wyznacz konkretną osobę odpowiedzialną operacyjnie za nadchodzące dni zamknięcia, zmiany u dostawców i komunikaty przewoźników oraz jej zastępstwo na czas nieobecności. Zapisuj powód zmiany danych wejściowych i termin wyłączenia ustawień tymczasowych. Zegary sklepów i interpretację kalendarzy opisuje strona harmonogramów i dni wolnych.