Bitte beachte, dass sich diese Dokumentation auf die neuste Version dieser Erweiterung bezieht. Wenn eine ältere Version eingesetzt wird, kann diese abweichen. Die jeweils passende Dokumentation befindet sich im Dokumentation-Verzeichnis der Erweiterung.
Warenkorb Bestellung mit SEPA (Lastschrift)
Bei der Zahlart SEPA-Lastschrift wird die Bestellung nach Abschluss des Checkouts als verbindlich angelegt (inkl. Bestell- und Rechnungsnummer). Die weiteren Schritte erfolgen anschließend im Backend manuell: Zahlungseingänge werden nach erfolgtem Einzug verbucht, der Versand wird bei physischer Ware manuell gesetzt, und bei ausbleibender Zahlung kann die Bestellung storniert werden. Da Zahlung und Versand je nach Prozess auch zeitlich versetzt stattfinden können, ist die Reihenfolge bewusst flexibel; abgeschlossen wird der Vorgang erst, wenn die Zahlung erfasst ist und – falls zutreffend – der Versand erfolgt ist.
stateDiagram-v2
%% Frontend
[*] --> prepared : Kunde im Warenkorb / Checkout
prepared --> ordered : Checkout abgeschlossen\nBestätigungsmail\nRechnungsnummer
%% Backend – manuelle Schritte
ordered --> paid : Zahlung manuell verbucht
ordered --> shipped : Versand manuell durchgeführt
ordered --> canceled_unpaid : Keine Zahlung\nStorno
%% Reihenfolge bewusst flexibel
paid --> shipped : Versand nach Zahlung
shipped --> paid : Zahlung nach Versand
%% Abschluss
paid --> processed : Abschluss ohne Versand\n(z. B. digital)
shipped --> processed : Abschluss nach Versand
canceled_unpaid --> processed : Storno abgeschlossen
%% Conditions
note right of processed
Conditions für "processed":
- paid_date MUSS gesetzt sein
- shipped_date MUSS gesetzt sein,
falls Versand erfolgt ist
end note
Weitere Aktionen:
- Retoure: Möglich sobald die Ware versandt wurde – d. h. im Zustand
shippedoderprocessed. - Löechen: Das Löschen einer Bestellung ist nur im Status
preparedmöglich.
TypoScript Konfiguration
plugin.tx_shop.settings.basketOrder {
orderOptions {
sepa {
active = {$themes.configuration.extension.shop.checkout.sepa.active}
attachProductFilesToAdminEmail = {$themes.configuration.extension.shop.checkout.sepa.attachProductFilesToAdminEmail}
attachProductFilesToCustomerEmail = {$themes.configuration.extension.shop.checkout.sepa.attachProductFilesToCustomerEmail}
attachInvoiceToAdminEmail = {$themes.configuration.extension.shop.checkout.sepa.attachInvoiceToAdminEmail}
attachSepaMandateToAdminEmail = {$themes.configuration.extension.shop.checkout.sepa.attachSepaMandateToAdminEmail}
attachInvoiceToCustomerEmail = {$themes.configuration.extension.shop.checkout.sepa.attachInvoiceToCustomerEmail}
attachSepaMandateToCustomerEmail = {$themes.configuration.extension.shop.checkout.sepa.attachSepaMandateToCustomerEmail}
attachDeliveryNoteToAdminEmail = {$themes.configuration.extension.shop.checkout.sepa.attachDeliveryNoteToAdminEmail}
attachDeliveryNoteToCustomerEmail = {$themes.configuration.extension.shop.checkout.sepa.attachDeliveryNoteToCustomerEmail}
attachOrderXmlToAdminEmail = {$themes.configuration.extension.shop.checkout.sepa.attachOrderXmlToAdminEmail}
storeOrderXmlInFolder = {$themes.configuration.extension.shop.checkout.sepa.storeOrderXmlInFolder}
storeOrderXmlInFolderName = {$themes.configuration.extension.shop.checkout.sepa.storeOrderXmlInFolderName}
type = sepa
minimumOrderValue = 0
maximumOrderValue = 0
checkoutPid = {$themes.configuration.pages.shop.checkout}
successPid = {$themes.configuration.pages.shop.checkoutSuccess}
errorPid = {$themes.configuration.pages.shop.checkoutError}
service = CodingMs\Shop\Service\Checkout\SepaCheckoutService
button {
title = tx_shop_label.sepa_button_title
label = tx_shop_label.sepa_button_label
icon = fa fa-shopping-cart
}
fields {
available = {$themes.configuration.extension.shop.checkout.sepa.fields.available}
required = {$themes.configuration.extension.shop.checkout.sepa.fields.required}
}
status {
prepared {
allowed {
ordered =
}
}
ordered {
allowed {
paid =
shipped =
canceled_unpaid =
}
}
shipped {
allowed {
paid {
# Zahlung nach Versand verbuchen
condition {
ordered_date = NotEmpty
paid_date = Empty
}
}
processed {
# Abschluss nur, wenn Zahlung erfolgt ist
condition {
paid_date = NotEmpty
}
}
}
}
paid {
# Zahlung wurde verbucht, Versand kann folgen
allowed {
shipped {
# Versand nach Zahlung
condition {
ordered_date = NotEmpty
shipped_date = Empty
}
}
processed {
# Abschluss ohne Versand (z. B. digitale Leistung)
# ODER nach Versand (shipped_date bereits gesetzt)
condition {
paid_date = NotEmpty
}
}
}
}
canceled_unpaid {
# Bestellung wird storniert, da keine Zahlung einging
allowed {
processed =
}
}
processed {
# End, but "allowed" must be defined!
allowed =
}
}
email {
customerConfirmation {
active = {$themes.configuration.extension.shop.checkout.sepa.email.customerConfirmation.active}
from {
name = {$themes.configuration.extension.shop.email.from.name}
email = {$themes.configuration.extension.shop.email.from.email}
}
to {
# Customer address data
}
cc {
name = {$themes.configuration.extension.shop.email.cc.name}
email = {$themes.configuration.extension.shop.email.cc.email}
}
subject = {$themes.configuration.extension.shop.email.templates.sepa.subjectCustomerConfirmation}
}
order {
active = {$themes.configuration.extension.shop.checkout.sepa.email.order.active}
from {
name = {$themes.configuration.extension.shop.email.from.name}
email = {$themes.configuration.extension.shop.email.from.email}
}
to {
name = {$themes.configuration.extension.shop.email.to.name}
email = {$themes.configuration.extension.shop.email.to.email}
}
cc {
name = {$themes.configuration.extension.shop.email.cc.name}
email = {$themes.configuration.extension.shop.email.cc.email}
}
subject = {$themes.configuration.extension.shop.email.templates.sepa.subjectOrder}
}
}
}
}
}
