dolibarr-dev
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Dolibarr-dev] Bug arrondis prix unitaires


From: Yannick Warnier
Subject: [Dolibarr-dev] Bug arrondis prix unitaires
Date: Mon, 26 Mar 2007 11:12:29 +0100

Salut,

Pour ceux qui n'ont pas suivi le bug 17811
http://savannah.nongnu.org/bugs/?17811

Je propose de faire la modification suivante dans le code, modification
qui pourrait (si mal configurée) apporter pas mal d'effets de bord dans
Dolibarr.

Le problème étant que les décimales ne sont pas toujours arrondies comme
on le voudrait, et que le nombre de décimales à utiliser pour les
calculs intermédiaires dépend souvent du type de produits que l'on veut
vendre.

Ainsi, la solution que je propose est la suivante:
1) on ajoute deux variables de configuration globales (modifiables
uniquement par l'admin) qui donnent un nombre de décimales par défaut
selon le type de montant:
$show_3_decimals_if_smaller_than = 1; 
$show_4_decimals_if_smaller_than = 0.5;

2) le code de la fonction price(), qui est l'endroit où l'on effectue
les arrondis jusqu'ici, deviendrait du type:

...
// On pose par defaut 2 decimales 
$decimal = 2; 
$amount = ereg_replace(',','.',$amount); 
$abs = abs($amount); 
if($abs < $show_4_decimals_if_smaller_than){ 
  $decimal = 4; 
}elseif($abs < $show_3_decimals_if_smaller_than){ 
  $decimal = 3; 
}
// ensuite la fonction price() arrondit en fonction de $decimal
...

3) On pourrait également (dans un second temps) proposer des paramètres
à la fonction price() qui permettent de modifier le nombre de chiffres
après la virgule au cas par cas.

Je ne pense pas qu'il y ait une seule monnaie au monde qui propose une
écriture à plus de 4 décimales mais je me trompe peut-être...

Rodolphe me conseille de placer ces constantes dans la table llx_const
pour qu'elles soient accessibles à l'admin de Dolibarr.

Est-ce que ça va pour tout le monde?

Yannick





reply via email to

[Prev in Thread] Current Thread [Next in Thread]