Konfigurationsreferenz
Alle Einstellungen liegen auf der Standard-Konfigurationsseite der Erweiterung: Erweiterungen > Meine Erweiterungen, dann Konfigurieren bei Order Editing — Self-Service for Customers. Jede Einstellung gilt für alle Verkaufskanäle oder für einen einzelnen, über die Verkaufskanal-Auswahl oben auf der Seite. Ein eigenes Einstellungsmodul gibt es nicht.
Die folgenden Tabellen werden aus der config.xml des Plugins erzeugt, derselben Datei, aus der die Konfigurationsseite aufgebaut wird. Die Beschreibungen sind die Hilfetexte neben jeder Einstellung.
Einstellungen
Änderungsfenster
| Einstellung | Typ | Standard | Beschreibung |
|---|---|---|---|
holdOrder — Kunden dürfen ihre Bestellung ändern | bool | true | Der Hauptschalter. Solange er an ist, wartet eine neue Bestellung, statt direkt in den Versand zu gehen. Beim Ausschalten werden alle noch wartenden Bestellungen freigegeben. |
windowMinutes — Dauer des Fensters (Minuten) | int | 30 | Wie lange Kunden nach der Bestellung ändern können — üblich sind 30 bis 120 Minuten. Beim Verkürzen enden Fenster, welche die neue Dauer bereits überschritten haben. |
closeOnStateChange — Fenster beenden, wenn sich der Bestellstatus ändert | bool | true | Sobald jemand die Bestellung weiterbewegt, endet die Änderung sofort — auch wenn noch Zeit übrig ist. |
eligibilityRuleIds — Nur Bestellungen, die diese Regeln erfüllen, können geändert werden | multi-select (rule) | — | Leer lassen für alle Bestellungen. Sonst muss eine Bestellung beim Kauf alle gewählten Regeln erfüllen. |
Schutzregeln
| Einstellung | Typ | Standard | Beschreibung |
|---|---|---|---|
lockAfterInvoice — Änderungen stoppen, sobald eine Rechnung existiert | bool | true | Eine erstellte Rechnung muss zu dem passen, was Sie verkauft haben; eine spätere Änderung hieße Stornorechnung und neue Rechnung. Nur ausschalten, wenn Sie das selbst erledigen. |
enforceStock — Bei jeder Änderung den Bestand prüfen | bool | true | Bei Produkten mit „Abverkauf“ kann ein Kunde die Menge nicht über Ihren Bestand erhöhen. Andere Produkte folgen denselben Grenzen wie im Checkout. |
lockPersonalisedItems — Personalisierte Artikel sperren | bool | true | Artikel mit Gravur, hochgeladener Datei oder Freitext lassen sich nicht ändern. |
allowTotalReduction — Änderungen zulassen, die den Bestellwert senken | bool | false | Betrifft nur bereits bezahlte Bestellungen: Sie schulden dann die Differenz zurück und erstatten sie selbst. Unbezahlte Bestellungen sind nie betroffen. |
taxBasisChange — Wenn eine neue Adresse die Steuer ändert | single-select | block | Manche Adressen fallen unter einen anderen Steuersatz. Nicht zulassen lässt die Bestellung wie verkauft; neu berechnen stellt sie für die neue Adresse und ändert, was Sie bekommen. Optionen: block (Änderung nicht zulassen), reprice (Für die neue Adresse neu berechnen). |
shippingChange — Wenn eine Änderung die Versandkosten betrifft | single-select | keep | Beibehalten: Versandkosten bleiben wie verkauft. Neu berechnen: für die geänderte Bestellung wie im Checkout. Optionen: keep (Versandkosten wie verkauft beibehalten), requote (Wie im Checkout neu berechnen). |
Erlaubte Änderungen
| Einstellung | Typ | Standard | Beschreibung |
|---|---|---|---|
allowAddress — Liefer- und Rechnungsadresse | bool | true | Nur der angemeldete Kunde, der die Bestellung aufgegeben hat, kann eine Adresse ändern. |
allowVariantSwap — Andere Variante wählen | bool | true | Kunden wechseln eine Position auf eine andere Variante desselben Produkts, etwa Größe, Kapazität oder Geschmack, zum Preis dieser Variante. Ein anderes Produkt ist nicht wählbar. Personalisierte Artikel bleiben gesperrt. |
allowQuantityChange — Menge | bool | true | Das Erhöhen ist immer erlaubt. Das Verringern folgt Ihrer Einstellung für Änderungen, die den Bestellwert senken. |
allowLineRemoval — Artikel entfernen | bool | false | Kunden entfernen einen Artikel, statt die ganze Bestellung zu stornieren. |
allowShippingMethodChange — Versandart ändern | bool | false | Kunden wählen aus den Versandarten Ihres Checkouts, zu Checkout-Preisen. |
Zwei Einstellungen werden für eine Bestellung festgehalten, wenn ihr Fenster öffnet: Wenn eine neue Adresse die Steuer ändert und Wenn eine Änderung die Versandkosten betrifft. Eine Änderung wirkt auf Fenster, die danach öffnen.
Dauer des Fensters (Minuten): Eine Verlängerung verlängert bereits offene Fenster nicht. Um einer einzelnen Bestellung mehr Zeit zu geben, nutzen Sie Fenster verlängern an der Bestellung (siehe Kunden mehr Zeit geben). Bei einem Wert von 0 oder weniger öffnet sich kein Fenster.
Statuskarte
Oben in der Karte Änderungsfenster prüft die Konfigurationsseite Ihren Shop und zeigt nur dann einen Hinweis, wenn etwas zu tun ist:
| Hinweis | Bedeutung | Was zu tun ist |
|---|---|---|
| „Eine Rechnung wird erstellt, sobald eine Bestellung eingeht, …“ | Ein aktiver Flow auf checkout.order.placed erstellt eine Rechnung, Stornorechnung oder Gutschrift. Jedes Fenster schließt sich, sobald es öffnet. Die Flows werden genannt. | Flow reparieren, der jedes Fenster schließt |
| „Mit aktiver Bestelländerung betritt oder verlässt jetzt jede Bestellung den Status Offen, …“ | Ein aktiver Flow startet, wenn eine Bestellung Offen erreicht oder verlässt. Mit dem Zurückhalten geschieht das bei jeder Bestellung. Die Flows werden genannt. | Warenwirtschaft und Status „Zurückgehalten“ |
| „Diese Regeln lassen sich nicht mehr prüfen, …“ | Eine unter Nur Bestellungen, die diese Regeln erfüllen, können geändert werden gewählte Regel ist ungültig und erfüllt keine Bestellung. Die Regeln werden genannt. | Änderungen nur für bestimmte Bestellungen |
Bestellstatus
| Status | Technischer Name | Englisch |
|---|---|---|
| Zurückgehalten | ssd_held | On hold |
Übergänge:
| Aktion | Von | Nach | Genutzt von |
|---|---|---|---|
ssd_hold | Offen | Zurückgehalten | Dem Plugin, wenn ein Fenster öffnet |
reopen | Zurückgehalten | Offen | Der Freigabe: Hintergrundaufgabe, Jetzt freigeben oder von Hand |
process | Zurückgehalten | In Bearbeitung | Von Hand, einem Flow oder einer Warenwirtschaft. Beendet das Fenster, wenn Fenster beenden, wenn sich der Bestellstatus ändert an ist. |
cancel | Zurückgehalten | Storniert | Von Hand, einem Flow oder der Stornierung durch den Kunden. Beendet das Fenster immer. |
In einem Shop, in dem Kunden Bestellungen selbst stornieren dürfen, lässt sich auch eine zurückgehaltene Bestellung aus der Bestellübersicht des Kunden stornieren.
Hintergrundaufgabe
| Geplante Aufgabe | Intervall | Was sie tut |
|---|---|---|
ssd_order_editing.release_held_orders | 300 Sekunden | Schließt jedes Fenster, dessen Frist abgelaufen ist oder das die aktuellen Einstellungen nicht mehr erlauben, und gibt die Bestellung frei. Gibt außerdem jede Bestellung frei, die ohne offenes Fenster zurückgehalten ist. |
Das Deaktivieren des Plugins schließt sofort alle offenen Fenster und gibt alle zurückgehaltenen Bestellungen frei.
Flow-Builder-Auslöser
| Auslöser | In der Flow-Liste | Variablen | Installierter Flow und Empfänger |
|---|---|---|---|
ssd_order_editing.window.opened | Order Editing: Änderungsfenster geöffnet | order, closesAt, windowMinutes, guestOrder | Edit window opened, an den Kunden |
ssd_order_editing.change.committed | Order Editing: Bestelländerung bestätigt | order, changes, amountDelta, guestOrder | Order change committed, an den Kunden |
ssd_order_editing.refund.due | Order Editing: Rückerstattung nach einer Änderung offen | order, refundAmount | Refund due after order change, an die Administratoren des Shops |
Jeder installierte Flow versendet das zugehörige E-Mail-Template (Änderungsfenster geöffnet, Änderung übernommen, Rückerstattung offen nach Bestelländerung), jeweils auf Englisch und Deutsch. Ein Flow wird nur angelegt, wenn für den Auslöser noch keiner existiert. Ein bei der Installation angelegter Flow muss einmal indiziert werden, bevor Shopware ihn ausführt; die Wege dorthin stehen unter E-Mails anpassen.
Das Plugin ergänzt außerdem den Status Zurückgehalten bei den Auslösern für Bestellstatus, sodass Flows reagieren können, wenn eine Bestellung ihn erreicht oder verlässt.
Berechtigungen
| Recht | Wo | Gewährt |
|---|---|---|
| Bestellung ändern, Ansehen | Einstellungen > Benutzer & Rechte > Rollen, Bereich Bestellungen | ssd_order_edit_log:read, ssd_order_edit_session:read, order:read |
| Bestellungen, Ansehen | Einstellungen > Benutzer & Rechte > Rollen, Bereich Bestellungen | Erhält zusätzlich ssd_order_edit_log:read und ssd_order_edit_session:read. Rollen, die vor der Installation gespeichert wurden, müssen einmal neu gespeichert werden. |
| Bestellungen, Bearbeiten | Einstellungen > Benutzer & Rechte > Rollen, Bereich Bestellungen | Nötig für Fenster verlängern (order:update) und Jetzt freigeben |
Siehe Mitarbeitenden Zugriff geben.
Protokolleinträge
Jeder Eintrag im Tab Änderungen wird in ssd_order_edit_log gespeichert.
| Gespeicherte Aktion | Angezeigt als |
|---|---|
window_open | Fenster geöffnet (Offen → Zurückgehalten) |
window_close | Fenster geschlossen, mit Grund |
window_extended | Fenster verlängert, mit alter und neuer Schließzeit |
committed | Eine Zeile je bestätigter Änderung: Variante, Menge, Artikel entfernt, Adresse, Versandart, Zusätzliche Informationen, dazu Zeilen für Rabatt, Guthaben, Versand, MwSt., Steuer und Rundung als Folge |
refused | Abgelehnt, mit Grund |
refund_due | Rückerstattung offen, mit Betrag |
payment_moved | Zahlung geändert |
| Quelle | Angezeigt als |
|---|---|
shopper | Kunde |
admin | Händler |
system | System |
Zeilen für Beträge, die sich als Folge einer Änderung bewegt haben, zeigen Automatisch als Quelle.
Daten
| Entität | Zweck |
|---|---|
ssd_order_edit_session | Eine Zeile je Änderungsfenster: Bestellung, Zustand (open, expired, discarded), Schließzeit, Verlängerung, die vorgemerkten Änderungen des Kunden sowie die für dieses Fenster geltenden Steuer- und Versandeinstellungen |
ssd_order_edit_log | Das Änderungsprotokoll: Aktion, Werte vorher und nachher, Betrag, Bestellsumme, Quelle und Ablehnungsgrund |
Eine Deinstallation ohne Datenerhalt löscht beide Tabellen. Jede Deinstallation setzt noch zurückgehaltene Bestellungen auf Offen. E-Mail-Templates, Flows und der Status Zurückgehalten bleiben.
Storefront-Seiten
| Pfad | Seite |
|---|---|
/account/order/{orderId}/edit | Bestellung ändern |
/account/order/{orderId}/edit/review | Was sich ändert (prüfen und bestätigen) |
/account/order/{orderId}/edit/line/{lineItemId}/variant | Ausführung ändern (öffnet sich als Dialog über der Übersicht) |
/account/order/{orderId}/edit/address/{target} | Lieferadresse ändern / Rechnungsadresse ändern (öffnet sich als Dialog über der Übersicht) |
Einstiege sind die Bestellbestätigung, die Bestellübersicht im Kundenkonto (ein Hinweis und der Eintrag Bestellung ändern im Menü der Bestellung), die Gastbestellseite Ihres Shops und der Link in der Fenster-E-Mail.
Store API
Für Headless-Storefronts stehen dieselben Aktionen über die Store API bereit:
| Pfad | Zweck |
|---|---|
/store-api/order-editing/session | Aktuelle Änderungen laden |
/store-api/order-editing/session/open | Änderungen des Kunden für eine Bestellung öffnen |
/store-api/order-editing/session/commit | Änderungen bestätigen |
/store-api/order-editing/session/discard | Änderungen verwerfen |
/store-api/order-editing/line/variant | Variantenoptionen einer Position laden |
/store-api/order-editing/line/variant/stage | Variantenwechsel vormerken |
/store-api/order-editing/line/quantity/stage | Mengenänderung vormerken |
/store-api/order-editing/line/remove/stage | Entfernen einer Position vormerken |
/store-api/order-editing/address/stage | Adressänderung vormerken (nur der Kunde, dem die Bestellung gehört; ein Gast zählt dazu, sobald er seine Daten auf der Gastbestellseite bestätigt hat) |
/store-api/order-editing/shipping-method | Angebotene Versandarten laden |
/store-api/order-editing/shipping-method/stage | Versandartwechsel vormerken |
/store-api/order-editing/customer-comment/stage | Änderung des Bestellkommentars vormerken |
Jede Route prüft, dass die Bestellung dem angemeldeten Kunden gehört oder dass ein Gast den Deep-Link-Code der Bestellung zusammen mit E-Mail-Adresse und Postleitzahl angibt.
Administrations-API
| Pfad | Zweck | Berechtigung |
|---|---|---|
POST /api/_action/ssd-order-editing/order/{orderId}/window/extend | Verlängert ein offenes Fenster um die Dauer des Fensters | order:update |
Shops mit mehreren Webservern
Änderungen an einer Bestellung werden über eine Sperre nacheinander abgearbeitet. Die Sperre nutzt den Lock-Speicher Ihres Shops (LOCK_DSN). Standardmäßig liegt dieser lokal auf jedem Server. Läuft Ihr Shop auf mehr als einem Webserver, richten Sie LOCK_DSN auf einen gemeinsamen Speicher wie Redis oder die Datenbank, damit alle Server dieselbe Sperre nutzen.
