Zum Inhalt

Changelog – Widerrufs-Button

Alle veröffentlichten Versionen mit den wesentlichen Änderungen.


1.4.3 — Juni 2026

Behoben

  • Footer-Button-Visibility in TWT/ThemeWare-Themes (z. B. ledclusive.de): Body-Level-MutationObserver + 6 Retry-Zeitpunkte (1.5 s / 3 s / 5 s / 7.5 s / 10 s / 15 s) decken jetzt das Theme-Cleanup-Fenster ab. Neuer .footer-contact-form-Anker als Tier 1b für stark angepasste Themes mit eigener Footer-Struktur.
  • Aggressive Cleanup-Schleife: Theme entfernte unsere Body-Sibling-Injection innerhalb von ~500 ms wieder; neue Retry-Strategie + Observer-Mechanismus garantieren langfristige Sichtbarkeit.

1.4.2 — Juni 2026

Behoben

  • Footer-Button-Sichtbarkeit per Visibility-Probe: 150 ms nach jedem Inject wird per getBoundingClientRect() + offsetParent aktiv geprüft, ob unser Wrapper im Layout gerendert ist. Wenn nicht (TWT-Strict-Slot-CSS), fällt der Button automatisch auf Body-Sibling-Position zurück.

1.4.1 — Juni 2026

Behoben

  • Footer-Button bei asynchroner Footer-Hydration: Themes wie ThemeWare TWT (twt-element-*-Markup) rendern den Footer nach DOMContentLoaded neu. Der Inline-JS-Loop läuft jetzt mehrfach (DOMContentLoaded, +300 ms, +1 s, +2.5 s, window.load) plus MutationObserver re-injiziert nach Theme-Re-Rendering. inject() bleibt idempotent über den .kommora-withdrawal-footer-link-Marker.

1.4.0 — Juni 2026

Neu

  • Teil-Widerruf einzelner Bestellpositionen (§ 356a BGB): Kunde wählt auf der Bestätigungsseite per Checkbox aus, welche Order-Positionen er widerrufen will. Standard: alle Häkchen aktiv = vollständiger Widerruf (wie bisher). Bei Teilauswahl wird ein Snapshot (line_items JSON: [{lineItemId, label, quantity}, …]) zum Zeitpunkt der Einreichung am Widerruf gespeichert und im Backoffice + Kundenkonto angezeigt. Spätere Order-Änderungen verändern den Snapshot nicht.
  • „Meine Widerrufe" im Kundenkonto: neue Route /account/withdrawals listet alle Widerrufe des eingeloggten Kunden mit Status-Badge, Datum, Bestellnummer, ggf. Teil-Widerruf-Positionen und Ablehnungs-Hinweis. Sidebar-Link wird automatisch eingeblendet, wenn die Account-Menü-Platzierung aktiv ist.
  • Widerruf ablehnen mit Begründung (§ 312g Abs. 2 BGB): neuer roter Button „Widerruf ablehnen" im Backoffice-Detail mit Modal. Dropdown mit 5 vordefinierten Rechtsgrundlagen + „Sonstiges" (Sonderanfertigung, schnell verderbliche Ware, Hygiene-Versiegelung entfernt, entsiegelter Datenträger, untrennbar vermischt), Pflicht-Freitext-Begründung, sendMail-Checkbox. Status rejected mit eigener roter Badge in Liste, Detail und Kundenkonto. Neue Mail-Vorlage kommora_withdrawal_rejected mit wörtlicher Begründung.
  • Fristbeginn-Option „Bestellung abgeschlossen": dritte Auswahl neben „Bestelldatum" und „Versanddatum". Nutzt den Wechsel des Order-State auf completed als Fristbeginn — sinnvoll für Dienstleistungs-, Software- und Abo-Verträge ohne physischen Versand. Fallback auf Bestelldatum, solange die Order noch nicht abgeschlossen ist.

Behoben

  • „Widerrufslink in Bestellbestätigung anzeigen" war seit Einführung wirkungslos (Config-Feld ohne Code-Verdrahtung). Neuer Mail-Subscriber hängt jetzt einen rechtssicheren Widerrufs-Hinweis-Block mit Link direkt an HTML- und Plain-Body der Bestellbestätigung an — funktioniert ohne Mail-Template-Anpassung. Sprache wird heuristisch aus dem Mail-Body erkannt (DE/EN).
  • Footer-Button bei eingeklapptem Hotline-Akkordeon sichtbar: Anker-Erkennung prüft Bootstrap-Collapse-Zustand und hängt den Button bei zugeklapptem Akkordeon an die Spalte selbst (statt in den Collapse-Inhalt) — unter der Hotline-Sektion und immer sichtbar.
  • Footer-Button-Fix für Themes mit leerem <p class="footer-contact-hotline">-Platzhalter: der frühere Tier-2-Selector matchte das leere Inline-<p>, unser Block-Element-Button landete dadurch in einem Inline-Element und wurde silently vom Browser aus dem Layout geworfen. Selector ist raus, Spalten-Tier greift sauber.

1.3.3 — Juni 2026

Behoben

  • Admin-Menü-Eintrag „Widerrufsbutton" unter „Bestellungen" auf SW 6.5 / 6.6 wiederhergestellt: in den 1.2.9–1.3.2-Paketen fehlten die vorkompilierten Admin-Bundles (src/Resources/public/administration/js/ und assets/) — der Build-Schritt hatte sie aus dem ZIP gedroppt. Shopware 6.5/6.6 laden Admin-Module ausschließlich aus diesen vorkompilierten Bundles, daher wurde das Modul ohne sichtbaren Fehler nicht registriert. Auf 6.7 fiel das nicht auf, weil Vite die Sources zur Laufzeit kompiliert.

1.3.2 / 1.3.1 / 1.3.0 — Juni 2026

Behoben (Theme-Robustheit)

  • Footer-Button korrekt unter Spalten-Inhalt platziert statt im Collapse-Trigger-Header (MAN, Opel-Collection): die Heading-Suche per closest('[class*=footer-column]') matchte zuvor die Headline selbst (footer-column-headline) und der Button landete im Collapse-Trigger → Klick triggerte Bootstrap-Collapse statt Navigation. Korrektur: Suche startet jetzt vom Parent-Element der Heading.
  • Kompakter Button-Stil (padding:6px 12px, font-size:13px, line-height:1.4) entsprechend Bootstrap-btn-sm.
  • Capture-phase Click-Handler für Themes, die Klicks abfangen (Smooth-Scroll-Hijacker, SPA-Router, Newsletter-Form-Submit-Listener).
  • Eigene kommora-withdrawal-footer-btn-Klasse statt Bootstrap-.btn .btn-primary plus explizite Inline-Styles für position:static, display:block, float:none — robust gegen Themes, die Bootstrap-Button-Klassen mit position:absolute / float:right überschreiben.
  • Tier-5-Fallback mittig zentriert statt links unten in der Ecke (TÜV-Theme-Fall): Bei reinem Last-Resort-Append an <footer> wird der Wrapper jetzt mit text-align:center; width:100%; margin:24px auto gestylt.
  • Mehrstufige Anker-Erkennung (5 Tiers): Admin-Custom-Selektor → Standard-Shopware-Hotline-Spalte → Heading-Text-Suche → letztes .footer-column-content-inner → Footer-Sibling. Neues Config-Feld „Eigener CSS-Selektor für Footer-Anker (optional)" unter Darstellung.

1.2.x (Customer-Polish-Releases) — Mai/Juni 2026

  • 1.2.9 Cart-Icon Mini-Button, Worker-Lock-Fix, Plausi-Check raus + interner Hinweis bei Name-Abweichung, Kommora-Prefix für Mail-Templates, CSS-Override für Button-Stil-Fix
  • 1.2.8 Async-Worker-Lock-Fix bei Mail-Versand (Customer-Hotfix)
  • 1.2.7 submittedAt als DateTimeInterface an Twig (statt ATOM-String)
  • 1.2.6 Status-Mails (in Bearbeitung / abgeschlossen / Rückerstattung), Refund-Tracking
  • 1.2.5 Plausi-Check raus, stattdessen interne Notiz bei Name-Abweichung
  • 1.2.2 – 1.2.3 Name als Pflichtfeld im Widerrufsformular (§ 356a Abs. 2 Nr. 1 BGB)

1.2.0 — Juni 2026

Neu

  • Wählbare Bestell-Identifikation für ERP-Setups. In der Plugin-Konfiguration kann jetzt unter „Bestell-Identifikation" gewählt werden, ob der Kunde im Gast-Widerrufsformular die Shopware-Bestellnummer eingibt (Standard) oder eine externe Nummer aus einem Custom Field der Bestellung (z.B. die ERP-Bestellnummer). Bei aktivierter ERP-Option erscheint ein Dropdown mit allen Custom Fields, die einem Custom-Field-Set mit Bezug zur Bestell-Entität zugeordnet sind – kein manuelles Tippen technischer Feldnamen nötig. Optionaler Fallback auf die Shopware-Bestellnummer (Default an), damit Altbestellungen ohne gepflegte ERP-Nummer für den Kunden auffindbar bleiben.
  • Das Auswahl-Dropdown für eingeloggte Kunden zeigt im ERP-Modus die externe Bestellnummer als primären Wert, mit der Shopware-Bestellnummer in Klammern – konsistent mit dem, was der Kunde auf Rechnung/Lieferschein sieht und was Ihr Backoffice führt.
  • Eingegebene externe Bestellnummer wird im Widerruf gespeichert (neue Spalte external_order_identifier) und in der Admin-Liste sowie auf der Detailseite angezeigt. Die Twig-Variable externalOrderIdentifier steht in den Mail-Templates und im Flow-Builder-Event kommora_withdrawal.submitted zur Verfügung.

→ Detail: ERP-Bestellnummer einrichten


1.1.9 — Mai 2026

Geändert

  • Konfigurationsoption „Optionale Begründung anzeigen" standardmäßig deaktiviert. Hintergrund: Mit Artikel 11a der RL 2011/83/EU (Anwendung ab 19.06.2026) bzw. § 356a BGB n.F. wird die Abfrage des Widerrufsgrunds – auch als optionales Feld – herrschend als unzulässige Erschwernis des Widerrufs ausgelegt. Shop-Betreiber, die die Begründung trotzdem anzeigen möchten, können die Option im Plugin-Konfig weiterhin aktivieren; ein deutlicher Compliance-Hinweis im Helptext weist auf die Rechtslage hin.

Behoben

  • Postleitzahl im Gast-Widerrufsformular war fälschlich als Pflichtfeld markiert. Sie ist jetzt eine freiwillige Angabe und dient – wenn ausgefüllt – nur noch als zusätzliche Identitätsprüfung. Identifizierung der Bestellung erfolgt zuverlässig über E-Mail-Adresse + Bestellnummer (beides aus der Bestellbestätigung verfügbar).

1.1.8 — Mai 2026

Neu

  • Konfigurationsoption „Keine zeitliche Vorfilterung (alle Bestellungen anzeigen)". Wenn aktiviert, werden dem Kunden alle Bestellungen ohne Vorab-Berechnung einer Widerrufsfrist und ohne Anzeige verbleibender Tage angezeigt. Hintergrund: Mit Art. 11a RL 2011/83/EU (Anwendung ab 19.06.2026) muss die Widerrufsfunktion „während der gesamten Widerrufsfrist verfügbar" sein. Da die gesetzliche Frist nach § 356 Abs. 2 Nr. 1 BGB erst mit Erhalt der Ware beginnt, kann eine Vorfilterung anhand von Bestell- oder Versanddatum den Button bei langen Lieferzeiten zu früh ausblenden.

1.1.7 — Mai 2026

Behoben

  • Unterverzeichnis-Installs: Der Button generiert die URL jetzt über den Shopware-Router. Auf Shops unter https://shop.tld/subverzeichnis/public/ wird der Basis-Pfad automatisch berücksichtigt; vorher führte das zu HTTP 500.

1.1.x (frühere Versionen)

  • 1.1.6 Kleinere Bug-Fixes
  • 1.1.4 Mail-Versand-Stabilität
  • 1.1.3 Footer-JS-Fallback für aggressive Themes
  • 1.1.2 Theme-robuster Footer-Button (ThemeWare/TWT)
  • 1.1.1 Vereinfachung der Konfiguration (Button-Pfad-Option entfernt)
  • 1.1.0 Shopware-6.7-Kompatibilität, Custom CompilerPass für Twig-Injection

1.0.x (Initial-Releases)

  • 1.0.6 / 1.0.7 / 1.0.8 Direktversand statt Flow-Builder-Roundtrip, dynamische Route, Pfad-Konfiguration
  • 1.0.4 Resend-Funktion (Admin-Button + CLI)
  • 1.0.3 Resend-Funktion mit 60-Sek-Cooldown
  • 1.0.2 Flow-Storer für SW 6.5+6.6-Kompatibilität, Twig-Injection
  • 1.0.0 → 1.0.1 Initial Store-Release

Versions-Hinweise zur Compliance 19.06.2026

Plugin-Version Compliance-Status
< 1.1.8 nicht vollständig konform – Vorfilterung kann Button zu früh ausblenden
1.1.8 konform, wenn „Keine zeitliche Vorfilterung" manuell aktiviert
1.1.9+ konform-bereit – PLZ optional, Begründung Default aus, „Keine Vorfilterung" verfügbar
1.2.0+ konform + ERP-Setup-Unterstützung
1.4.0+ konform + Teil-Widerruf (§ 356a), Ablehnung mit Rechtsgrundlage (§ 312g II), „Meine Widerrufe"-Kundenkonto, Fristbeginn „Bestellung abgeschlossen" für Dienstleistungs-Verträge
1.4.3+ konform + Theme-Robustheit für TWT/ThemeWare und exotische Custom-Themes (MAN, Opel, BPW, TÜV, ledclusive)

Empfehlung: Wenn Du noch < 1.1.9 bist, vor dem 19.06.2026 updaten.

→ Zurück zur Übersicht