ramdbf Posted October 28, 2010 Share Posted October 28, 2010 Bonjour,J'ai un problème d'arrondi sur 1.3.1.1 : le montant calculé lors de la confirmation de commande est différent de celui qui figure sur la facture, il y a un écart de quelques centimes.Il y a manifestement bcp de posts sur ce sujet de pb d'arrondis mais je n'arrive pas à trouver la solution.Quelqu'un pourrait-il me dire s'il y a une solution et comment corriger ce qui semble être un bug ? Merci d'avance Link to comment Share on other sites More sharing options...
marty69 Posted October 28, 2010 Share Posted October 28, 2010 bonsoir,c'est un bug très "collant" qui traine depuis un bon bout de temps.à priori (je dis bien à priori) la dernière version SVN corrige "définitivement" le pb Link to comment Share on other sites More sharing options...
ramdbf Posted October 29, 2010 Author Share Posted October 29, 2010 Merci marty, mais pourquoi "à priori" ? la correction ne serait donc pas fiable ?Autre question : qu'est-ce que la SVN et où trouver la procédure d'install (s'il y en a une) ?Merci Link to comment Share on other sites More sharing options...
globule Posted November 9, 2010 Share Posted November 9, 2010 C'est une question d'arrondis trop utilisés !Les déclinaison doivent être entrées en TTC mais la boutique est en HT donc pour chaque ligne on enlève la TVA (arrondi), on fait la somme HT et on calcule le total TTC (encore un arrondi). En faisant cela, plus on a de produits, plus il y a de chances d'avoir un écart !!!Ex : un total TTC 377,10 au lieu de 377,09J'ai résolu ce problème en modifiant le fichier classes/Cart.php : dans la fonction "getOrderTotal" aux environs de la ligne 656 il y a une boucle qui ajoute le prix de chaque produit au total. Dans cette boucle, j'ai supprimé tous les "Tools::ps_round" (ne pas oublier le paramètre ", 2" de l'arrondi à la fin des lignes concernées)Maintenant, l'affichage est conforme à la facture ! Link to comment Share on other sites More sharing options...
ramdbf Posted November 9, 2010 Author Share Posted November 9, 2010 merci globole je vais essayer mais suis pas très familiarisé avec la prog.Mais puisque le problème se règlerait ainsi, pourquoi cette modification n'est-elle pas intégrée dans la version de base de PS ? depuis le temps ? Link to comment Share on other sites More sharing options...
globule Posted November 9, 2010 Share Posted November 9, 2010 Ca fonctionne dans "mon" cas de figure, à vous de tester si ça fonctionne dans le votre !Voici mes modifs à partir de la ligne 650 (ATTENTION : POUR UNE BOUTIQUE HT !) foreach ($products AS $product) { if ($this->_taxCalculationMethod == PS_TAX_EXC) { // Here taxes are computed only once the quantity has been applied to the product price $price = Product::getPriceStatic(intval($product['id_product']), false, intval($product['id_product_attribute']), 2, NULL, false, true, $product['cart_quantity'], false, (intval($this->id_customer) ? intval($this->id_customer) : NULL), intval($this->id), (intval($this->id_address_delivery) ? intval($this->id_address_delivery) : NULL)); $total_price = $price * intval($product['cart_quantity']); //La ligne après le "if" est modifiée. La suivante, commentée avec "//", est celle d'origine. if ($withTaxes) $total_price = $total_price * (1 + floatval(Tax::getApplicableTax(intval($product['id_tax']), floatval($product['rate']))) / 100); //$total_price = Tools::ps_round($total_price * (1 + floatval(Tax::getApplicableTax(intval($product['id_tax']), floatval($product['rate']))) / 100), 2); } Pour une boutique en TTC ce serait juste après (à tester) else { $price = Product::getPriceStatic(intval($product['id_product']), $withTaxes, intval($product['id_product_attribute']), 6, NULL, false, true, $product['cart_quantity'], false, (intval($this->id_customer) ? intval($this->id_customer) : NULL), intval($this->id), (intval($this->id_address_delivery) ? intval($this->id_address_delivery) : NULL)); if (!$withTaxes) $total_price = $price * intval($product['cart_quantity']); // modifié else $total_price = $price * intval($product['cart_quantity']); // modifié } Link to comment Share on other sites More sharing options...
globule Posted November 9, 2010 Share Posted November 9, 2010 merci globole je vais essayer mais suis pas très familiarisé avec la prog.Mais puisque le problème se règlerait ainsi, pourquoi cette modification n'est-elle pas intégrée dans la version de base de PS ? depuis le temps ? Ce n'est pas à moi d'y répondre !Peut-être que ma modif ne fonctionne pas dans tous les cas de figure ...Mais l'avantage premier de l'Open Source ce n'est pas le prix, c'est de pouvoir effectuer soi-même les modifications et les soumettre pour participer à l'effort global. Ce que je fais. Link to comment Share on other sites More sharing options...
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now