Skip to content

Ablauf & Reservierungen

Dieser Abschnitt erklärt, was im Hintergrund passiert, wenn ein Gutschein eingelöst wird.

Reservierungsprinzip

Das Plugin arbeitet mit einem Reservierungssystem, um Gutscheinguthaben zu schützen:

Warenkorb → Reservierung → Bestellung → Buchung

1. Reservierung (Warenkorb)

Wenn ein Kunde einen Gutscheincode im Warenkorb einlöst:

  • Das Plugin prüft den Code bei der JTL Vouchers API
  • Eine Reservierung wird erstellt (Betrag wird vorgemerkt)
  • Der reservierte Betrag steht anderen Transaktionen nicht zur Verfügung
  • Die Reservierung wird im Warenkorb gespeichert

2. Buchung (Bestellabschluss)

Wenn der Kunde die Bestellung abschließt:

  • Die Reservierung wird in eine endgültige Buchung umgewandelt
  • Der Gutscheinbetrag wird endgültig abgezogen
  • Die Buchung wird mit der Bestellnummer verknüpft
  • Die Verarbeitung erfolgt asynchron über die Message Queue

3. Gutschein-Produkt-Erstellung (nach Zahlung)

Bei Gutschein-Produkten im Warenkorb:

  • Gutscheincodes werden erst nach bestätigter Zahlung erstellt (Transaktionsstatus „bezahlt")
  • Für jede bestellte Einheit wird ein neuer Gutschein bei JTL erstellt
  • Der Gutscheincode wird per E-Mail an den Kunden gesendet
  • Der Versand erfolgt asynchron mit PDF-Anhang

Automatischer Versand deaktivierbar

Dieses Verhalten kann in der Plugin-Konfiguration deaktiviert werden (→ „Gutschein-Code nach Zahlungseingang sofort erstellen und versenden"). Wenn deaktiviert, passiert nach der Zahlung nichts — die Code-Erstellung und der Versand müssen manuell erfolgen, z.B. über JTL WaWi.

Reservierungs-Bereinigung

Falls ein Kunde den Warenkorb verlässt, ohne zu bestellen, bleibt die Reservierung bestehen. Das Plugin bereinigt diese automatisch:

  • Ein Hintergrundjob läuft stündlich
  • Reservierungen, die älter als der konfigurierte Zeitraum sind (Standard: 24 Stunden), werden storniert
  • Das Guthaben wird wieder freigegeben

Siehe Konfiguration für die Anpassung des Zeitraums.

Warenkorb-Verhalten

Währungsprüfung

Der Gutschein muss in der gleichen Währung ausgestellt sein wie der aktuelle Verkaufskanal. Ein EUR-Gutschein kann nicht in einem USD-Shop eingelöst werden.

Betragsbegrenzung

Wenn der Gutscheinwert den Warenkorbwert übersteigt:

  • Es wird nur der benötigte Betrag reserviert
  • Das übrige Guthaben bleibt verfügbar
  • Bei mehreren Gutscheinen wird der Restbetrag korrekt auf die Gutscheine verteilt

Steuerbehandlung

Gutscheinrabatte werden steuerlich korrekt behandelt:

  • Der Rabatt wird anteilig auf alle Steuersätze im Warenkorb verteilt
  • Die Steuerberechnung folgt den Shopware-Standards
  • Rundungsdifferenzen werden automatisch kompensiert

Message Queue

Die Buchung und der E-Mail-Versand laufen über Shopwares Message Queue:

Wichtig

Stellen Sie sicher, dass der Message-Queue-Worker aktiv ist, damit Buchungen und E-Mails zeitnah verarbeitet werden:

bash
bin/console messenger:consume async --time-limit=300

Oder konfigurieren Sie einen Cronjob/Supervisor für den dauerhaften Betrieb.

JTL Gutscheine Plugin für Shopware 6