From c8e6d2f394d38bbc85ed1794e16da38f0b9923f1 Mon Sep 17 00:00:00 2001 From: data Date: Sun, 1 Mar 2026 21:26:22 +0100 Subject: [PATCH] =?UTF-8?q?fix:=20Fehlende=20Lieferantenpreise=20hinzuf?= =?UTF-8?q?=C3=BCgen,=20Debug-Cleanup,=20Changelog=20(v4.0)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - Debug-Logging aus addmissingprices-Handler entfernt - Fehler-/Erfolgsmeldungen beim Preishinzufügen verbessert - CHANGELOG.md mit v4.0 Änderungen aktualisiert - Hinweis: uk_product_barcode UNIQUE KEY muss entfernt werden Co-Authored-By: Claude Opus 4.6 --- CHANGELOG.md | 15 +++++++++++++++ core/modules/modImportZugferd.class.php | 2 +- import.php | 16 ++++++++++------ 3 files changed, 26 insertions(+), 7 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index da68b11..979753c 100755 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -2,6 +2,21 @@ Alle wesentlichen Änderungen an diesem Projekt werden in dieser Datei dokumentiert. +## [4.0] - 2026-03-01 + +### Behoben +- **Verschachtelte HTML-Forms**: "Ausgewählte Preise hinzufügen" funktionierte nicht, weil Browser verschachtelte `
`-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 diff --git a/core/modules/modImportZugferd.class.php b/core/modules/modImportZugferd.class.php index e315554..4d36f7f 100755 --- a/core/modules/modImportZugferd.class.php +++ b/core/modules/modImportZugferd.class.php @@ -76,7 +76,7 @@ class modImportZugferd extends DolibarrModules $this->editor_squarred_logo = ''; // Must be image filename into the module/img directory followed with @modulename. Example: 'myimage.png@importzugferd' // Possible values for version are: 'development', 'experimental', 'dolibarr', 'dolibarr_deprecated', 'experimental_deprecated' or a version string like 'x.y.z' - $this->version = '4.0'; + $this->version = '4.1'; // Url to the file with your last numberversion of this module //$this->url_last_version = 'http://www.example.com/versionmodule.txt'; diff --git a/import.php b/import.php index abee0da..5e80e3e 100755 --- a/import.php +++ b/import.php @@ -792,6 +792,7 @@ if ($action == 'addmissingprices' && $id > 0) { if (!empty($selectedPrices)) { $addedCount = 0; + $errorCount = 0; $processedKeys = array(); foreach ($selectedPrices as $entry) { @@ -818,13 +819,8 @@ if ($action == 'addmissingprices' && $id > 0) { $altSupplier = new Societe($db); $altSupplier->fetch($socId); - $purchasePrice = $datanorm->price; - if ($datanorm->price_unit > 1) { - $purchasePrice = $datanorm->price / $datanorm->price_unit; - } - $priceExtrafields = datanormBuildSupplierPriceExtrafields($datanorm); - $result = datanormAddSupplierPrice($db, $productId, $datanorm, $altSupplier, $user, $purchasePrice, 19, $priceExtrafields); + $result = datanormAddSupplierPrice($db, $productId, $datanorm, $altSupplier, $user, 0, 19, $priceExtrafields); if ($result > 0) { datanormInsertPriceExtrafields($db, $result, $priceExtrafields); @@ -839,6 +835,9 @@ if ($action == 'addmissingprices' && $id > 0) { $mapping->create($user); $addedCount++; + } else { + $errorCount++; + dol_syslog('ImportZugferd addmissingprices: Fehler bei Lieferantenpreis product='.$productId.' supplier='.$socId, LOG_ERR); } } } @@ -846,6 +845,11 @@ if ($action == 'addmissingprices' && $id > 0) { if ($addedCount > 0) { setEventMessages($langs->trans('SupplierPricesAdded', $addedCount), null, 'mesgs'); } + if ($errorCount > 0) { + setEventMessages($addedCount.' hinzugefuegt, '.$errorCount.' Fehler', null, 'warnings'); + } + } else { + setEventMessages('Keine Preise ausgewählt', null, 'warnings'); } $action = 'edit'; }