5.1 KiB
Migration zu Multi-Dokumenttyp-Unterstützung
Übersicht
Diese Migration erweitert das SubtotalTitle-Modul von der ausschließlichen Unterstützung für Rechnungen auf:
- ✅ Rechnungen (invoice/facture)
- ✅ Angebote (propal)
- ✅ Kundenaufträge (order/commande)
Durchgeführte Änderungen
1. Datenbank-Schema (✅ Erledigt)
Datei: sql/llx_facture_lines_manager.sql
Neue Spalten zur Tabelle llx_facture_lines_manager:
document_typeVARCHAR(20) - Art des Dokuments ('invoice', 'propal', 'order')fk_propalINT(11) - Referenz auf Angebotfk_commandeINT(11) - Referenz auf Kundenauftragfk_propaldetINT(11) - Referenz auf Angebots-Zeilefk_commandedetINT(11) - Referenz auf Auftrags-Zeile
Indizes für bessere Performance hinzugefügt.
2. Modul-Konfiguration (✅ Erledigt)
Datei: core/modules/modSubtotalTitle.class.php
- Hooks erweitert:
invoicecard,propalcard,ordercard - Beschreibung aktualisiert
3. Helper-Klasse (✅ Neu erstellt)
Datei: class/DocumentTypeHelper.class.php
Zentrale Klasse zur Verwaltung verschiedener Dokumenttypen:
getTypeFromContext()- Erkennt Typ aus Hook-ContextgetTypeFromObject()- Erkennt Typ aus Dolibarr-ObjektgetTableNames()- Liefert DB-Tabellennamen für jeden TypgetContext()- Liefert Hook-Context für jeden Typ
4. Hook-Implementierung (✅ Teilweise erledigt)
Datei: class/actions_subtotaltitle.class.php
Angepasste Methoden:
formObjectOptions()- Unterstützt alle 3 DokumenttypenprintObjectLine()- Generisch für alle TypenformAddObjectLine()- Generisch für alle TypensyncManagerTable()- Generisch für alle TypenrenderSectionDropdown()- Generisch für alle TypengetNextLineOrder()- Generisch für alle Typen
WICHTIG: Die Methode renderAllPendingSections() wurde teilweise angepasst, benötigt aber noch weitere Überprüfung.
5. JavaScript (⚠️ Teilweise erledigt)
Datei: js/subtotaltitle.js
Hinzugefügt:
getDocumentType()- Erkennt Dokumenttyp aus URL
TODO: JavaScript-Code muss noch vollständig generisch gemacht werden.
6. AJAX-Dateien (❌ Noch zu erledigen)
Alle AJAX-Dateien im Verzeichnis ajax/ müssen angepasst werden:
create_section.phpmove_section.phpdelete_section.phprename_section.phpcreate_textline.phpedit_textline.phpdelete_textline.phpassign_last_product.phpmove_product.phpremove_from_section.phpreorder_all.phptoggle_subtotal.phpmass_delete.phpsync_to_facturedet.phpget_sections.phpget_textlines.phpget_line_orders.php
Anpassung: Jede Datei muss:
document_typeParameter empfangen/erkennenDocumentTypeHelperverwenden- Korrekte FK-Spalten verwenden (fk_facture/fk_propal/fk_commande)
Installationsschritte
Schritt 1: Datenbank Migration
mysql -u root -p dolibarr < /srv/http/dolibarr/custom/subtotaltitle/sql/llx_facture_lines_manager.sql
Schritt 2: Modul neu laden
- In Dolibarr: Home → Setup → Modules
- SubtotalTitle Modul deaktivieren
- SubtotalTitle Modul aktivieren
Schritt 3: Cache leeren
rm -rf /srv/http/dolibarr/documents/admin/temp/*
Testen
Test-Checkliste
Rechnungen (Bestand - sollte weiter funktionieren)
- Section erstellen
- Produkte zur Section hinzufügen
- Textzeilen erstellen
- Zwischensummen anzeigen
- Drag & Drop
- Sync zu facturedet
Angebote (NEU)
- Section erstellen
- Produkte zur Section hinzufügen
- Textzeilen erstellen
- Zwischensummen anzeigen
- Drag & Drop
Kundenaufträge (NEU)
- Section erstellen
- Produkte zur Section hinzufügen
- Textzeilen erstellen
- Zwischensummen anzeigen
- Drag & Drop
Bekannte Probleme / TODOs
-
AJAX-Dateien noch nicht angepasst - Alle AJAX-Calls verwenden noch
facture_idstatt generischemdocument_id -
JavaScript teilweise angepasst - Viele Funktionen verwenden noch
facture_idstattdocument_id+document_type -
Sync-Funktionalität - Die Sync-zu-PDF-Funktionalität (
in_facturedet) muss für Angebote und Aufträge getestet werden -
PDF-Templates - Eventuell müssen auch PDF-Templates angepasst werden
-
Substitutions - Die Substitutions-Funktionen müssen eventuell erweitert werden
Nächste Schritte (Priorität)
-
AJAX-Dateien anpassen (HOCH)
- Template-Beispiel erstellen
- Alle AJAX-Dateien nach Template anpassen
-
JavaScript vollständig generisch machen (HOCH)
facture_iddurchdocument_idersetzendocument_typeüberall hinzufügen
-
Testen (MITTEL)
- Mit Angeboten testen
- Mit Kundenaufträgen testen
-
renderAllPendingSections überprüfen (MITTEL)
- SQL-Queries auf Korrektheit prüfen
- Alle
$doc_keyvs$document_idVerwendungen überprüfen
Support
Bei Fragen oder Problemen:
- Dokumentation:
/srv/http/dolibarr/custom/subtotaltitle/README.md - Code-Review empfohlen für:
class/actions_subtotaltitle.class.php
Version: 1.1.0 Datum: 2026-01-23 Autor: Eduard Wisch