Zum Inhalt springen

Regeln und Feiertage

Die beiden Regelfelder des Plugins — Arbeitstage Regel und Zusätzliche Feiertage-Regel — sind Zeiger auf Shopware Rule-Entitäten. Feiertage und eigene freie Tage des Shops werden im Tab Kalender gepflegt; die Feiertage-Regel fügt ihnen weitere Daten hinzu. Dadurch bleibt Ihre Datums-Logik am gleichen Ort wie jede andere Versand-/Zahlungs-/Checkout-Regel, und Sie können dieselbe Regel über Plugins hinweg wiederverwenden.

Intern baut das Plugin einen Custom-Rule-Scope (P2Lab\EstimatedDelivery\Rule\Scope\DateRuleScope), der den passenden Bedingungen ein konkretes Datum preisgibt. Dann läuft es durch die nächsten ~100 Kalendertage und fragt für jeden Tag die Regel: “matchst du dieses Datum?”.

  • Bei der Werktagsregel ist ein Tag, der die Regel matcht, ein Werktag.
  • Bei der Feiertagsregel ist ein passender Tag ein Feiertag und wird ausgeschlossen, selbst wenn er an einem Werktag liegt.

Die resultierende Liste gesperrter Tage wird beim Addieren von “1 Werktag” oder “3 Werktagen” zum Bestelldatum verwendet.

Bedingungen, die mit der Werktagsregel funktionieren

Abschnitt betitelt „Bedingungen, die mit der Werktagsregel funktionieren“

Jede Bedingung, die gegen ein Datum auswertbar ist, funktioniert. Die häufigsten:

  • Wochentag ist einer von — der Standardweg für Mo–Fr (oder Mo–Sa für Kuriere).
  • Datumsbereich — bestimmte Datumsbereiche ausschließen (Werks-Shutdown, Sommerurlaub).
  • Customer rules / Cart rules — nicht nützlich hier, weil die Regel gegen ein hypothetisches zukünftiges Datum ausgewertet wird, nicht gegen einen echten Warenkorb.

Eine typische Werktagsregel:

ANY of
- Wochentag ist einer von: Montag
- Wochentag ist einer von: Dienstag
- Wochentag ist einer von: Mittwoch
- Wochentag ist einer von: Donnerstag
- Wochentag ist einer von: Freitag

oder äquivalent mit Multi-Select Wochentag ist einer von:

Wochentag ist einer von [Mo, Di, Mi, Do, Fr]

Bedingungen, die mit der Feiertagsregel funktionieren

Abschnitt betitelt „Bedingungen, die mit der Feiertagsregel funktionieren“

Die Feiertagsregel wird fast immer aus Datumsbereich-Bedingungen mit OR aufgebaut. Eine Datumsbereich-Bedingung enthält immer das Jahr, daher braucht eine solche Regel jedes Jahr neue Bedingungen; der Tab Kalender wiederholt jährliche Feiertage selbst.

ANY of
- Datumsbereich = 2026-01-01 .. 2026-01-01 # Neujahr
- Datumsbereich = 2026-04-06 .. 2026-04-06 # Ostermontag
- Datumsbereich = 2026-05-01 .. 2026-05-01 # Tag der Arbeit
- Datumsbereich = 2026-12-25 .. 2026-12-26 # Weihnachten

Sie können Regeln pro Land gruppieren und je nach Versandherkunft die passende laden. Weil die Regel nur ein Zeiger ist, können Sie pro Sales Channel zwischen ihnen wechseln.

Das Plugin enthält die Feiertage Deutschlands: die neun bundesweiten Feiertage und die Feiertage der Bundesländer. Feiertage importieren im Tab Kalender fügt die ausgewählten Feiertage den freien Tagen eines Verkaufskanals hinzu. Feiertage, die von Ostern abhängen, wie Karfreitag oder Fronleichnam, werden relativ zu Ostern gespeichert und liegen in jedem Jahr auf dem richtigen Datum.

Derselbe Tab enthält die eigenen freien Tage des Shops, etwa Betriebsferien, und überträgt freie Tage als Datei zwischen Verkaufskanälen und Shops. Siehe Kalender.

Die zwei Regeln werden sequenziell angewendet:

  1. Beginne bei heute + 1 Tag.
  2. Prüfe für jeden zukünftigen Tag, ob es ein Feiertag ist. Falls ja, überspringen.
  3. Sonst prüfe, ob es ein Werktag ist. Falls nicht, überspringen.
  4. Zähle die überlebenden Tage, bis Sie shippingMinDays Werktage gezählt haben — das ist das früheste Versanddatum.
  5. Weiter bis shippingMaxDays — das ist das späteste Versanddatum.
  6. Wiederhole den Prozess ab dem frühesten Versanddatum, mit der Lieferung-Regel und ihren min/max Tagen, um das Lieferfenster zu erhalten.

Deshalb sind Versand- und Lieferregel getrennt: Ihr Lager schließt vielleicht samstags, der Kurier liefert aber samstags.

Die Regel wird einmal pro Request geladen, und das Locked-Days-Array wird einmal pro Sales Channel berechnet. Wiederholte Widget-Renderings auf derselben Seite verwenden dieselbe Kalkulation, sodass der Regel-Lookup günstig ist. Bei ungewöhnlich langem min/max-Fenster (über ~100 Tagen) und Bedarf nach mehr Vorausschau bitte melden.

Der einfachste Sanity-Check ist die Live-Vorschau in der Tab Widget. Ändern Sie Cutoff oder Feiertagsregel, speichern, neu laden — die angezeigten Daten springen entsprechend. Edge-Cases, die einen Test wert sind:

  • Bestellung Freitag 14:00, Freitag-Cutoff 13:00 — sollte auf Montag rollen.
  • Bestellung Freitag 14:00, Freitag-Cutoff 13:00 und Montag als Feiertag — sollte auf Dienstag rollen.
  • Bestellung an einem Feiertag — egal welcher Wochentag — sollte auf den nächsten Nicht-Feiertag-Werktag rollen.