{Résolu}[ Atos ] Pb de montant arrondi, le montant de la page CB est faux |
Bienvenue invité ( Connexion | Inscription )
{Résolu}[ Atos ] Pb de montant arrondi, le montant de la page CB est faux |
5 Oct 2004, 12:08
Message
#1
|
|
Ceinture jaune+ OSC Groupe : Membres Messages : 110 Inscrit : 23-July 04 Lieu : Paris Membre no 2931 |
Voila mon pb: a la sortie du checkout_confirmation, le total de ma commande est:
$order->info['total'] = 9.20 euros (normal) Quand j'arrive sur la page de saisie de CB, il est de 9.19 euors Dans le module ATOS, le montant initial a subi ce traitement (dans la fonction qui crée la commande à envoyer a ATOS): $amount = sprintf("%03d", $amount * $this->_getCurrencyUnit($currency)); Quelqu'un peut-il me m'expliquer cette ligne? Avez-vous deja rencontré ce probleme? -------------------- CREloaded 6.0 FR SP1.1.01 + TVA Intracomm + B2B_b092 + Paiement Atos + Visitors Web Stats 1.7 + OrderCheck
|
|
5 Oct 2004, 13:13
Message
#2
|
|
Ceinture blanche OSC Groupe : Membres Messages : 3 Inscrit : 5-October 04 Lieu : Nord Est Membre no 3419 |
question bete mais des fois utile ... t'as mis a jour le taux de conversion du $ vers l'Euro ?
tu dois avoir EUR = 1.00000000 et $ = 1.xxxxxxxxx suivant le cours actuel. -------------------- - tant va la CB a l'eau qu'a la fin elle me les brise -
|
|
5 Oct 2004, 14:06
Message
#3
|
|||
Ceinture jaune+ OSC Groupe : Membres Messages : 110 Inscrit : 23-July 04 Lieu : Paris Membre no 2931 |
Dans l'Admin de la boutique tu veux dire ? Je n'ai que l'euro dans les devises ps. Je ne travaille qu'en euros, tous mes prix sont stockés en euros -------------------- CREloaded 6.0 FR SP1.1.01 + TVA Intracomm + B2B_b092 + Paiement Atos + Visitors Web Stats 1.7 + OrderCheck
|
||
|
5 Oct 2004, 14:22
Message
#4
|
|
Ceinture blanche OSC Groupe : Membres Messages : 3 Inscrit : 5-October 04 Lieu : Nord Est Membre no 3419 |
oui, dans localisation tu fais actualiser les devises apres avoir configuré ton OSC pour l'euro par defaut (normalement si tu as la langue français par defaut et l'ajustement auto langue/monaie c'est bon).
Il semblerait que le script soit a la base configuré pour tout gerer en $ et qu'il convertisse vers l'euro donc c'est possible que sans faire cette manip le taux de conversion a + de 1.000000 te mette dedans ... g eu le meme probleme, et je l'ai résolu comme ca. A ton écoute ... bonne chance -------------------- - tant va la CB a l'eau qu'a la fin elle me les brise -
|
|
27 Oct 2004, 15:19
Message
#5
|
|||||
Ceinture jaune OSC Groupe : Membres Messages : 67 Inscrit : 20-March 03 Membre no 974 |
Il y a un bug dans le module :
à remplacer par :
Vinioute |
||||
|
27 Oct 2004, 22:17
Message
#6
|
|
Ceinture jaune+ OSC Groupe : Membres Messages : 110 Inscrit : 23-July 04 Lieu : Paris Membre no 2931 |
es-tu sûr de ton code vinioute ? si j'ai un montant de $amount=154.0522 ton instruction donne 15405.22 (au lieu de 15405) Pour ma part, j'ai finalement laissé le sprintf tel quel... malgré le centime d'ecart de tps en tps -------------------- CREloaded 6.0 FR SP1.1.01 + TVA Intracomm + B2B_b092 + Paiement Atos + Visitors Web Stats 1.7 + OrderCheck
|
|
4 Nov 2004, 17:38
Message
#7
|
|||
Ceinture jaune OSC Groupe : Membres Messages : 67 Inscrit : 20-March 03 Membre no 974 |
Oki alors si tu préfères ça devrait être mieux :
|
||
|
21 Mar 2007, 15:34
Message
#8
|
|
5eme dan OSC Groupe : Administrateur Messages : 9221 Inscrit : 4-March 03 Lieu : Pau Membre no 927 |
Je pense qu'il y a plus simple :
CODE $amount = sprintf("%03d", round($amount,2) * $this->_getCurrencyUnit($currency)); ça devrait effectuer l'arrondi sur deux décimales du montant à transmettre à la banque qui jusque là se trouvait juste tronqué avant conversion en centimes : 123.2151 se trouve converti en 12321 par la ligne du module Atos alors qu'osC calcule 123.22 par arrondi dans la facture. Avec cette petite modif le montant transmis sera 12322. (soit l'équivalent de la facture) C'est, il me semble, plus propre dans le code de la contrib Atos. -------------------- Tout d'abord : - Ni Hotline ni Service Après Vente, ces forums sont un lieu d'échange. BIEN POSER SA QUESTION (généralités)
Les "Informations Importantes" que vous devez ABSOLUMENT avoir lues : Règlement, Bien poser sa question dans ces forums et Bien utiliser les Forums. Les raccourcis pour gagner du temps : la FAQ, les PDF de la Doc (MS2-fr): PDF-V1 et PDF-V2, le moteur de Recherche sur les forums , la Liste des Contributions de Corbin. ----------------------------- Quelques sites de référence --------------------------- PHP: Le site du Zéro et PHP Débutant avec la DOC en français -- HTML: Self HTML - WebProgrammation -- CSS: OpenWeb - AlsaCréations - CSS/Edge -- Autres ressources: - XajaX - highslide js Les bons outils : EasyPHP - WAMP-5 - - Notepad++ - Firefox et son extension WebDeveloper Le gène idéal c'est le gène original. Le génie des halles est un Génie des Alpages qui tente d'être à la page. (Merci f'murrr pour les cours de philosophie de chien) |
|
3 Oct 2007, 09:09
Message
#9
|
|
Ceinture blanche OSC Groupe : Membres Messages : 1 Inscrit : 28-April 06 Membre no 10165 |
Bonjour,
J'ai un souci de montant inférieur de 0,01 € par rapport au prix réel de la commande. Concernant atos.php (html/boutique/includes/modules/payment) : j’ai modifié selon le topic du forum d’OsCommerce ci-dessus la ligne suivante : l.526 : $amount = sprintf("%03d", $amount * $this->_getCurrencyUnit($currency)); Remplacé par : $amount = sprintf("%03d", round($amount,2) * $this->_getCurrencyUnit($currency)); Mais je viens d'avoir à nouveau un écart sur une commande de 145,69 € au lieu de 145,70... J'hésite à mettre ce code en production sur le site : $amount = str_pad (round($amount * $this->_getCurrencyUnit($currency), 0), 3, 0, STR_PAD_LEFT); Quelqu'un peut-il m'aider s'il vous plaît ? Elsa Hermantier Pôle Internet 04 68 41 98 77 Ce message a été modifié par broquerea - 3 Oct 2007, 09:25. |
|
28 Jul 2008, 18:57
Message
#10
|
|
Ceinture jaune+ OSC Groupe : Membres Messages : 133 Inscrit : 10-April 05 Membre no 5450 |
Aucun des patchs ne semblent fonctionner ici. Je viens de trouver la solution (logique en plus).
Oscommerce fait ses arrondis avec la fonction tep_round qui est différente de la fonction round, de ce fait les arrondis sont complètement différents. Le problème se pose à partir de la 3eme décimale qui affecte l'arrondi sur la 2eme décimale. Le bon code est: $amount = tep_round($amount,2)*$this->_getCurrencyUnit($currency); Dites en moi des nouvelles |
|
28 Jul 2008, 21:45
Message
#11
|
|
Ceinture orange+ OSC Groupe : Membres Messages : 316 Inscrit : 26-December 05 Lieu : lille Membre no 8319 |
J'ai trouvé la solution sur le forum mais je ne sais plus ou
Ce qui est certain c'est que mon probleme de difference de centime est réglé depuis cette modif Dans le Module ATOS Remplacer Citation $amount = sprintf("%03d", $amount * $this->_getCurrencyUnit($currency)); Par ceci Citation $amount = (int)(round($amount,2) * $this->_getCurrencyUnit($currency)); Et Voila -------------------- Version osCommerce Online Merchant v2.2 RC1 W3C Valid FR
et Une ancienne creload 6 1.4 Super friendly admin menue ,Visible_countries_1.2b, define_mainpage_v1.3.3, inactive_user, HeaderTags_V_2.6.3, UltraPics_2_08, printable_catalog_3.6, AllProducts_V_4.7, Categories_Box_Bullet, scrolling_bestseller_with_images_1, Ultimate Html Emails v2.1, minimum order amount, Alternative Attribut 7, ultimate seo url 2.7, Quantity Price Breaks Per Product 1.3.5, Google XML Sitemap 1.3, Atos 2.3.0, TVA Intracommunautaire V5.1, Administration level account with categories 2.3.1fr, admin toolbar v4.1, |
|
29 Jul 2008, 11:01
Message
#12
|
|
Ceinture jaune+ OSC Groupe : Membres Messages : 133 Inscrit : 10-April 05 Membre no 5450 |
après un comparatif, les patchs
de gnidall, dero et la mienne fonctionnent. les autres ne donnent pas les bonnes valeurs. |
|
2 Feb 2012, 12:21
Message
#13
|
|
Ceinture blanche OSC Groupe : Membres Messages : 10 Inscrit : 26-January 10 Membre no 26954 |
Je ressors les vieux messages pour signaler que le problème est de nouveau présent sur ma boutique, il y a parfois 1 centime de différence (en faveur du client) sur certaines commandes.
Il y a longtemps j'avais ce code : Citation $amount = sprintf("%03d", $amount * $this->_getCurrencyUnit($currency)); Que j'avais remplacé par celui-ci : Citation $amount = sprintf("%03d", round($amount,2) * $this->_getCurrencyUnit($currency)); Et ça marchait correctement. Mais depuis un certain temps j'ai de nouveau cet écart de 1 centime entre la commande et le payement du client reçu en banque (sur certaines commandes, pas toutes). Je viens d'essayer les 2 autres codes notés dans ce post : Citation $amount = tep_round($amount,2)*$this->_getCurrencyUnit($currency); Citation $amount = (int)(round($amount,2) * $this->_getCurrencyUnit($currency)); Et ça ne marche pas mieux. Vous n'auriez pas pas vous aussi constaté ce problème de nouveau ? Et trouvé une solution ? |
|
17 Feb 2012, 16:49
Message
#14
|
|
Ceinture blanche OSC Groupe : Membres Messages : 8 Inscrit : 1-March 05 Lieu : LENS Membre no 4961 |
J'ai également ce problème d'arrondi avec un module ATOS 2.8
Voici la ligne en question sur cette version : Code $amount = sprintf('%03d', (int)(round($amount,2) * $this->_getCurrencyUnit($currency))); Cela semble pourtant correct. -------------------- osCommerce Online Merchant v2.2 RC2 W3C Valid FR + STSv4.6 + Ultimate SEO URLs 2.1d + CCGV trad + QTPRO 4.6
|
|
Version bas débit | Nous sommes le : 28th March 2024 - 17:51 |
Ce site est déclaré auprès de la commision Nationale de l'Informatique et des Libertés (déclaration n°: 1043896) |