TrogloGeek / prestashop-tggatos-module

TggAtos Module for Prestashop (1.4 to 1.7), ATOS SIPS 6xx payment gateway
61 stars 34 forks source link

Devise sans décimale, montant divisé par 100. Ex: 2.99€ au lieu de 299€ #35

Closed johan-las closed 9 years ago

johan-las commented 9 years ago

Bonjour,

Sur prestashop 1.5.6.1 module version 3.4.0 Cela fonctionne bien en décimale, mais lorsque l'on désactive, je me retrouve avec un montant divisé par 100...

Quel est le problème ? Comment résoudre ?

TrogloGeek commented 9 years ago

Bonsoir,

Ce module n'est effectivement pas prévu pour fonctionner lorsque la propriété decimals d'une devise comportant des décimales est à désactivée, car le module compte sur cette propriété pour savoir si cette devise comporte ou non des décimales.

SIPS nécessitant que les devises soient exprimées dans leur plus petite unité (donc en centimes pour les euros) puisque ce système (SIPS) n'accepte que des montants entiers, le module multiplie donc par 100 les montants exprimés dans une devise ayant la propriété decimals activée. Dans votre cas, parce que la propriété decimals des euros est désactivée, le module envoie le montant en euros, montant qui est ensuite interprété par SIPS comme étant en centimes d'euros.

Pour répondre à votre cas spécifique et exceptionnel, à savoir traiter une devise comportant des décimales comme n'en comportant pas, vous pouvez remplacer dans le code les 5 occurrences de $this->context->currency->decimals et $currency->decimals par true, vous devriez obtenir le comportement voulu, par contre il ne sera alors plus compatible avec des devises n'ayant réellement pas de décimales (comme le Yen japonnais par exemple) car les montants seraient alors multipliées par 100 lors du paiement.

johan-las commented 9 years ago

Bonjour,

Merci pour votre réponse, elle répond totalement à ma demande.