Calcul Des Arrondis Prix Au Kilo

7 posts in this topic

Posted · Report post

Bonjour,

 

Comment est géré le calcul du prix au kilo sur les produits ?

J'ai un décalage de quelques centimes entre mon prix réel au kilo et celui calculé par peel en affichage.

 

Exemple

Le prix réel au kilo de ma bavette est 25,95€

Quand j'indique dans la fiche produit le prix d'une pièce de 180 gr à 3,95€ peel m'indique comme prix au kilo 25,94€ : il y a 1 centime d'écart.

 

Pour certains produits, j'ai plusieurs centimes d'écarts.

 

Merci pour vos retours

Share this post


: post
Share on other sites

Posted · Report post

Bonjour,

* Pour votre information, le calcul fait est le suivant :

$product_object->get_final_price(get_current_user_promotion_percentage(), $with_taxes, $reseller_mode) * 1000 / intval($product_object->poids)

avec un poids en grammes dans $product_object->poids

et la fonction fprix pour l'affichage fait un number_format en PHP à 2 décimales, sachant que number_format fait l'arrondi en plus du formattage.

Donc :

- vous prenez le prix affiché (avec ou sans TVA, suivant votre boutique

- vous divisiez par le poids en kilo (= grammes divisé par mille)

- vous arrondissez à 2 chiffres après la virgule

Ce fonctionnement est inchangé depuis plusieurs années. Si vous avez une plus vieille version, je ne sais pas comment est fait le calcul dans votre version, en tous cas si ça ne fonctionne pas ainsi vous pouvez chercher "poids" dans le code pour trouver la formule utilisée.

* Avec votre exemple chiffré, si je corrige en prenant un prix au kilo de 21,95 et non pas 24,95 puisque j'imagine que vous vous êtes trompé dessus, les chiffres sont les suivants :

3.95/180*1000=21.9444444 => arrondi, ça donne 21.94 et non pas 21.95 contrairement à ce que vous indiquez.

Gilles

Share this post


: post
Share on other sites

Posted · Report post

Bonjour,

 

Merci pour l'info. Dans mon exemple j'avais en effet fais une erreur de frappe.

 

Mon soucis, c'est que je pars du prix au kilo de 21,95€ fixé par le commerçant et je le décline en 180 grammes. 

Avec le calcul : si j'indique le prix 3.95 pour 180 grammes, j'obtiens en effet le prix de 21.94€ le kilo, qui n'est pas le prix fixé par le commerçant.

 

Je suis dans l'impasse !

 

Autre réflexion : dans Peel 7,2, y a t'il une fonctionnalité qui permet à un client dans la fiche détail d'un produit de saisir le poids de produits qu'il souhaite acheter ?

Exemple pour un rôti de bœuf, un client pourrait demander un rôti de 1,2 kilo. En saisissant cette valeur le prix du produit serait actualisé et il pourrait de mettre dans son panier.

 

 

Merci pour votre aide

Share this post


: post
Share on other sites

Posted · Report post

* C'est la raison pour laquelle les prix sont stockés à 5 chiffres après la virgule si vous tenez à ajuster très précisément un prix pour éviter ce genre de problème.

Donc pour faire ce que vous souhaitez, ne mettez pas 3,95 EUR, mais 3,951 EUR.

* Pour d'acheter 1,2 fois un produit de 1 kilo, il est possible d'autoriser des quantités variables. Il faut pour cela définir une variable de configuration dans l'administration qui s'appelle "allow_float_quantity" de type "boolean" et de valeur "true".

Sinon par défaut la quantité est un entier.

Share this post


: post
Share on other sites

Posted · Report post

Bonjour,

C'est ce que j'avais indiqué comme prix dans ma fiche produit : 3.951 pour 180 grammes et j'ai 21.94€ le kilo au lieu de 21.95€.

 

La deuxième solution avec la variable  "allow_float_quantity"  me plait bien. Ça me permettrait de créer uniquement des produits au kilo et chaque client pourra choisir la quantité voulue.

 

Je teste et je reviens vers vous au cas où.

 

Merci

Share this post


: post
Share on other sites

Posted · Report post

Bonsoir,

J'ai étudié le fonctionnement du prix au kilo dans le détail en faisant des tests, et effectivement il y a un arrondi fait lors de l'appel du prix original, pour respecter le paramétrage de facturation en HT ou TTC.

Pour permettre la prise en compte de N décimales dans ce calcul, il faut appeler le calcul de l'objet produit en passant la quantité à l'intérieur du calcul et non pas après.

Pour faire cela, deux changements simples à faire :

* La ligne dans la fonction affiche_prix dans lib/fonctions/display_product.php :

'prix' => fprix($product_object->get_final_price(get_current_user_promotion_percentage(), $with_taxes, $reseller_mode) * 1000 / intval($product_object->poids), true)

(vers la ligne 550 dans ma version), doit être remplacée par

'prix' => fprix($product_object->get_final_price(get_current_user_promotion_percentage(), $with_taxes, $reseller_mode, false, false, 1000 / floatval($product_object->poids)), true)

* et dans l'objet produit, dans la méthode get_final_price de lib/class/Product.php :

$price_ht = $this->get_original_price(false, false, false, false, false, false, 1, false);

(vers la ligne 820 dans ma version), doit être remplacée par

$price_ht = $this->get_original_price(false, false, false, false, false, false, $quantity, false) / $quantity;

Ce changement sera présent dans la prochaine version du logiciel.

En vous souhaitant un bon weekend,

Gilles

Share this post


: post
Share on other sites

Posted · Report post

Bonjour Gilles,

J'ai réalisé les changements et ça fonctionne. J'ai retrouvé mes centimes égarés.

 

Merci de vous être penché sur mon problème.

 

Bonne journée

Share this post


: 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

Twitter Advisto ecommerce

Facebook PEEL Shopping