patfrat Posted July 4, 2013 Share Posted July 4, 2013 (edited) Bonsoir, Dans la série je me réponds à moi-même et j'en fait profiter le autres. Actuellement, sur deux boutiques en 1.4.6.2 (qu'il faudrait songer à mettre à jour), j'avais un problème avec les remises qui s'appliquaient sur l'Ecotaxe alors que c'est strictement pas bon du tout du tout ! J'ai fini par retrousser mes manches et ajuster mon clavier et j'ai fouiller le code. Voilà ce que j'ai trouvé. La classe Discount.php, lors de l'appel de la méthode getValue, ligne 313, calcule le montant total des remises en pourcentage sur chaque ligne produit du panier. Ok. Sauf que, lors de l'appel du prix du produit avec taxes (TVA surtout), le montant renvoyé par cet appel contient l'ecotaxe, ce en proportion du nombre d'articles (ou quantité) de la ligne concernée dans le panier. ... donc, faux ! Attention, ce qui suit vaut pour un site qui applique la TVA sur l'Ecotaxe Voici la ligne 313 en question $amount += ($useTax? $product['total_wt'] : $product['total']) * $percentage; Voici ce que j'ai mis à la place dans une classe Discount.php placée dans le dossier override/classes $taxDiscount = Cart::getTaxesAverageUsed((int)($cart->id)); $tax_rate = 1; if ($useTax AND isset($taxDiscount) AND $taxDiscount != 1) $tax_rate = 1 + $taxDiscount / 100; $amount += ($useTax? $product['total_wt'] - $product['ecotax']*$product['cart_quantity']*$tax_rate : $product['total']) * $percentage; Je retire donc du total TTC de ma ligne de produits du panier, le total TTC de l'ecotaxe. Je prend la valeur de l'ecotaxe qui est là en HT, bien que renseignée en TTC en backoffice, c'est en HT dans la base de données car j'ai la TVA qui s'applique sur l'ecotaxe. Je multiplie cette valeur par la quantité de la ligne concernée dans mon panier puis j'applique la TVA ... ici calculée au préalable avec Cart::getTaxesAverageUsed((int)($cart->id)); Bref, je ne sais pas si c'est corrigé dans les versions supérieures à la 1.4.6.2 car je n'ai pas eu le temps d'aller voir et on n'est pas prêt de se mettre à jour encore sur les deux sites concernés mais ça à le mérite de fonctionner ! Voir plus bas le correctif Edited July 9, 2013 by patfrat (see edit history) Link to comment Share on other sites More sharing options...
patfrat Posted July 4, 2013 Author Share Posted July 4, 2013 (edited) Best search system Parce que je n'ai pas cherché avant ? très constructif comme commentaire ! C'est quoi, un bot qui spam le forum ? Edited July 4, 2013 by patfrat (see edit history) Link to comment Share on other sites More sharing options...
patfrat Posted July 4, 2013 Author Share Posted July 4, 2013 Ha, j'ai mis exotax au lieu d'ecotax dans les tags ... comment corriger ? Link to comment Share on other sites More sharing options...
patfrat Posted July 9, 2013 Author Share Posted July 9, 2013 (edited) Petite correction due à une mauvaise indentation, j'ai dû ajouté des brackets sur mes boucles {} if ($this->cumulable_reduction OR (!$product['reduction_applies'] AND !$product['on_sale'])) { $taxDiscount = Cart::getTaxesAverageUsed((int)($cart->id)); $tax_rate = 1; if ($useTax AND isset($taxDiscount) AND $taxDiscount != 1) { $tax_rate = 1 + $taxDiscount / 100; } $amount += ($useTax? $product['total_wt'] - $product['ecotax']*$product['cart_quantity']*$tax_rate : $product['total']) * $percentage; //$amount += ($useTax? $product['total_wt'] : $product['total']) * $percentage; } Edited July 9, 2013 by patfrat (see edit history) 1 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