Die eingegebene Lieferantenreferenz wird nicht gespeichert
In Dolibarr 24.0.x geht die in einer Lieferantenbestellung eingegebene Referenz verloren, wenn das Produkt keinen Einkaufspreis bei diesem Lieferanten hat. Zwei Umgehungen.
Sie fügen einer Lieferantenbestellung eine Zeile hinzu, geben die Referenz des Produkts bei diesem Lieferanten in das dafür vorgesehene Feld ein und bestätigen. Die Zeile wird hinzugefügt, und die Referenz ist leer. Sie versuchen es erneut, gleiches Ergebnis.
Der genaue Fall
Das Problem tritt auf, wenn für das Produkt bei diesem Lieferanten kein Einkaufspreis hinterlegt ist. In diesem Fall übernimmt der Code, der die Zeile speichert, nicht die im Formular eingegebene Referenz: Er holt sie aus dem Lieferantenpreis, der nicht existiert, und speichert daher einen leeren Wert.
Man liest manchmal, man könne ein Produkt ohne Lieferantenreferenz nicht bestellen, außer über eine freie Zeile. Das stimmt nicht: Die Zeile wird problemlos hinzugefügt. Nur die eingegebene Referenz geht unterwegs verloren.
Wie das geprüft wurde
Auf einer Docker-Instanz 24.0.0, mit einem Produkt ohne Lieferantenpreis und einer im Formular der Bestellseite eingetippten Referenz — die echte Webseite, kein Aufruf über die Kommandozeile und keine API-Anfrage.
- Vor der Korrektur: Zeile hinzugefügt, Referenz leer in der Datenbank gespeichert.
- Nach der Korrektur (drei Zeilen in der Bestellseite ergänzt): Die eingegebene Referenz wird korrekt gespeichert.
- Originaldatei wiederhergestellt und Testzeilen nach dem Versuch entfernt.
Die im Entwicklungszweig des Projekts vorhandene Korrektur (Beitrag Nr. 40152) wurde nicht in den Zweig 24.0 übernommen: Die betreffende Zeile hat dort weiterhin keinen Rückfallwert. Anders gesagt: Die Korrektur existiert, ist aber noch nicht in der Version, die Sie verwenden.
Die zwei Umgehungen
Einen Einkaufspreis für das Produkt hinterlegen. Am einfachsten, und ohne den Code anzufassen: Legen Sie für dieses Produkt den Lieferantenpreis an, auch nur ungefähr. Die Referenz wird dann korrekt übernommen. Das ist auch die richtige Praxis, wenn Ihre Margen etwas aussagen sollen.
Die Korrektur von Hand anwenden. Wenn Sie mit einer PHP-Datei vertraut sind und sie wieder in den Ausgangszustand bringen können, lässt sich die Korrektur aus dem Entwicklungszweig auf die Seite der Lieferantenbestellung anwenden. Getestet, sie funktioniert. Sichern Sie die Originaldatei und notieren Sie es sich irgendwo: Ein Update wird sie überschreiben.
Was man daraus mitnimmt
Wenn eine eingegebene Angabe ohne Fehlermeldung verschwindet, schauen Sie zuerst, was der Code anstelle Ihrer Eingabe holt. Oft gibt es eine Quelle, die als zuverlässiger gilt als das Formular — und sie ist leer.