importzugferd/CHANGELOG.md
data f1dded0803 docs: v5.7 - PDF-Pfad-Fix für Cron/Batch-Import
- CHANGELOG und README für Version 5.7 aktualisiert
- Dokumentiert: PDF-Pfad-Fix und Fallback für alte Pfade

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-03-04 11:45:41 +01:00

7 KiB
Executable file
Raw Permalink Blame History

Changelog

Alle wesentlichen Änderungen an diesem Projekt werden in dieser Datei dokumentiert.

[5.7] - 2026-03-04

Behoben

  • PDF-Pfad bei Cron/Batch-Import: PDFs werden jetzt korrekt nach /imports/{id}/{filename} gespeichert
    • Problem: Cron speicherte nach /imports/{ref}_{filename}, aber beim Erstellen der Rechnung wurde nach /imports/{id}/{filename} gesucht
    • Lösung: Einheitlicher Pfad für manuellen und Cron-Import
  • Fallback für alte PDF-Pfade: Beim Anhängen an Lieferantenrechnung wird auch im alten Pfadformat gesucht
    • Ermöglicht korrekte Verarbeitung von Imports die vor dem Fix erstellt wurden
    • Sucht zuerst /imports/{id}/{filename}, dann /imports/{ref}_{filename}

[5.5] - 2026-03-03

Behoben

  • Kupferzuschlag-Skalierung in Massenaktualisierung: Kupferzuschlag wird jetzt korrekt skaliert wenn Dolibarr-Mindestmenge von Datanorm-Preiseinheit abweicht
    • Problem: Cu für 50m wurde direkt zu Datanorm-Preis für 100m addiert
    • Lösung: Cu wird erst auf Stückpreis umgerechnet (cu_per_unit = Cu / quantity), dann auf Datanorm-PE skaliert
  • Steuersatz bei Preisübernahme: tva_tx wird jetzt korrekt beibehalten statt auf 0 gesetzt
    • Direktes SQL-UPDATE statt update_buyprice() um alle Felder zu erhalten
  • Preise auf 2 Dezimalstellen: Gesamtpreis und Stückpreis werden auf 2 Nachkommastellen gerundet

Hinzugefügt

  • Filter für Preisrichtung: Neue Checkboxen "Preise rauf" und "Preise runter" in Massenaktualisierung
    • Ermöglicht gezieltes Filtern nach Preiserhöhungen oder -senkungen
  • Filter-Persistenz: Alle Filter (inkl. hide_cables, filter_price_up, filter_price_down) bleiben nach Preisübernahme erhalten
  • Alternative Datanorm-Preise verbessert: Beim Import von Rechnungen mit alternativen Datanorm-Katalogen werden jetzt übernommen:
    • Mindestmenge vom vorhandenen/Hauptpreis
    • Verpackungseinheit vom vorhandenen/Hauptpreis
    • Steuersatz vom vorhandenen/Hauptpreis
    • kaufmenge-Extrafield (nur wenn numerisch und > 0)
  • Extrafield kaufmenge sichtbar: Feld wird jetzt in Formularen angezeigt (list = 1)

Geändert

  • Kupferzuschlag nicht automatisch gesetzt: Bei Datanorm-Import wird kupferzuschlag NICHT mehr gesetzt - wird von separatem Modul berechnet

Technisch

  • Kupferzuschlag-Berechnung: cu_for_price_unit = (kupferzuschlag / effective_quantity) * price_unit
  • kaufmenge-Validierung: trim() !== '' && is_numeric() && (int) > 0

[4.2] - 2026-03-02

Behoben

  • PDF-Anhänge: ZUGFeRD-PDFs werden jetzt korrekt an Lieferantenrechnungen angehängt
    • Problem: PDF wurde nur ins Dateisystem kopiert, nicht in ECM-Datenbank registriert
    • Lösung: EcmFiles-Eintrag wird erstellt für korrekte Verknüpfung mit Rechnung
    • Wichtig: Bei Rechnungsvalidierung wird PDF automatisch mitverschoben

Hinzugefügt

  • Bezeichnung in Rechnungsliste: Teuerster Artikel wird als Bezeichnung der Lieferantenrechnung gesetzt
    • Erleichtert schnelle Identifikation in der Rechnungsliste
    • Spalte "Bezeichnung" muss in Liste aktiviert sein

[4.0] - 2026-03-01

Behoben

  • Verschachtelte HTML-Forms: "Ausgewählte Preise hinzufügen" funktionierte nicht, weil Browser verschachtelte <form>-Elemente nicht unterstützen. Lösung: HTML5 form-Attribut
  • Stückpreis-Anzeige: Einkaufspreise zeigen jetzt den Stückpreis statt Gesamtpreis (z.B. 0,16 statt 16,32 bei 100 Stk.)
  • Preisvergleich: Fehlende Lieferantenpreise werden korrekt auf Stückpreis-Basis verglichen
  • DATPREIS-Kommentare: Feld korrekt als Rabattkennzeichen dokumentiert (war fälschlich als PE-Code beschrieben)

Verbessert

  • Feedback bei Preishinzufügen: Zeigt Erfolgs- und Fehlermeldungen nach dem Hinzufügen von Lieferantenpreisen
  • Mengenkontext: Bei Mengenstaffel wird zusätzlich der Gesamtpreis mit Stückzahl angezeigt (z.B. "0,16 (16,32/100Stk.)")

Hinweis

  • uk_product_barcode UNIQUE KEY auf product_fournisseur_price muss entfernt werden falls vorhanden (mehrere Lieferanten dürfen gleichen EAN haben)

[3.8] - 2026-02-25

Hinzugefügt

  • Kabel-Preisberechnung: Zentrale Funktion calculateCablePricing() für einheitliche Preislogik
  • Kupfergehalt-Berechnung: Automatische Berechnung aus Aderanzahl × Querschnitt × 8.9
  • Ringgröße-Erkennung: Unterstützt Ri100, Tr500, Fol.25m, "Ring 100m", "Trommel 500m"
  • Extrafield "produktpreis": Speichert reinen Materialpreis ohne Kupferzuschlag (nur Kabel)
  • EAN-Auto-Update: Barcodes aus ZUGFeRD-Rechnungen werden automatisch in Lieferantenpreise übernommen

Verbessert

  • Lieferanten-Formate: Korrekte Unterscheidung zwischen Sonepar (price_unit=1, Ring im Namen) und Kluxen/Witte (price_unit=100)
  • Cross-Catalog-Suche: Nur noch über EAN, nicht mehr über Artikelnummern (verhindert Fehlzuordnungen)
  • EAN-Barcode-Typ: Automatische Erkennung (EAN8, EAN13, UPC-A) statt hardcoded EAN13
  • Error-Handling: Besseres Logging bei Extrafield-Fehlern

Behoben

  • Division durch Null bei Preisberechnung abgesichert
  • Mindestbestellmenge und Verpackungseinheit werden von existierenden Lieferantenpreisen übernommen

[3.7] - 2026-02-23

Hinzugefügt

  • GlobalNotify Integration: Benachrichtigungen über das zentrale GlobalNotify-Modul
    • Import-Fehler: Warnung bei fehlgeschlagenen Importen
    • Rechnungen zur Prüfung: Aktion wenn neue Rechnungen warten
    • IMAP-Fehler: Warnung wenn E-Mail Postfach nicht erreichbar
    • Exception/Fatal: Sofortige Benachrichtigung bei Abstürzen
  • Helper-Funktion: notify() für sichere GlobalNotify-Nutzung mit Fallback

Hinweis

GlobalNotify ist optional. Ohne das Modul werden Benachrichtigungen ins Dolibarr-Log geschrieben.

[3.6] - 2026-02-23

Behoben

  • Cron-Job Fix: Fehlendes require_once für admin.lib.php hinzugefügt - verhinderte das Speichern des letzten Laufzeitpunkts
  • Cron-Job lief in Endlosschleife weil dolibarr_set_const() nicht gefunden wurde

Hinzugefügt

  • Dediziertes Cron-Logging: Separate Log-Datei unter /documents/importzugferd/logs/cron_importzugferd.log
  • Shutdown Handler: Fängt fatale PHP-Fehler ab und protokolliert sie
  • Detailliertes Logging: Zeigt jeden Schritt des Import-Prozesses (Ordner-Zugriff, PDF-Scan, IMAP-Status)

Verbessert

  • Robustere Fehlerbehandlung mit try/catch für Exceptions und Throwables
  • IMAP-Import wird nur ausgeführt wenn tatsächlich konfiguriert

[3.5] - 2026-02-15

Hinzugefügt

  • Automatischer Cron-Import aus Watch-Folder
  • IMAP-Mailbox-Unterstützung für E-Mail-Rechnungen
  • Konfigurierbare Import-Frequenz (stündlich, täglich, wöchentlich)
  • Archiv- und Fehler-Ordner für verarbeitete Dateien

[3.0] - 2026-02-01

Hinzugefügt

  • ZUGFeRD/Factur-X PDF-Parsing
  • Automatische Lieferanten-Erkennung
  • Rechnungsvorschau vor Import
  • Datanorm-Integration für Artikelpreise

[2.0] - 2026-01-15

Hinzugefügt

  • Basis-Import von ZUGFeRD-Rechnungen
  • Manuelle Datei-Auswahl
  • Integration in Lieferantenrechnungen

[1.0] - 2026-01-01

Erste Version

  • Grundlegende ZUGFeRD-Erkennung
  • XML-Extraktion aus PDF