# TerraFlow License Server Plugin v2.0

Ein modernes und umfassendes Lizenzierungs- und Rechnungssystem für das TerraFlow CMS mit verbesserter Architektur, modernem Design und erweiterten Funktionen.

## 🚀 Features

### 🎯 Lizenzverwaltung
- **Verschiedene Lizenztypen**: Basic, Professional, Enterprise, Developer
- **Flexible Abrechnungszyklen**: Monatlich, Jährlich, Lifetime
- **Domain-basierte Abrechnung**: Pro Domain abgerechnet
- **Automatische Lizenzverlängerung**: Bei Zahlungseingang
- **Lizenzvalidierung**: Über API-Endpunkte
- **Gnadenfrist-Management**: Konfigurierbare Gnadenfristen

### 💰 Rechnungssystem
- **Automatische Rechnungsgenerierung**: Für wiederkehrende Abonnements
- **Rabattsystem**: Prozentuale und feste Rabatte
- **Mehrwertsteuer**: Automatische Berechnung
- **Zahlungshistorie**: Vollständige Übersicht aller Zahlungen
- **PDF-Export**: Professionelle Rechnungen als PDF
- **Zahlungserinnerungen**: Automatische Mahnungen

### 🏷️ Rabattsystem
- **Rabattcodes**: Einmalige und mehrfach verwendbare Codes
- **Zeitlich begrenzt**: Gültigkeitszeiträume definierbar
- **Nutzungsbeschränkungen**: Pro Kunde und insgesamt
- **Lizenztyp-spezifisch**: Verschiedene Codes für verschiedene Pläne
- **Stackbare Rabatte**: Mehrere Codes kombinierbar

### 📊 Reporting & Analytics
- **Umsatzstatistiken**: Monatlich, jährlich, kumulativ
- **Rechnungsübersicht**: Status, Beträge, Fälligkeiten
- **Kundenhistorie**: Vollständige Abrechnungshistorie
- **Export-Funktionen**: Daten für externe Buchhaltung

### 🔧 Administration
- **Modernes Dashboard**: Übersicht über alle wichtigen Kennzahlen
- **Rechnungsverwaltung**: Erstellen, bearbeiten, stornieren
- **Lizenzplan-Verwaltung**: Preise, Features, Beschränkungen
- **Rabattcode-Verwaltung**: Erstellen und verwalten von Codes
- **Automatisierung**: Commands für wiederkehrende Aufgaben

## 🏗️ Architektur

### Verbesserte Struktur
```
LicenseServerPlugin/
├── src/
│   └── LicenseServerPlugin.php          # Hauptplugin-Klasse
├── Entity/                              # Doctrine Entities
│   ├── License.php                      # Lizenz-Entity
│   ├── LicensePlan.php                  # Lizenzplan-Entity
│   ├── Invoice.php                      # Rechnungs-Entity
│   └── DiscountCode.php                 # Rabattcode-Entity
├── Controller/                          # Controller
│   └── LicenseServerController.php      # Hauptcontroller
├── Service/                             # Business Logic
│   ├── LicenseService.php               # Lizenz-Management
│   └── BillingService.php               # Rechnungs-Management
├── Repository/                          # Datenbank-Repositories
├── Form/                                # Symfony Forms
├── EventListener/                       # Event Listener
├── EventSubscriber/                     # Event Subscriber
├── Command/                             # Console Commands
├── Security/                            # Security
└── Resources/
    ├── views/                           # Twig Templates
    ├── config/                          # Konfiguration
    └── public/                          # Öffentliche Assets
```

### Technische Verbesserungen
- **Moderne PHP 8.1+ Features**: Attributes, Constructor Property Promotion
- **Verbesserte Typsicherheit**: Strikte Typisierung
- **Bessere Dependency Injection**: Service-basierte Architektur
- **Event-Driven Architecture**: Erweiterbare Event-System
- **Repository Pattern**: Saubere Datenzugriffsschicht

## 🎨 Modernes Design

### UI/UX Verbesserungen
- **Responsive Design**: Optimiert für alle Geräte
- **Moderne Icons**: Bootstrap Icons Integration
- **Gradient-Designs**: Moderne Farbverläufe
- **Card-basierte Layouts**: Übersichtliche Darstellung
- **Interactive Elements**: Hover-Effekte und Animationen
- **Accessibility**: Barrierefreie Bedienung

### Dashboard Features
- **Statistik-Karten**: Übersichtliche Kennzahlen
- **Alert-System**: Warnungen für ablaufende Lizenzen
- **Recent Activity**: Letzte Aktivitäten
- **Quick Actions**: Schnellzugriff auf wichtige Funktionen

## 📦 Installation

### 1. Plugin installieren
```bash
# Plugin-Verzeichnis in das Projekt kopieren
cp -r plugin/LicenseServerPlugin /path/to/your/project/plugin/

# Abhängigkeiten installieren
composer require dompdf/dompdf stripe/stripe-php
```

### 2. Datenbank-Migrationen ausführen
```bash
# Doctrine-Migrationen erstellen
php bin/console doctrine:migrations:diff

# Migrationen ausführen
php bin/console doctrine:migrations:migrate
```

### 3. Standard-Lizenzpläne erstellen
```bash
# Standard-Pläne erstellen
php bin/console license:create-default-plans

# Mit Überschreibung bestehender Pläne
php bin/console license:create-default-plans --force
```

## ⚙️ Konfiguration

### Plugin-Einstellungen
Das Plugin bietet umfangreiche Konfigurationsmöglichkeiten:

#### Firmeninformationen
- Firmenname und Adresse für Rechnungen
- Steuernummer
- Kontaktdaten

#### Abrechnungseinstellungen
- Standard-Steuersatz
- Zahlungsziel
- Währung
- Automatische Verlängerung

#### E-Mail-Einstellungen
- Rechnungs-E-Mail Betreff
- Zahlungserinnerung Betreff
- E-Mail-Templates

#### Lizenz-Einstellungen
- Validierungs-URL
- Gnadenfrist
- Automatische Verlängerung

### Standard-Lizenzpläne

| Plan | Monatlich | Jährlich | Lifetime | Domains | Benutzer | Features |
|------|-----------|----------|----------|---------|----------|----------|
| Basic | 9,99 € | 99,99 € | 299,99 € | 1 | 1 | Grundlegende CMS-Features |
| Professional | 29,99 € | 299,99 € | 799,99 € | 5 | 5 | Erweiterte Features + API |
| Enterprise | 99,99 € | 999,99 € | 2499,99 € | ∞ | ∞ | Alle Features + Support |
| Developer | 19,99 € | 199,99 € | 499,99 € | 3 | 2 | Entwickler-Tools |

## 🚀 Verwendung

### Administration

#### Dashboard
- **URL**: `/admin/license-server/`
- **Funktionen**: Übersicht über Umsatz, offene Rechnungen, Statistiken

#### Lizenzen verwalten
- **URL**: `/admin/license-server/licenses`
- **Funktionen**: 
  - Alle Lizenzen anzeigen
  - Status filtern (aktiv, abgelaufen, etc.)
  - Lizenzen erstellen/bearbeiten
  - Validierung verfolgen

#### Rechnungen verwalten
- **URL**: `/admin/license-server/invoices`
- **Funktionen**: 
  - Alle Rechnungen anzeigen
  - Status filtern (bezahlt, überfällig, etc.)
  - Als bezahlt markieren
  - PDF herunterladen
  - Zahlungserinnerungen senden

#### Rabattcodes verwalten
- **URL**: `/admin/license-server/discounts`
- **Funktionen**:
  - Neue Rabattcodes erstellen
  - Gültigkeitszeiträume setzen
  - Nutzungsbeschränkungen definieren
  - Statistiken einsehen

#### Lizenzpläne verwalten
- **URL**: `/admin/license-server/plans`
- **Funktionen**:
  - Preise anpassen
  - Features hinzufügen/entfernen
  - Beschränkungen setzen
  - Pläne aktivieren/deaktivieren

### API-Endpunkte

#### Lizenzvalidierung
```http
POST /api/license/validate
Content-Type: application/json

{
    "license_key": "LICENSE-KEY-HERE",
    "domain": "example.com",
    "version": "1.0.0"
}
```

#### Rabattcode validieren
```http
POST /admin/license-server/api/validate-discount
Content-Type: application/json

{
    "code": "SAVE20",
    "customer_email": "customer@example.com",
    "order_amount": 99.99,
    "license_type": "pro",
    "billing_cycle": "yearly"
}
```

## 🔧 Commands

#### Wiederkehrende Rechnungen generieren
```bash
# Normale Ausführung
php bin/console license:generate-recurring-invoices

# Testmodus (keine Rechnungen erstellen)
php bin/console license:generate-recurring-invoices --dry-run

# Mit Zahlungserinnerungen
php bin/console license:generate-recurring-invoices --send-reminders
```

#### Standard-Pläne erstellen
```bash
# Neue Pläne erstellen
php bin/console license:create-default-plans

# Bestehende Pläne überschreiben
php bin/console license:create-default-plans --force
```

## 🤖 Automatisierung

### Cron-Job für wiederkehrende Rechnungen
```bash
# Täglich um 9:00 Uhr wiederkehrende Rechnungen generieren
0 9 * * * /usr/bin/php /path/to/your/project/bin/console license:generate-recurring-invoices

# Wöchentlich Zahlungserinnerungen senden
0 10 * * 1 /usr/bin/php /path/to/your/project/bin/console license:generate-recurring-invoices --send-reminders
```

## 📊 Datenbank-Schema

### Haupttabellen

#### `terraflow_licenses`
- Lizenzschlüssel und -status
- Kundeninformationen
- Domain-Zuordnungen
- Ablaufdaten und Features

#### `terraflow_invoices`
- Rechnungsdaten und -status
- Artikel und Preise
- Zahlungshistorie
- Rabatte und Steuern

#### `terraflow_discount_codes`
- Rabattcode-Definitionen
- Gültigkeitszeiträume
- Nutzungsbeschränkungen
- Verwendungshistorie

#### `terraflow_license_plans`
- Plan-Definitionen
- Preise und Features
- Beschränkungen
- Sortierung und Status

## 🔌 Erweiterte Funktionen

### Custom Features
- **White Label**: Enterprise-Pläne unterstützen White-Label-Funktionen
- **API-Zugriff**: Verschiedene API-Limits je nach Plan
- **Support-Level**: Unterschiedliche Support-Optionen
- **Backup & Restore**: Automatische Backups für höhere Pläne

### Integration
- **Payment Provider**: Einfache Integration von Stripe, PayPal, etc.
- **Webhooks**: Benachrichtigungen bei Statusänderungen
- **Export-Funktionen**: Datenexport für Buchhaltungssysteme
- **Multi-Tenant**: Unterstützung für mehrere Mandanten

## 🐛 Troubleshooting

### Häufige Probleme

#### Rechnungen werden nicht generiert
- Prüfen Sie die Cron-Job-Konfiguration
- Überprüfen Sie die Lizenz-Ablaufdaten
- Testen Sie mit `--dry-run` Option

#### E-Mails werden nicht gesendet
- Überprüfen Sie die Mailer-Konfiguration
- Prüfen Sie die SMTP-Einstellungen
- Testen Sie die E-Mail-Templates

#### Lizenzvalidierung schlägt fehl
- Überprüfen Sie die API-Endpunkte
- Prüfen Sie die Lizenzschlüssel
- Kontrollieren Sie die Domain-Zuordnungen

## 📝 Changelog

### v2.0.0 (Aktuell)
- **Komplette Neuentwicklung** mit moderner Architektur
- **Verbessertes Design** mit Bootstrap 5 und modernen UI-Komponenten
- **Erweiterte Funktionalität** für Lizenz- und Rechnungsverwaltung
- **Bessere Performance** durch optimierte Datenbankabfragen
- **Verbesserte Sicherheit** durch moderne PHP-Features

### v1.0.0 (Vorgänger)
- Grundlegende Lizenzverwaltung
- Einfaches Rechnungssystem
- Basis-Rabattsystem

## 📄 Lizenz

Dieses Plugin ist unter der MIT-Lizenz lizenziert. Siehe LICENSE-Datei für Details.

## 🤝 Support

- **Dokumentation**: [https://terraflow-cms.com/docs/plugins/license-server](https://terraflow-cms.com/docs/plugins/license-server)
- **GitHub**: [https://github.com/terraflow-cms/license-server-plugin](https://github.com/terraflow-cms/license-server-plugin)
- **Support**: [https://github.com/terraflow-cms/license-server-plugin/issues](https://github.com/terraflow-cms/license-server-plugin/issues)

---

**Entwickelt mit ❤️ vom TerraFlow CMS Team** 