# Riccardo Abo (RiccardoAbo)

Kunden legen einen Artikel ins Abo und bekommen ihn automatisch im gewählten Rhythmus
(2, 4, 6 oder 8 Wochen) mit Abo-Rabatt. Jede Lieferung ist eine eigene Shopware-Bestellung,
die wie jede andere in die Wawi läuft.

## Ablauf

1. **Artikelseite.** Unter dem Kaufen-Knopf steht die Abo-Box: Rhythmus, Menge, „Im Abo bestellen“.
   Der Artikel landet als eigene Position mit Payload `rzAbo.interval` im Warenkorb.
2. **Warenkorb.** Abo-Positionen sind gekennzeichnet („Abo · Lieferung alle 4 Wochen“). Der
   Abo-Rabatt erscheint als eigene Position. Gäste können nicht bestellen, solange ein
   Abo-Artikel im Warenkorb liegt (Kundenkonto nötig).
3. **Bestellung.** Beim Bestellabschluss wird je Abo-Position ein Abo angelegt: Kunde, Artikel,
   Menge, Rhythmus, Zahlungs- und Versandart der Bestellung, nächster Termin.
4. **Folgebestellung.** Eine geplante Aufgabe prüft stündlich fällige Abos und legt die
   Bestellung an – mit den aktuellen Standardadressen des Kunden, zum aktuellen Preis, mit
   Abo-Rabatt. Der Kunde bekommt die normale Bestellbestätigung.
5. **Zahlung.** Unterstützt die Zahlungsart wiederkehrende Zahlungen (gespeichertes Zahlungsmittel),
   wird sofort eingezogen. Sonst bleibt die Zahlung offen, der Kunde zahlt über den Link in der
   Bestellbestätigung bzw. unter „Bestellungen → Jetzt bezahlen“. Siehe unten.
6. **Kundenkonto → Meine Abos.** Rhythmus, Menge, nächste Lieferung überspringen, sofort liefern,
   pausieren, fortsetzen, kündigen.
7. **Kündigungsbutton.** `/abo/kuendigen` ist ohne Anmeldung erreichbar (E-Mail + Abo-Nummer),
   Bestätigung sofort auf dem Bildschirm und per E-Mail. Im Footer als „Verträge hier kündigen“
   verlinkt (§ 312k BGB).

Schlägt eine Folgebestellung fehl (Artikel inaktiv, Konto deaktiviert, Altersprüfung offen),
wird sie am nächsten Tag erneut versucht; nach drei Fehlversuchen pausiert das Abo mit Hinweis.

## Geld automatisch bekommen

Shopware fragt bei der Folgebestellung den Zahlungs-Handler, ob er `RECURRING` unterstützt,
und ruft dann dessen `recurring()` auf. Stand heute:

| Zahlungsart | automatischer Einzug |
|---|---|
| PayPal, Kreditkarte über PayPal (SwagPayPal 10.x) | Handler unterstützt Recurring nur zusammen mit Shopware Commercial „Subscriptions“ (Abo-Entität + Vaulting). Ohne Commercial: Zahlung bleibt offen, Kunde zahlt per Link. |
| Vorkasse, Rechnung, Nachnahme | nie automatisch, Kunde zahlt/bezahlt bei Lieferung |
| Mollie (Plugin, nicht installiert) | eigenes Abo-Modul mit Mandaten (SEPA, Karte, PayPal) |

Optionen für echten Einzug, siehe Gespräch vom 21.09.2026: Shopware Commercial Subscriptions
(PayPal Vaulting), Mollie, oder SEPA-Lastschrift mit Mandat und Einzug über JTL-Wawi.
Das Plugin ist so gebaut, dass ein PayPal-Vault-Adapter später ergänzt werden kann
(`AboRenewalService::placeOrder`, Abschnitt Zahlung).

## Befehle

```bash
bin/console riccardo:abo                 # Übersicht
bin/console riccardo:abo --due           # fällige Abos
bin/console riccardo:abo --renew         # fällige Abos ausführen
bin/console riccardo:abo --renew --id=ABO-123456   # ein Abo sofort ausführen (Test)
```

## Konfiguration

Erweiterungen → Riccardo Abo → Konfigurieren: aktiv, Rhythmen, Standardrhythmus, Rabatt,
Höchstmenge, ausgeschlossene Artikelnummern, Uhrzeit der Folgebestellungen, Fehlversuche,
Link zu den Abo-Bedingungen.

## Rechtliches (vor Live-Gang klären)

- Abo-Bedingungen (Laufzeit unbestimmt, jederzeit kündbar, Preis der jeweiligen Lieferung,
  Widerruf je Lieferung) und Hinweis im Checkout.
- Kündigungsbutton ist eingebaut; Wortlaut „Verträge hier kündigen“ und Bestätigungsseite
  entsprechen § 312k BGB. Bitte anwaltlich gegenlesen lassen.
- Altersprüfung: Folgebestellungen laufen durch dieselbe Warenkorb-Prüfung wie normale
  Bestellungen (RiccardoAgeCheck). Ohne gültige Prüfung wird nicht bestellt.

## Tabellen

`riccardo_abo`, `riccardo_abo_run` (Deinstallation ohne „Daten behalten“ löscht beide).
