WooFrance Dépannage et support WordPress WooCommerce › Forums › How to WooCommerce › Arrondi des prix
- Ce sujet contient 9 réponses, 2 participants et a été mis à jour pour la dernière fois par imbodens89, le il y a 3 années et 9 mois.
-
AuteurMessages
-
13 mars 2018 à 8 h 49 min #54307
Bonjour,
Je me permets de vous écrire car je suis en train de finaliser un site et j’ai un petit problème qui me résiste pour les prix.Comme c’est un site Suisse, j’ai arrondi les prix au 0 ou 5 centimes.
Ca fonctionne plutôt bien sauf pour le Sous-total.
Aucune idée pourquoi.
J’ai essayé plein de nom mais rien ne change./* Arrondir les prix au 0 ou 5 centimes */ add_filter( 'woocommerce_product_get_price ', 'round_price_product', 10, 1 ); add_filter( 'woocommerce_tax_round', 'round_price_product', 10, 1); add_filter( 'woocommerce_calculated_total', 'round_price_product', 10, 1); add_filter( 'woocommerce_coupon_get_discount_amount', 'round_price_product', 10, 1); add_filter( 'woocommerce_cart_product_subtotal', 'round_price_product', 10, 1 ); // ici woocommerce_cart_product_subtotal ne fonctionne pas function round_price_product( $price ){ return round(($price + 0.000001) * 20) / 20; }
Je vous remercie d’avance si vous avez une piste où chercher.
====================
Belle journée
1 user thanked author for this post.
13 mars 2018 à 17 h 06 min #54386Bonjour,
Simple curiosité mais, est-ce qu’il y a une obligation légale pour du e-commerce ?
Parce que je comprends que dans un commerce physique on ne pourra pas me rendre 3 centimes, mais pour des paiements électroniques je ne vois pas le problème.Le code c’est pas trop mon truc, mais ce calcul je le trouve bizarre. Ca pourrait avoir un sens mais alors il faudrait enlever les décimales après la multiplication. Et dans ce cas ça ne sert à rien d’ajouter des centimes.
Je verrais plus quelque chose comme: return round($price * 20, 0) / 20;
====================Content(e) de mon aide ? Vous pouvez m'offrir un café ! 🙂
Avant d'appeler à l'aide: Dépannage Woocommerce
Vous manquez de trafic ? Payez le prix d'un seul backlink et obtenez-en beaucoup plus !
14 mars 2018 à 0 h 45 min #54421le calcul d’arrondi vient de la façon dont PHP gère les nombres à virgule flottante.
si on prend par exemple ce calcul :
$prix = (1.045 - 1) * 100;
$prix devrait contenir 4,5 mais en interne PHP stocke 4.4999999999999929
donc on obtient ces résultats :echo round($prix); // 4 puisque l'arrondi est calculé à partir de 4,499 echo round($prix + 0.000000001); // 5 ce qui est bien le résultat attendu
il y a le même problème pour la comparaison :
$prix == 4.5 // retourne FALSE abs($prix - 4.5) < 0.000000001 // retourne TRUE
====================Développeur PHP et WordPress En Alsace dans l'annuaire des prestataires WordPress et WooCommerce
Création d'extensions pour WordPress et WooCommerce - Personnalisation d'extensions existantes
🔶 Si vous appréciez mon aide, vous pouvez me faire un don de n'importe quel montant en cliquant ici.
1 user thanked author for this post.
14 mars 2018 à 10 h 14 min #54446Merci à vous deux pour votre réponse.
Mon arrondi fonctionne bien, c’est juste pour le sous total dans le processus de commande et les factures PDF qui ne s’arrondit pas.
Admettons qu’un produit soit à 22.90 + 7.7% de TVA = CHF 24.66
Partout il me met bien CHF 24.65 sauf pour le sous total.
Merci d’avance en tout cas pour votre temps
====================
Belle journée
14 mars 2018 à 11 h 19 min #54455qu’indique exactement la loi suisse au sujet de l’arrondi des totaux intermédiaires ? en France par exemple, il est interdit d’afficher des sous-totaux arrondis lors des calculs de T.V.A., seul la somme totale peut l’être.
par exemple si vous avez 10 produits à 24,66.
chaque sous total sera indiqué à 24,65 mais ensuite le total sera de 246,60 ou alors de 10 × 24,65 = 246,50 ?====================Développeur PHP et WordPress En Alsace dans l'annuaire des prestataires WordPress et WooCommerce
Création d'extensions pour WordPress et WooCommerce - Personnalisation d'extensions existantes
🔶 Si vous appréciez mon aide, vous pouvez me faire un don de n'importe quel montant en cliquant ici.
5 avril 2018 à 18 h 16 min #58012Salut à tous,
Ce n’est pas une question légale, c’est une question de monnaie. Le centimes n’existent pas dans la monnaie helvétique. La plus petite pièce est 5 centimes, puis 10 centimes, 20 centimes 50 centimes.
La plupart des logiciels comptables suisses ne permettent pas d’enregistrer des montants de 1-2-3-4-6-7-8-9 centimes, il faut arrondir.
Dans le cas présent, c’est le sous-total qui n’est pas arrondi.
J’ai déjà été confronté à un cas similaire, la façon de procéder pour que cela fonctionne parfaitement et de commander à Woocommerce un plugin qui effectue les arrondis. Cela m’a coûté 200 euros et cela fonctionne parfaitement depuis, mais moi c’était pour certains frais.
Bonne journée
19 avril 2018 à 6 h 29 min #59321Bonjour,
Avec un peu de délai, voici le code que j’ai utilisé et qui fonctionne autant pour le site que lors de la création des PDFs.
add_filter( 'woocommerce_cart_tax_total', 'round_subtotal', 10, 3); add_filter( 'woocommerce_get_price_excluding_tax', 'round_price_product', 10, 1 ); add_filter( 'woocommerce_get_price_including_tax', 'round_price_product', 10, 1 ); add_filter( 'woocommerce_tax_round', 'round_price_product', 10, 1); add_filter( 'woocommerce_product_get_price', 'round_price_product', 10, 1); add_filter( 'woocommerce_calculated_total', 'round_price_product', 10, 1); add_filter( 'woocommerce_calculated_subtotal', 'round_price_product', 10, 1); add_filter( 'woocommerce_cart_subtotal', 'round_subtotal', 10, 3); function round_subtotal( $cart_subtotal, $compound, $instance ) { $origValue = $cart_subtotal; preg_match( '/\d+\.\d+/', $origValue, $floatValue); $roundedValue = number_format( round_price_product( $floatValue[0] ), 2 ); $returnValue = str_replace( $floatValue, $roundedValue, $origValue ); return $returnValue; } function round_price_product( $price ){ // Return rounded price return round( $price * 2, 1 ) / 2; }
J’espère que ca vous aidera.
Belle journée
====================
1 user thanked author for this post.
15 juin 2018 à 10 h 28 min #63503Bonjour le forum,
Je me greffe sur ce sujet car j’utilise le code donné par Carole H. pour arrondir les prix. Cependant je suis confronté à un souci que je n’arrive pas à comprendre et fixer malgré des recherches intensives.
En bref, tout fonctionne bien, sauf pour le « total des lignes produits » du panier qui ne s’arrondi pas. Si je ne me trompe pas sur le nom du « hook » : woocommerce_cart_item_subtotal
En pièce jointe une image pour illustrer le souci. Le total dans le rectangle rouge N°2 est bien arrondi mais pas le total dans le N°1.
Merci d’avance pour votre aide précieuse.
Bonne journée,
Olivier.
****************
Woocommerce 3.4.2
Woocommerce Bulk Discount 2.4.5 ( https://fr.wordpress.org/plugins/woocommerce-bulk-discount/ )
WordPress 4.9.6 (PHP 7.1.8)
2 septembre 2020 à 15 h 57 min #1953358 mars 2021 à 16 h 40 min #219134 -
AuteurMessages
- Vous devez être connecté pour répondre à ce sujet.