Jump to content
losdelsolo

PS 1.4.11.1 - Si Geolocalisation par ip actif alors prix ht = prix ttc dans fiche produit BO.

Recommended Posts

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.

post-739968-0-21204400-1507936113_thumb.pngpost-739968-0-77826700-1507936113_thumb.png

Cdlt,

Sam

 

 

 

Share this post


Link to post
Share on other sites

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 by losdelsolo (see edit history)

Share this post


Link to post
Share on other sites

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 account

Sign in

Already have an account? Sign in here.

Sign In Now

×
×
  • Create New...

Important Information

Cookies ensure the smooth running of our services. Using these, you accept the use of cookies. Learn More