Reguły i święta
Dwa najważniejsze pola konfiguracji pluginu — Working days rule i Holidays rule — to wskaźniki na encje Shopware Rule. Logika dat zostaje w tym samym miejscu co każda inna reguła shipping/payment/checkout, a Ty możesz reużywać tej samej reguły między pluginami.
Jak plugin ewaluuje reguły
Dział zatytułowany „Jak plugin ewaluuje reguły”Wewnątrz plugin buduje customowy rule scope (P2Lab\EstimatedDelivery\Rule\Scope\DateRuleScope), który eksponuje konkretną datę do dopasowanych warunków. Następnie przechodzi przez następne ~100 dni kalendarzowych i dla każdego dnia pyta regułę “czy pasujesz do tej daty?”.
- Dla reguły dni roboczych, dzień który pasuje to dzień roboczy.
- Dla reguły świąt, dzień który pasuje to święto i jest wykluczony, nawet jeśli wypada w dzień roboczy.
Wynikowa lista zablokowanych dni jest tym, czego plugin używa dodając “1 dzień roboczy” lub “3 dni robocze” do daty zamówienia.
Warunki które działają z regułą dni roboczych
Dział zatytułowany „Warunki które działają z regułą dni roboczych”Każdy warunek, który da się ewaluować względem daty, działa. Najczęstsze:
- Day of the week is one of — standardowy sposób zaznaczenia Pon–Pt (lub Pon–Sob dla kurierów).
- Date range — wyklucz konkretne zakresy dat (przerwa fabryczna, urlop letni).
- Customer rules / Cart rules — nie przydatne tutaj, bo reguła jest ewaluowana wobec hipotetycznej przyszłej daty, nie wobec realnego koszyka.
Typowa reguła dni roboczych:
ANY of - Day of the week is one of: Monday - Day of the week is one of: Tuesday - Day of the week is one of: Wednesday - Day of the week is one of: Thursday - Day of the week is one of: Fridayalbo równoważnie z warunkiem Day of the week is one of (multi-select):
Day of the week is one of [Mon, Tue, Wed, Thu, Fri]Warunki które działają z regułą świąt
Dział zatytułowany „Warunki które działają z regułą świąt”Reguła świąt prawie zawsze zbudowana jest z warunków Date range połączonych OR-em:
ANY of - Date range = 2026-01-01 .. 2026-01-01 # Nowy Rok - Date range = 2026-04-06 .. 2026-04-06 # Poniedziałek Wielkanocny - Date range = 2026-05-01 .. 2026-05-01 # Święto Pracy - Date range = 2026-12-25 .. 2026-12-26 # Boże NarodzenieMożesz grupować reguły per kraj i ładować tę, która pasuje do origin wysyłki. Ponieważ reguła to po prostu wskaźnik, można przełączać między nimi per kanał sprzedaży.
Helper świątecznych pluginu
Dział zatytułowany „Helper świątecznych pluginu”Tekst pomocy podpowiada workflow, ale plugin nie dostarcza reguł specyficznych dla kraju — każdy sklep definiuje swoje. To feature: możesz wysyłać z kraju o innych świętach niż kraj sprzedaży, albo blokować też święta firmowe.
Łączenie obu reguł
Dział zatytułowany „Łączenie obu reguł”Reguły są stosowane sekwencyjnie:
- Zacznij od dzisiaj + 1 dzień.
- Dla każdego dnia w przyszłości sprawdź czy to święto. Jeśli tak — pomiń.
- W przeciwnym razie sprawdź czy to dzień roboczy. Jeśli nie — pomiń.
- Licz dni które przeżyły, aż policzysz
shippingMinDaysdni roboczych — to najwcześniejsza data wysyłki. - Kontynuuj do
shippingMaxDays— to najpóźniejsza data wysyłki. - Powtórz proces zaczynając od najwcześniejszej daty wysyłki, używając reguły delivery i jej min/max, by uzyskać okno dostawy.
Dlatego reguły wysyłki i dostawy są osobne: Twój magazyn może być zamknięty w soboty, ale kurier może dostarczać w soboty.
Wydajność
Dział zatytułowany „Wydajność”Reguła ładuje się raz na request, a tablica zablokowanych dni jest liczona raz na kanał sprzedaży. Wielokrotne renderowania widgetu na tej samej stronie reużywają tej samej kalkulacji, więc lookup reguły jest tani. Jeśli masz nietypowo długie okno min/max (powyżej ~100 dni), daj znać.
Debugowanie reguł
Dział zatytułowany „Debugowanie reguł”Najprostszy sposób sprawdzenia reguły to live preview w zakładce Widget. Zmień cut-off time lub przełącz regułę świąt, zapisz, odśwież — wyświetlane daty od razu się zmienią. Edge cases warte testu:
- Zamówienie złożone w piątek o 14:00 z cut-offem piątkowym 13:00 powinno przesunąć się na poniedziałek.
- Zamówienie złożone w piątek o 14:00 z cut-offem piątkowym 13:00 i poniedziałkiem oznaczonym jako święto powinno przesunąć się na wtorek.
- Zamówienie złożone w święto — niezależnie od dnia tygodnia — powinno przejść na następny nie-święty dzień roboczy.