losdelsolo Posted October 13, 2017 Share Posted October 13, 2017 Bonjour a tous et toutes, J'ai noté un comportement curieux de prestashop 1.4.11.1 si l'on active la géolocalisation par ip: Avec une tva a 20% posé dans les règles de taxes, les pays et zones paramétrées correctement avec cette taxe: Si l'option géolocalisation par ip est désactivée dans le bo alors le prix ttc et le prix ht sont correctes dans les fiches produits et dans la liste des produits du bo. Mais si on active la géolocalisation par ip alors le prix ht et le prix ttc sont identiques (montant HT pour ces deux champs) dans les fiches produits ainsi que dans la liste produit. J'ai testé et retesté, ce comportement est bien lié a l'activation ou désactivation du module. Plutôt ennuyeux si on désire géolocaliser pour afficher les prix correctes ht ou ttc aux clients mais aussi pouvoir saisir les prix en ttc direct dans le backoffice comme d'habitude ! Je joint deux dump écran pour illustrer mon propos, l'un géolocalisation active, le second géolocalisation désactivée. Si quelqu'un as une explication a ce comportement, je suis preneur. Cdlt, Sam Link to comment Share on other sites More sharing options...
losdelsolo Posted November 9, 2017 Author Share Posted November 9, 2017 (edited) Bonsoir, Pour faire avancer la chose: Avant activation de la géolocalisation par ip: Le fichier adminproducts.php renvoi le contenu de la variable $taxe_rate correctement sois dans le cas présent 20.000 (tva FR). Donc la méthode de calcul ttc - ht (effectué par price.js ) et inversement fonctionne correctement dans la fiche produit du Back office. Si Géolocalisation par ip actif: Le contenu de $taxe_rate est de 0, ce qui explique que price.js n'effectue pas le calcul ttc - ht et inversement puisque le taux de tva est nulle. J'ai fait un test en assignant la variable $taxe_rate en dur dans le code a '20.000' puis en activant geoip. Ca fonctionne., le calcul est fait sans problème. Ci dessous le bout de code a l'origine de ce bug dans adminproducts.php avec mon anti crevaison inclus et commenté. foreach ($tax_rules_groups AS $tax_rules_group) { $tax_rate = (array_key_exists($tax_rules_group['id_tax_rules_group'], $taxesRatesByGroup) ? $taxesRatesByGroup[$tax_rules_group['id_tax_rules_group']] : 0); // Rustine pour probleme backoffice prix ht = prix ttc et pas de calcul tva si geolocalisation par ip actif - Sam // $tax_rate = '20.000'; // Fin Rustine echo 'taxesArray['.$tax_rules_group['id_tax_rules_group'].']='.$tax_rate."\n"; // Fin Rustinage } J'ai inspecté le code gérant la géolocalisation par ip, tenté de trouver l'origine de ce comportement mais nada, niet, ketchi, keud ! Ca avance, toutefois je rencontre le même problème dans le listing produit a savoir, le prix de base est identique au prix final (Hors taxe) si geoip actif. Si un prog connaissant bien la version 1.4.11.1 passe dans le coin, j'aimerais bien qu'il m'explique comment le module de géolocalisation par ip fait un bypass sur ces valeurs car je n'ai trouvé ni override en dur, ni appel de fonction spécifique expliquant ce comportement generalisé a l'ensemble des prix present dans le catalogue. Cordialement, Sam Edited November 9, 2017 by losdelsolo (see edit history) 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