# JGA Revocation Button

Rechtskonformer digitaler Widerrufsbutton für **Shopware 6** nach EU-Richtlinie 2023/2673 (§356a BGB). Kundinnen und Kunden können ihren Widerruf direkt online über ein geführtes Formular einreichen – mit Gastzugang, Flow-Builder-Anbindung und Widerrufsverwaltung in der Administration.

## Funktionen

- Zweistufiges Widerrufsformular (Eingabe → Bestätigung → Erfolg)
- Gastzugang per Bestellnummer + E-Mail, ohne Kundenlogin
- Konfigurierbare Widerrufsfrist (`revocationPeriodDays`), wahlweise ab Versand- oder Bestelldatum (`revocationPeriodStart`)
- Flow-Builder-Integration über das Event `jga_revocation.submitted`
- Ausschluss einzelner Produkte über dynamische Produktgruppen (`excludedProductStreams`)
- Optionale automatische Statusänderung der Bestellung auf „Widerrufen" (`autoTransitionToRevoked`)
- Optionales Taggen widerrufener Bestellungen (`addRevocationTag`)
- Widerrufs-Link automatisch in der Bestellbestätigung (`showRevocationLinkInEmail`)
- Interne Benachrichtigungs-E-Mail an den Shopbetreiber (`notificationEmail`)
- Mehrsprachig (de-DE / en-GB)

## Shopware-Kompatibilität & Branch-Struktur

Jede Shopware-Major-Version wird in einem **eigenen Branch** gepflegt, da sich die Codebasen zwischen den Majors stark unterscheiden (Build-System, Webpack-/Bootstrap-Versionen). Eine versionsübergreifende Code-Basis ist bei Shopware technisch nicht möglich.

| Branch | Shopware | Plugin-Version |
|--------|----------|----------------|
| `main` | 6.7      | 4.x            |
| `6.6`  | 6.6      | 3.x            |
| `6.5`  | 6.5      | 2.x            |
| `6.4`  | 6.4      | 1.x            |

Jeder Branch ist eigenständig lauffähig. Fixes werden bei Bedarf je Branch separat eingepflegt (kein gemeinsamer Code-Verlauf).

## Download & Installation

Fertige, store-fertige Plugin-ZIPs liegen unter [Releases](../../releases) – jede veröffentlichte Version als Asset `JGARevocationButton-vX.Y.Z.zip` (inkl. kompilierter Assets und `checksum.json`).

1. ZIP der zur eigenen Shopware-Version passenden Plugin-Version herunterladen.
2. Im Admin unter **Erweiterungen → Meine Erweiterungen → Erweiterung hochladen** installieren, oder per CLI:

```bash
# ZIP nach custom/plugins/ entpacken, dann:
bin/console plugin:refresh
bin/console plugin:install --activate JGARevocationButton
bin/console cache:clear
```

## Konfiguration

Einstellungen im Admin unter **Erweiterungen → Meine Erweiterungen → JGA Revocation Button → Konfiguration**. Wichtige Optionen u. a.: Widerrufsfrist und Fristbeginn, ausgeschlossene Produktgruppen, automatische Statusänderung/Tagging sowie die interne Benachrichtigungs-E-Mail.

## Release-Prozess

Releases werden automatisch per GitHub Actions gebaut. Dazu einen Versions-Tag auf dem passenden Branch setzen und pushen:

```bash
git checkout 6.6
git tag v3.3.6
git push origin v3.3.6
```

Der Workflow [`.github/workflows/release.yml`](.github/workflows/release.yml) installiert die [`shopware-cli`](https://github.com/shopware/shopware-cli), kompiliert die Administration- und Storefront-Assets, baut das Plugin-ZIP, validiert es und veröffentlicht es als GitHub Release.

> **Wichtig:** Der Tag muss mit `v` beginnen und die `version` in der `composer.json` muss exakt zum Tag passen.

## Entwicklung

Die kompilierten Assets unter `src/Resources/public/` sind bewusst **nicht** im Repository (siehe `.gitignore`) – sie werden beim Build erzeugt. Assets lokal bauen:

```bash
bin/build-administration.sh
bin/build-storefront.sh
```

## Lizenz

Proprietär – © JG Agency. Alle Rechte vorbehalten.
