La référence fournisseur que vous saisissez n'est pas enregistrée
En Dolibarr 24.0.x, la référence saisie sur une commande fournisseur se perd si le produit n'a pas de prix d'achat chez lui. Deux contournements.
Vous ajoutez une ligne à une commande fournisseur, vous saisissez la référence du produit chez ce fournisseur dans le champ prévu, vous validez. La ligne s’ajoute, et la référence est vide. Vous recommencez, même résultat.
Le cas exact
Le problème apparaît quand le produit n’a pas de prix d’achat enregistré pour ce fournisseur. Dans ce cas, le code qui enregistre la ligne ne reprend pas la référence saisie dans le formulaire : il va la chercher du côté du prix fournisseur, qui n’existe pas, et enregistre donc une valeur vide.
On lit parfois qu’on ne pourrait pas commander un produit sans référence fournisseur, sauf à passer par une ligne libre. Ce n’est pas exact : la ligne s’ajoute très bien. C’est uniquement la référence saisie qui se perd en route.
Comment cela a été vérifié
Sur une instance Docker 24.0.0, avec un produit sans prix fournisseur et une référence tapée dans le formulaire de la page de commande — la vraie page web, pas un appel en ligne de commande ni une requête d’API.
- Avant correctif : ligne ajoutée, référence enregistrée vide en base.
- Après correctif (trois lignes ajoutées dans la page de commande) : la référence saisie est bien enregistrée.
- Fichier d’origine restauré et lignes de test retirées après l’essai.
Le correctif présent dans la branche de développement du projet (contribution n° 40152) n’a pas été repris dans la branche 24.0 : la ligne concernée y est toujours sans repli. Autrement dit, la correction existe, mais elle n’est pas encore dans la version que vous utilisez.
Les deux contournements
Renseigner un prix d’achat sur le produit. Le plus simple, et sans toucher au code : créez le prix fournisseur pour ce produit, même approximatif. La référence est alors reprise correctement. C’est aussi la bonne pratique si vous voulez que vos marges veuillent dire quelque chose.
Appliquer le correctif à la main. Si vous êtes à l’aise avec un fichier PHP et que vous savez le remettre en état, le correctif de la branche de développement s’applique sur la page de commande fournisseur. Testé, il fonctionne. Sauvegardez le fichier d’origine, et notez-le quelque part : une mise à jour l’écrasera.
Ce qu’il faut en retenir
Quand une donnée saisie disparaît sans message d’erreur, regardez d’abord ce que le code va chercher à la place de votre saisie. Il existe souvent une source jugée plus fiable que le formulaire — et elle est vide.