Erreur dans le calcul du "Meilleur prix d'achat"

Nous avons migré sur Dolibarr v.14.0.3 récemment, et j’ai remarqué que le « Meilleur prix d’achat » des produits est maintenant faussé :

Le meilleur prix d’achat du produit ci-dessus devrait être 178,30/2 = 89.15, mais est affiché à 44,575.

S’agit-il d’un bug de cette version ? Ou d’un potentiel problème de configuration ? Quelle est la formule utilisée pour calculer ce « Meilleur prix d’achat » ?

[EDIT] Après vérification, ce phénomène survient pour tous mes fournisseurs et est donc indépendant du fournisseur lui-même (remise globale).

Je vous remercie,

Fabien

Bonjour,
Idem pour moi : avez-vous trouvé l’origine du problème ?
Merci d’avance
Sterwen

Bonjour,
J’ai exactement le même problème.
Avez-vous trouvé une solution?
Merci d’avance
Nicolas

Je viens de tester et je reproduis aussi ce problème, je pense qu’il s’agit d’un bug. En effet, dans la classe ProductFournisseur, la fonction find_min_price_product_fournisseur() applique une première fois la réduction (autour de la ligne 820) :

// discount calculated buy price
$fourn_unitprice = $record["unitprice"] * (1 - $record["remise_percent"] / 100) - $record["remise"];

et la remise est ré-appliquée au moment d’afficher le prix, dans la méthode display_price_product_fournisseur() de la même classe, autour de la ligne 950 :

$out .= '<tr><td class="right">'.($showunitprice ?price($productFourn->fourn_unitprice * (1 - $productFourn->fourn_remise_percent / 100) - $productFourn->fourn_remise) : '').'</td>';

Naïvement, je dirais que supprimer l’application de la remise au moment de l’affichage ou au moment du chargement résoudrait le problème, mais il faut évidemment analyser l’impact : je suis sûr qu’une résolution simpliste ajouterait des bugs ailleurs.

L’origine du bug est sur la ligne 849, modifiée le premier octobre 2021 pour que la recherche du meilleur prix fournisseur tienne compte des prix dynamiques, mais qui provoque cette double application de la réduction.

[edit]

J’ai proposé un correctif, on verra s’il est bon (je suis certain qu’il résout le bug lorsqu’on n’utilise pas le module prix dynamique, mais je ne suis pas sûr qu’il soit bon lorsque ce module est activé).

Si vous n’utilisez pas le prix dynamique et que vous ne souhaitez pas attendre la publication d’un correctif final, vous pouvez appliquer le correctif proposé en attendant, mais je vous conseille plutôt d’attendre afin d’être sûrs d’avoir le meilleur correctif :slight_smile:

1 « J'aime »

Bonjour,
Merci de ce partage. Notre prestataire a fait une correction également, et a fait remonter le bug.
Cela devrait régler définitivement le problème.
Sterwen

C’est effectivement corrigé en v.15.3. Merci à tous.

1 « J'aime »

Bonjour, j’utilise la version 16.0.1 de Dolibarr et il y a un autre bug d’affichage du meilleur prix d’achat sur un produit.
Je m’explique : Admettons que j’ai 2 fournisseurs pour 1 produit :
- Mon premier fournisseur me propose le produit à 60€ sans remise, donc 60€ en prix d’achat
- Mon second fournisseur me propose le produit à 100€, mais avec une remise de 50%, donc 50€ en prix d’achat.
Et bien le logiciel va afficher en meilleur prix d’achat 60€ et non 50€ car il ne prends pas en compte le prix remisé.

J’ai exactement le même souci avec un fournisseur qui me propose différents prix pour le même produit suivant la quantité :
- Mon fournisseur me propose un produit, en quantité de 1, à 100€, donc 100€ en prix d’achat
- Mon fournisseur me propose un produit, en quantité de 2, à 200€ au total, mais avec 5% de remise, donc 95€ en prix d’achat
Et bien le meilleur prix d’achat qui s’affiche c’est 100€

Je ne sais pas si l’un des développeur du logiciel a vu ce bug mais ce serait chouette de le corriger.

Merci d’avance,

1 « J'aime »