Reguły i święta
Dwa pola reguł pluginu — Working days rule i Additional holidays rule — to wskaźniki na encje Shopware Rule. Święta i własne dni wolne sklepu znajdują się na zakładce Calendar; reguła świąt dodaje do nich kolejne daty. 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. Warunek Date range zawsze zawiera rok, więc taka reguła wymaga co roku nowych warunków; zakładka Calendar sama powtarza coroczne święta.
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.
Święta na zakładce Calendar
Dział zatytułowany „Święta na zakładce Calendar”Plugin zawiera święta Niemiec: dziewięć świąt ogólnokrajowych oraz święta krajów związkowych. Import public holidays na zakładce Calendar dodaje wybrane święta do dni wolnych kanału sprzedaży. Święta zależne od Wielkanocy, takie jak Wielki Piątek albo Boże Ciało, są zapisywane względem Wielkanocy i w każdym roku wypadają we właściwym dniu.
Ta sama zakładka zawiera własne dni wolne sklepu, np. urlop zakładowy, i przenosi dni wolne między kanałami sprzedaży i sklepami w postaci pliku. Zobacz Calendar.
Łą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.