459 lines
14 KiB
Markdown
Executable file
459 lines
14 KiB
Markdown
Executable file
# EPC QR-Code Modul für Dolibarr
|
|
|
|
**Version:** 2.0
|
|
**Autor:** DATA IT-Solutions (Eduard Wisch)
|
|
**Kompatibilität:** Dolibarr 19.0+
|
|
**Lizenz:** GPL-3.0+
|
|
|
|
---
|
|
|
|
## Übersicht
|
|
|
|
Das **EPC QR-Code Modul** generiert automatisch **EPC/GiroCode QR-Codes** für SEPA-Überweisungen auf Dolibarr-Rechnungen. Kunden können den QR-Code mit ihrer Banking-App scannen und die Zahlung sofort ausführen - ohne manuelle Eingabe von IBAN, Betrag oder Verwendungszweck.
|
|
|
|
### Neu in Version 2.0
|
|
|
|
- **Admin-Center** mit allen Einstellungen an einem Ort
|
|
- **4 Modul-Stile:** Quadrat, Abgerundet, Punkte, Diamant
|
|
- **5 Rahmen-Stile:** Kein Rahmen, Einfach, Abgerundet, Doppelt, Gestrichelt
|
|
- **Transparenter Hintergrund** möglich
|
|
- **Logo-Einbettung** mit konfigurierbarer Größe (5-30%)
|
|
- **Individuelle Farben** für Vordergrund und Hintergrund
|
|
- **Cache-Verwaltung** direkt im Admin-Center
|
|
- **Extrafeld-Sichtbarkeit** konfigurierbar
|
|
- **Verbesserte ODT-Integration**
|
|
|
|
### Was sind EPC-QR-Codes?
|
|
|
|
EPC-QR-Codes (auch GiroCode genannt) enthalten alle relevanten Zahlungsinformationen:
|
|
- Empfänger (Kontoinhaber)
|
|
- IBAN
|
|
- BIC (optional)
|
|
- Betrag
|
|
- Verwendungszweck (Rechnungsnummer)
|
|
|
|
Diese QR-Codes sind mit allen europäischen Banking-Apps kompatibel.
|
|
|
|
---
|
|
|
|
## Installation
|
|
|
|
### Voraussetzungen
|
|
|
|
- Dolibarr 19.0 oder höher
|
|
- PHP 7.1 oder höher
|
|
- PHP GD-Extension (für Bildgenerierung)
|
|
- TCPDF-Bibliothek (in Dolibarr enthalten)
|
|
|
|
### Installationsschritte
|
|
|
|
1. **Modul-Ordner kopieren:**
|
|
```bash
|
|
cp -r epcqr /path/to/dolibarr/htdocs/custom/
|
|
```
|
|
|
|
2. **Modul aktivieren:**
|
|
- Einstellungen → Module/Anwendungen
|
|
- Kategorie "Finanzen" auswählen
|
|
- "EPC QR-Code" aktivieren
|
|
|
|
3. **Bankdaten konfigurieren:**
|
|
- Einstellungen → Module → EPC QR-Code → Einstellungen
|
|
- Bankverbindung eingeben oder Systembankkonto auswählen
|
|
|
|
---
|
|
|
|
## Konfiguration
|
|
|
|
### Admin-Center
|
|
|
|
Das Admin-Center erreichen Sie unter:
|
|
**Einstellungen → Module → EPC QR-Code → Einstellungen**
|
|
|
|
Es gibt drei Tabs:
|
|
- **Einstellungen** - Alle Konfigurationsoptionen
|
|
- **Debug** - QR-Code Testseite
|
|
- **Über** - Modul-Informationen
|
|
|
|
### Bankverbindung
|
|
|
|
| Einstellung | Beschreibung |
|
|
|-------------|--------------|
|
|
| **Datenquelle** | "Systembankkonto verwenden" oder "Manuelle Eingabe" |
|
|
| **Kontoinhaber** | Name des Kontoinhabers (bei manueller Eingabe) |
|
|
| **IBAN** | Internationale Bankkontonummer |
|
|
| **BIC** | Bank Identifier Code (optional) |
|
|
|
|
> **Tipp:** Bei "Systembankkonto verwenden" werden die Bankdaten automatisch aus dem in Dolibarr konfigurierten Bankkonto geladen.
|
|
|
|
### QR-Code Größe
|
|
|
|
| Einstellung | Beschreibung |
|
|
|-------------|--------------|
|
|
| **QR-Code Größe (Verhältnis)** | Größe in ODT-Dokumenten (0.01 - 2.0) |
|
|
|
|
**Empfohlene Werte:**
|
|
| Wert | Größe |
|
|
|------|-------|
|
|
| 0.03 - 0.05 | sehr klein |
|
|
| 0.1 | klein |
|
|
| 0.3 | mittel (Standard) |
|
|
| 0.5 | groß |
|
|
|
|
### Styling-Optionen
|
|
|
|
#### Farben
|
|
|
|
| Einstellung | Beschreibung |
|
|
|-------------|--------------|
|
|
| **Vordergrundfarbe** | Farbe der QR-Code-Module (Standard: #000000 schwarz) |
|
|
| **Hintergrundfarbe** | Hintergrundfarbe oder "Transparent" aktivieren |
|
|
|
|
> **Hinweis:** Bei transparentem Hintergrund sollte die Vordergrundfarbe ausreichend Kontrast zum Dokumenthintergrund haben.
|
|
|
|
#### Logo
|
|
|
|
| Einstellung | Beschreibung |
|
|
|-------------|--------------|
|
|
| **Logo (optional)** | Absoluter Pfad zum Logo-Bild (PNG, JPG, GIF) |
|
|
| **Logo-Größe** | 5% - 30% der QR-Code-Größe (Standard: 20%) |
|
|
|
|
**Beispiel-Pfade:**
|
|
```
|
|
/var/www/dolibarr/documents/mycompany/logos/logo.png
|
|
/srv/http/dolibarr/htdocs/custom/epcqr/img/mylogo.png
|
|
```
|
|
|
|
> **Wichtig:** Bei Verwendung eines Logos wird automatisch die höchste Fehlerkorrektur (H = 30%) verwendet, um die Scanbarkeit zu gewährleisten.
|
|
|
|
#### Modul-Stil
|
|
|
|
| Stil | Beschreibung |
|
|
|------|--------------|
|
|
| **Quadrat** | Standard QR-Code-Module (klassisch) |
|
|
| **Abgerundet** | Module mit abgerundeten Ecken |
|
|
| **Punkte** | Kreisförmige Module |
|
|
| **Diamant** | Rautenförmige Module |
|
|
|
|
#### Rahmen-Stil
|
|
|
|
| Stil | Beschreibung |
|
|
|------|--------------|
|
|
| **Kein Rahmen** | Standard - ohne Rahmen |
|
|
| **Einfach** | Schlichte Linie um den QR-Code |
|
|
| **Abgerundet** | Rahmen mit runden Ecken |
|
|
| **Doppelt** | Zwei parallele Linien |
|
|
| **Gestrichelt** | Unterbrochene Linie |
|
|
|
|
### Cache-Verwaltung
|
|
|
|
QR-Codes werden lokal gecached für optimale Performance. Nach Änderung der Styling-Einstellungen:
|
|
|
|
**Cache leeren** - Klicken Sie auf den Button, um alle gecachten QR-Codes zu löschen. Neue QR-Codes werden mit den aktuellen Einstellungen generiert.
|
|
|
|
### Extrafeld-Sichtbarkeit
|
|
|
|
Kontrollieren Sie, welche QR-Code-Felder im Rechnungsformular angezeigt werden:
|
|
|
|
| Einstellung | Beschreibung |
|
|
|-------------|--------------|
|
|
| **QR-Code (HTML) ausblenden** | Versteckt das Bild-Feld |
|
|
| **QR-Code URL ausblenden** | Versteckt den URL-Link |
|
|
| **QR-Code Pfad ausblenden** | Versteckt den lokalen Dateipfad |
|
|
|
|
---
|
|
|
|
## Verwendung
|
|
|
|
### Automatische Generierung
|
|
|
|
Der QR-Code wird **automatisch generiert**, wenn:
|
|
1. Eine neue Rechnung erstellt wird
|
|
2. Eine bestehende Rechnung validiert wird
|
|
|
|
Der Trigger läuft beim Event `BILL_VALIDATE`.
|
|
|
|
### Extrafelder
|
|
|
|
Das Modul erstellt drei Extrafelder auf Rechnungen:
|
|
|
|
| Feld | Typ | Inhalt |
|
|
|------|-----|--------|
|
|
| `qrcode` | HTML | `<img>`-Tag zur Anzeige im Formular |
|
|
| `qrcodepfad` | HTML | URL zum QR-Code-Bild (klickbar) |
|
|
| `qrcodepath` | varchar | Lokaler Dateipfad (für ODT-Integration) |
|
|
|
|
### ODT-Integration
|
|
|
|
Um den QR-Code in ODT-Dokumentvorlagen einzufügen:
|
|
|
|
1. **Platzhalter einfügen:**
|
|
```
|
|
{qrcode}
|
|
```
|
|
|
|
2. **Der QR-Code wird automatisch** beim Generieren des Dokuments eingefügt.
|
|
|
|
3. **Größe anpassen:** Die Größe wird über die "QR-Code Größe (Verhältnis)" Einstellung im Admin-Center gesteuert.
|
|
|
|
> **Hinweis:** Der Platzhalter muss exakt `{qrcode}` lauten.
|
|
|
|
### Beispiel Template-Position
|
|
|
|
```
|
|
┌─────────────────────────────────┐
|
|
│ RECHNUNG RE2501-0001 │
|
|
│ │
|
|
│ Gesamtbetrag: 1.234,56 EUR │
|
|
│ │
|
|
│ ┌──────────┐ │
|
|
│ │ {qrcode} │ │
|
|
│ └──────────┘ │
|
|
│ │
|
|
│ Bitte überweisen Sie den │
|
|
│ Betrag unter Angabe der │
|
|
│ Rechnungsnummer. │
|
|
└─────────────────────────────────┘
|
|
```
|
|
|
|
---
|
|
|
|
## Technische Details
|
|
|
|
### EPC/GiroCode Format
|
|
|
|
Der generierte QR-Code enthält folgende Daten im EPC-Standard:
|
|
|
|
```
|
|
BCD # Service Tag
|
|
002 # Version
|
|
1 # Character set (UTF-8)
|
|
SCT # SEPA Credit Transfer
|
|
[BIC] # Bank Identifier Code
|
|
[Kontoinhaber] # Empfänger Name
|
|
[IBAN] # Empfänger IBAN
|
|
EUR[Betrag] # Währung und Betrag
|
|
# Purpose (leer)
|
|
[Rechnungsnummer] # Verwendungszweck
|
|
# Info (leer)
|
|
```
|
|
|
|
### Dateispeicherung
|
|
|
|
QR-Codes werden gespeichert unter:
|
|
```
|
|
/documents/epcqr/qrcodes/epc_[hash].png
|
|
```
|
|
|
|
Der Hash basiert auf:
|
|
- Bankdaten (Kontoinhaber, IBAN, BIC)
|
|
- Rechnungsdaten (Betrag, Referenz)
|
|
- Styling-Einstellungen (Farben, Logo, Modul-Stil, Rahmen-Stil)
|
|
|
|
### Hooks
|
|
|
|
Das Modul verwendet folgende Dolibarr-Hooks:
|
|
|
|
| Hook | Funktion |
|
|
|------|----------|
|
|
| `invoicecard` | QR-Code bei Rechnungsvalidierung generieren |
|
|
| `odtgeneration` | QR-Code-Bild in ODT einfügen (beforeODTSave) |
|
|
| `pdfgeneration` | Substitutionsvariablen für PDF |
|
|
|
|
### Substitutionsvariablen
|
|
|
|
Für ODT/PDF-Dokumente stehen folgende Substitutionen zur Verfügung:
|
|
|
|
| Variable | Inhalt |
|
|
|----------|--------|
|
|
| `{qrcode}` | QR-Code als Bild |
|
|
| `{options_qrcodepath}` | Lokaler Dateipfad |
|
|
|
|
### Modul-Struktur
|
|
|
|
```
|
|
epcqr/
|
|
├── admin/
|
|
│ ├── setup.php # Einstellungen
|
|
│ └── about.php # Über-Seite
|
|
├── class/
|
|
│ └── actions_epcqr.class.php # Hook-Aktionen
|
|
├── core/
|
|
│ ├── modules/
|
|
│ │ └── modEpcqr.class.php # Modul-Deskriptor
|
|
│ ├── substitutions/
|
|
│ │ └── functions_epcqr.lib.php # Substitutionen
|
|
│ └── triggers/
|
|
│ └── interface_99_modEpcqr_EpcqrTriggers.class.php
|
|
├── langs/
|
|
│ ├── de_DE/
|
|
│ │ └── epcqr.lang # Deutsche Übersetzung
|
|
│ └── en_US/
|
|
│ └── epcqr.lang # Englische Übersetzung
|
|
├── lib/
|
|
│ ├── epcqr.lib.php # Bibliotheksfunktionen
|
|
│ └── qrcode.class.php # QR-Code Generator
|
|
├── sql/
|
|
│ ├── llx_epcqr_extrafields.sql # Extrafelder
|
|
│ └── dolibarr_allversions.sql # Upgrade-Script
|
|
├── test_qrcode.php # Debug-Seite
|
|
└── README.md # Diese Dokumentation
|
|
```
|
|
|
|
---
|
|
|
|
## Fehlerbehebung
|
|
|
|
### QR-Code wird nicht generiert
|
|
|
|
1. **Bankdaten prüfen:** Sind Kontoinhaber und IBAN konfiguriert?
|
|
2. **Modul aktiv?** Ist das EPC QR-Code Modul aktiviert?
|
|
3. **Rechnung validiert?** QR-Codes werden erst bei Validierung generiert.
|
|
4. **Logs prüfen:** Einstellungen → Logs auf Fehlermeldungen prüfen.
|
|
- Suche nach "EPCQR" in den Logs
|
|
|
|
### QR-Code nicht scannbar
|
|
|
|
1. **Größe erhöhen:** Mindestens 2x2 cm für zuverlässiges Scannen.
|
|
2. **Kontrast prüfen:** Dunkle Vordergrundfarbe auf hellem Hintergrund.
|
|
3. **Logo verkleinern:** Maximale Logo-Größe 30% (besser 20% oder weniger).
|
|
4. **Modul-Stil:** Bei Problemen "Quadrat" (Standard) verwenden.
|
|
|
|
### ODT: QR-Code erscheint nicht
|
|
|
|
1. **Platzhalter korrekt?** Muss exakt `{qrcode}` sein.
|
|
2. **Pfad existiert?** Prüfen ob die Datei unter `qrcodepath` existiert.
|
|
3. **Cache leeren:** Nach Änderungen den Cache leeren.
|
|
4. **Extrafeld vorhanden?** `qrcodepath` muss als Extrafeld existieren.
|
|
|
|
### Styling-Änderungen haben keine Wirkung
|
|
|
|
Nach Änderung der Styling-Einstellungen:
|
|
1. **Cache leeren** im Admin-Center klicken
|
|
2. Rechnung erneut generieren (auf Draft setzen → Validieren)
|
|
3. Oder neuen QR-Code durch neue Rechnung testen
|
|
|
|
### Extra-Felder fehlen
|
|
|
|
Falls die Extrafelder nicht automatisch erstellt wurden:
|
|
1. Modul **deaktivieren**
|
|
2. Modul wieder **aktivieren**
|
|
3. Prüfen unter: Einstellungen → Wörterbücher → Zusatzattribute → Rechnungen
|
|
|
|
---
|
|
|
|
## Changelog
|
|
|
|
### Version 2.0 (Januar 2025)
|
|
|
|
**Neue Funktionen:**
|
|
- Vollständiges Admin-Center mit allen Einstellungen
|
|
- Modul-Stile: Quadrat, Abgerundet, Punkte, Diamant
|
|
- Rahmen-Stile: Kein Rahmen, Einfach, Abgerundet, Doppelt, Gestrichelt
|
|
- Transparenter Hintergrund
|
|
- Logo-Einbettung mit konfigurierbarer Größe (5-30%)
|
|
- Cache-Verwaltung im Admin-Center
|
|
- Extrafeld-Sichtbarkeit konfigurierbar
|
|
- Verbesserte ODT-Integration mit beforeODTSave Hook
|
|
- Kleinere QR-Code-Größen möglich (ab 0.01)
|
|
- Systembankkonto-Unterstützung
|
|
|
|
**Verbesserungen:**
|
|
- Neues Icon (fa-qrcode)
|
|
- Deutsche und englische Übersetzungen vollständig
|
|
- Bessere Fehlerbehandlung und Logging
|
|
- Performance-Optimierungen durch intelligentes Caching
|
|
- SQL-Scripts für automatische Extrafeld-Erstellung
|
|
|
|
**Technische Änderungen:**
|
|
- Komplette Überarbeitung der QRCodeGenerator-Klasse
|
|
- Neue Methoden für Modul-Stile und Rahmen
|
|
- Hash-basiertes Caching mit Styling-Berücksichtigung
|
|
- Verbesserte Transparenz-Unterstützung
|
|
|
|
### Version 1.5 (Januar 2025)
|
|
|
|
- Lokales QR-Code-Caching
|
|
- Extrafeld `qrcodepath` für ODT-Integration
|
|
- Grundlegende Farbkonfiguration
|
|
- {qrcode} Keyword für ODT-Templates
|
|
- Hook-basierte ODT-Verarbeitung
|
|
|
|
### Version 1.0 (2025)
|
|
|
|
- Initiale Version
|
|
- Automatische EPC QR-Code-Generierung
|
|
- Extra-Felder für Rechnungen
|
|
- Externe QR-Service Integration
|
|
|
|
---
|
|
|
|
## API / Entwickler
|
|
|
|
### QR-Code manuell generieren
|
|
|
|
```php
|
|
require_once DOL_DOCUMENT_ROOT.'/custom/epcqr/lib/qrcode.class.php';
|
|
|
|
$qrGen = new QRCodeGenerator($db);
|
|
$filepath = $qrGen->generateEPCQRCode(
|
|
'Max Mustermann', // Kontoinhaber
|
|
'DE89370400440532013000', // IBAN
|
|
'COBADEFFXXX', // BIC
|
|
1234.56, // Betrag
|
|
'RE2501-0001' // Verwendungszweck
|
|
);
|
|
```
|
|
|
|
### Cache leeren
|
|
|
|
```php
|
|
require_once DOL_DOCUMENT_ROOT.'/custom/epcqr/lib/qrcode.class.php';
|
|
|
|
$qrGen = new QRCodeGenerator($db);
|
|
$deleted = $qrGen->clearCache();
|
|
echo "Gelöscht: $deleted QR-Codes";
|
|
```
|
|
|
|
### Styling programmatisch setzen
|
|
|
|
Die Styling-Optionen werden aus der Dolibarr-Konfiguration geladen:
|
|
|
|
```php
|
|
// In llx_const Tabelle:
|
|
// EPCQR_FG_COLOR = '#000000'
|
|
// EPCQR_BG_COLOR = '#FFFFFF' oder 'transparent'
|
|
// EPCQR_LOGO_PATH = '/path/to/logo.png'
|
|
// EPCQR_LOGO_SIZE = 20
|
|
// EPCQR_MODULE_STYLE = 'square' | 'rounded' | 'dots' | 'diamond'
|
|
// EPCQR_BORDER_STYLE = 'none' | 'simple' | 'rounded' | 'double' | 'dashed'
|
|
```
|
|
|
|
---
|
|
|
|
## Support
|
|
|
|
Bei Fragen oder Problemen:
|
|
|
|
- **E-Mail:** data@data-it-solution.de
|
|
- **Website:** https://data-it-solution.de
|
|
|
|
### Bei Problemen
|
|
|
|
1. **Log-Dateien prüfen:** `documents/dolibarr.log`
|
|
2. **Debug-Seite nutzen:** Admin-Center → Debug Tab
|
|
3. **EPCQR in Logs suchen:** Alle Meldungen beginnen mit "EPCQR:"
|
|
|
|
---
|
|
|
|
## Lizenz
|
|
|
|
**GNU General Public License v3.0 oder höher**
|
|
|
|
Copyright (C) 2025 Eduard Wisch / DATA IT-Solutions
|
|
|
|
Dieses Programm ist freie Software; Sie können es unter den Bedingungen der GNU General Public License, wie von der Free Software Foundation veröffentlicht, weitergeben und/oder modifizieren; entweder Version 3 der Lizenz oder (nach Ihrer Wahl) jede spätere Version.
|
|
|
|
Dieses Programm wird in der Hoffnung verteilt, dass es nützlich sein wird, aber OHNE JEDE GEWÄHRLEISTUNG; sogar ohne die implizite Gewährleistung der MARKTGÄNGIGKEIT oder EIGNUNG FÜR EINEN BESTIMMTEN ZWECK.
|
|
|
|
Die vollständige Lizenz finden Sie unter: https://www.gnu.org/licenses/gpl-3.0.html
|