J'ai aussi eu des problèmes d'arrondi dans les taxes de mes commandes (et du coup des factures :/)
Leur valeur était erronée dans spip_commandes_details : j'avais des 19.999%, des 20.001% et cie.
De mémoire, il me semble que le problème venait du fait que la taxe était *déduite* d'après le prix ht et le prix ttc au moment de la transformation du panier en commande.
Du coup il y a forcément des problèmes d'arrondi.
J'avais essayé d'augmenter la précision jusqu'à 6 décimales, mais le problème a demeuré.
J'ai contourné tout ça en récupérant la bonne valeur de la taxe de chaque objet au après la création de la commande (mes taxes sont enregistrées dans une table à part), avec je ne sais plus quel pipeline.
Bref, je ne sais pas si passer de float en decimal règlerait ce problème d'arrondi en particulier, mais si on peut gagner un peu en précision ça ne peut pas faire de mal !
Le 18/09/2017 à 19:43, nicod_ a écrit :
Hello,
Rastapopoulos, cerdic et autres qui utilisent les plugin produits et commandes, y'a t'il une raison pour que les prix soient en FLOAT ?
En fait un FLOAT est stocké différemment d'un DECIMAL dans Mysql, et ça peut poser des problèmes d'arrondis (vécu).
Le float est une valeur approximative, et plutôt utilisé pour tout ce qui est calcul scientifique.
Tout ce qui est mesures, monétaire etc devrait être en decimal.
Et même, dans le plugin commandes, sur la table commandes_detail :
`prix_unitaire_ht` float NOT NULL DEFAULT 0,
alors que pour une réduction (qui représente une somme d'argent aussi) :
`reduction` decimal(4,4) NOT NULL DEFAULT 0.0000,
Ça serait mieux de passer ces FLOAT en DECIMAL(15,4) par exemple.
En tout cas, moi c'est ce que je vais faire, au moins de mon côté.
Les galères d'un centime d'écart dans des calculs tous bêtes, j'ai vécu, c'est pas cool.