Jump to content

Perte de décimal sur les déclinaisons V1.7


Recommended Posts

Bonjour à tous,

 

Je m'appelle Antony, je suis développeur Web dans une agence de Communication et de création de site Web.

 

Je rencontre en ce moment pour un client avec une boutique Prestashop 1.7.0.6 un soucis sur les enregistrements des prix de déclinaisons.

 

Je m'explique, lorsque mon client ajoute ses impacts sur le tarif sur ces x déclinaisons par exemple ( 32,33€ , 111,64€, 171,96€) à la première création pas de soucis les valeurs sont bien enregistrées en base de donnée je suis aller vérifier, cependant si il revient plus tard effectuer une modif sur un seul impact prenons comme exemple la valeur 32,33€ remplacé par 35,90€.

 

A ce moment la lors de l'enregistrement la valeur 35,90€ est bien ajouté mais les autres valeurs passe a 111 et 171 coté Front et Back Office on obtient une perte des décimale à l'actualisation des pages en question.

 

Ayant eu des soucis avec le thème choisis j'ai tester auparavant mon problème sur un prestashop vierge avec le thème classic et j'obtiens le même résultat.

 

J'aurais souhaiter savoir si des personnes on constaté le même soucis sur leur boutique ?

 

Je suis actuellement entrain de regarder coté envoie de données coté BO, la seul idée d'orientation trouvé à ce jour et celle-ci:

 

A l'enregistrement du produit avec l'inspecteur des échange réseau dans la requete POST on peux voir :

 

Impact de prix modifier avant enregistrement :

 

combination_50[attribute_price] 33.64

 

Alors que sans modification :

 

combination_50[attribute_price] 33,640000

 

je pense qu'il doit y avoir un soucis avec le séparateur des décimales mais je n'arrive pas encore a tracer a quel endroit ce passe cette envois de donnée afin de pouvoir tester ma theorie.

 

Je vous souhaite à tous une bonne journée.

 

Link to comment
Share on other sites

  • 3 years later...

Bonjour,

Avez vous trouvé une solution à ce problème?

Je viens de constater la même chose sur la 1.7.5.1 je perds toutes mes décimales des prix d'achat des attributs lorsque je modifie mes fiches produit....

Merci d'avance pour votre réponse.

Link to comment
Share on other sites

Je m'auto répond sur les différents sujets ou j'ai demandé des explications après de plus amples recherches et différentes pistes trouvées voici ce qu'il faut savoir :

A la sortie de la V1.7 ils ont introduit les décimales avec des virgules pour le BO en français qui posaient de gros problèmes aux attributs produit pour :

le prix d'achat, l'impact sur le prix, l'impact sur le poids, l'impact sur le prix unitaire

Ce problème se présente lorsque l'on modifie la fiche produit sans toucher aux prix existants qui sont pré-remplis dans le champ avec une virgule, si on ne les modifie pas le formulaire va être envoyé avec la virgule et va être tronqué à l'entier.

Ce problème a été partiellement solutionné dans les versions ultérieures avec l'ajout d'une fonction "floatParser".

En revanche, dans la version 1.7.5.1 que j'utilise le problème existe toujours pour le prix d'achat des produits !

J'ai donc modifié ce fichier /src/PrestaShopBundle/Model/Product/AdminModelAdapter.php

et on aperçois ligne 326 les lignes suivantes :

            $form_data['combinations'][$k]['attribute_price'] = abs(
                $floatParser->fromString($combination['attribute_price'])
            );
            $form_data['combinations'][$k]['attribute_weight'] = abs(
                $floatParser->fromString($combination['attribute_weight'])
            );
            $form_data['combinations'][$k]['attribute_unity'] = abs(
                $floatParser->fromString($combination['attribute_unity'])
            );

J'ai donc rajouté juste au dessus les lignes suivantes pour effectuer la même opération sur le prix d'achat des attributs :

            $form_data['combinations'][$k]['attribute_wholesale_price'] = abs(
                $floatParser->fromString($combination['attribute_wholesale_price'])
            );

Pour les version antérieures qui n'ont pas la fonction de floatParser c'est cette modification qui m'a mis la puce à l'oreille :

Quote

Pour corriger cela, j'ai remplacé la ligne 265 du fichier : /src/PrestaShopBundle/Model/Product/AdminModelAdapter.php

$form_data['combinations'][$k]['attribute_price'] = abs($combination['attribute_price']);

par :

$form_data['combinations'][$k]['attribute_price'] = abs(str_replace(',', '.', $combination['attribute_price']));

Notez que la modification citée concerne uniquement l'impact sur le prix de l'attribut, il faut donc effectuer le correctif aux autres variables comme le prix d'achat.

Link to comment
Share on other sites

  • 10 months later...
  • 1 year later...

Mille merci à HeineFr,

J'avais ce bug qui m'a pris la tête un moment, car le client disait que ça effacait des données, mais on n'avait pas bien identifié dans quel contexte ça se produisait. Je précise que le code à légèrement changer sur la version 1.7.8.7, et qu'à présent la ligne à ajouter est :

            $form_data['combinations'][$k]['attribute_wholesale_price'] = abs(
                 $this->floatParser->fromString($combination['attribute_wholesale_price'])
            );

et après, fini ce fichu problème :)

Link to comment
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...