Jump to content

[bug] Paypal 3.6.8 ou 3.7 et paniers hors taxes


Recommended Posts

Bonjour,

 

J'ai quelques soucis avec le module Paypal Europe.

 

Ma boutique (en PS1.5.6.2) était pratiquement sur le point de passer en production mais ce module Paypal va visiblement me faire perdre encore quelques jours :wacko:

 

 

J'utilise la version 3.6.8 du module Paypal (car la nouvelle version 3.7, sortie hier, est apparemment affectée par un nouveau bug au niveau de la capture manuelle).

 

Ceci dit, quelque-soit la version, je viens seulement de constater que le module Paypal n'est pas compatible avec l'option d'affichage hors taxes de Prestashop !

 

En effet, les produits de mon panier étant affichés hors taxes, le calcul de la TVA dans PS se fait sur chaque quantité totale de produits, en additionnant donc les montants de TVA obtenus ligne par ligne.

 

Alors que le module Paypal, lui, il applique la TVA sur le produit unitaire et multiplie seulement ensuite par la quantité... tout comme le ferait PS en mode TTC en fait.

 

Je vous passe également les détails sur les arrondis, le calcul des coupons et des frais de port qui viennent également s'en mêler.

 

Conclusion, les méthodes de calcul étant complètement différentes, mes totaux à payer dans PS et sur Paypal ne sont pas les mêmes !

Sachant que mes produits peuvent être vendus par centaines et même par milliers avec des prix régulièrement à moins d'1€, je vous raconte pas les différences que ça peut engendrer :blink:

 

Néanmoins, après avoir un peu cherché, je constate que Paypal est bien capable de gérer des paniers hors taxes. Tous les prix peuvent en effet être envoyés hors taxes par le module et il suffit alors d'envoyer en paramètre supplémentaire le montant total de TVA à Paypal qui ajoute dans ce cas une ligne "Taxe" sur son propre résumé.

 

J'ai entrepris cette modification sur la version 3.6.8 et à priori ça marche très bien. Cependant je n'ai pour l'instant modifié que la portion de code qui envoie les paramètres à Paypal donc je n'ai pas testé une transaction complète.

 

Des calculs de prix interviennent à différents endroits dans le module et toutes les variables doivent sans doute être modifiées pour travailler hors taxes... j'ai pas encore investigué jusque là car à vrai dire ça ne m'enchante pas vraiment de devoir modifier le comportement du coeur d'un module de paiement !

 

 

J'en appelle donc au développeur de ce module, pour savoir si une compatibilité avec les paniers hors taxes peut être espérée en un temps record? Ca n'a apparemment rien de très compliqué, je dirais à vue de nez, une trentaine de variables à gérer ht ou ttc selon le cas.

 

Sinon, si la communauté a une autre idée pour avoir un module Paypal fiable et qui fonctionne hors taxes... une ancienne version ou que sais-je encore... je prends aussi :)

 

Merci d'avance.

Zebx

Edited by Zebx (see edit history)
Link to comment
Share on other sites

Salut,

 

Bof, y a pas vraiment beaucoup d'intérêt à ce que je sépare les points abordés, ça forme un peu un tout et explique un peu l'historique de ce que j'ai déjà essayé et fait jusqu'ici.

 

Le bug principal c'est la TVA, après je me moque d'utiliser la toute dernière version ou pas, donc 3.7 ou 3.6.8 ou autre chose ça m'est égal, du moment que tout fonctionne à l'arrivée ;)

 

Mais bon, je veux bien recentrer le sujet sur la TVA histoire d'être peut-être plus clair... mais ça sera pas beaucoup plus court...

 

Edit: bah, voilà j'ai dû gagner genre 3 lignes ^^

Edited by Zebx (see edit history)
Link to comment
Share on other sites

J'ai le même problème que toi et l'incompétence notoire de la société qui gère le module pour Paypal est vraiment abérante...

 

Voici leur réponse par mail lors d'un précédent post :

 

 

Bonjour ,

nous vous remercions de l’intérêt que vous portez à notre module et nous sommes désolés de vous répondre que maintenant.
Le problème existe en effet mais ne peut pas être résolu.
En effet le problème vient d'une différence de comportement entre PrestaShop et PayPal quand il s'agit de calculer les taux de tva.
PrestaShop utilise jusqu'à 6 chiffres après la virgule, tandis que PayPal n'en utilise que 2.
Après avoir vu directement avec PayPal, nous n'avons pas de moyen de modifier ce comportement.
 
Nous en avions discuté avec PayPal et il s'avère que PayPal et PrestaShop n'utilise pas les même moyens de paiements. Il n'y a aucun moyen pour nous de faire des modifications concernant ce problème. 
La solution serait que PrestaShop et PayPal s'accorde sur un moyen de paiement, cela semble cependant particulièrement compliqué. 

 

Mon problème était cité dans ce post.http://www.prestashop.com/forums/topic/306256-probleme-tva-sur-paypal/

 

Si tu veux rapproche toi de moi car pour mon soucis j'avance petit à petit et je pourrai peut-être t'aider

 

PS : J'aimerai bien connaitre la position de quelqu'un de la team Prestashop qui certifie quand même ce module sur leur page add-on

Edited by stevensf (see edit history)
Link to comment
Share on other sites

Salut,

 

Bizarre, j'avais pourtant déjà lu ton sujet, mais je ne sais plus pourquoi j'avais conclu que c'était pas le même cas de figure, alors qu'en fait on dirait bien que si :lol:

 

A vrai dire, de mon côté, j'ai continué à faire le correctif jusqu'au bout car je me doutais bien que ça se bousculerait pas au portillon pour nous corriger ça en un temps record... or ma boutique étant quasi finie, j'avais pas envie d'attendre...

 

A priori mon code fonctionne, du moins sur mes quelques tests effectués... mais vu la gestion catastrophique de Prestashop sur la tarification HT ou TTC, et ce de manière générale... je ne suis pas à l'abri d'une surprise :rolleyes:

 

Je peux t'envoyer mes différentes modifs... mais il faut savoir que dans mon cas, je ne gère que le mode d'affichage HT, donc mon module Paypal n'est plus compatible avec le mode TTC. (J'estime que PS est incapable de gérer les 2 modes simultanément de toute façon, donc c'est un choix contraint que j'ai fait dès le départ ^^).

 

Si jamais t'as besoin de jouer sur les 2 tableaux, c'est pas impossible (avec les bugs PS qui vont avec ^^), mais il faudra alors approfondir mon code pour n'appliquer mes modifs que lorsque c'est nécessaire (ajouter un test panier ht ou ttc sur chacune de mes modifs)...

 

La suite par MP... ;)

 

Edit: et oui en effet, la réponse du support que tu as obtenue me semble à côté de la plaque, dans la mesure ou comme je l'ai dit plus haut, Paypal est capable de gérer la TVA séparément... il n'y a donc, selon moi, pas de problème de compatibilité entre PS et PP ;)

Edited by Zebx (see edit history)
Link to comment
Share on other sites

Je suis entièrement d'accord avec toi. Je trouve l'attitude de la team Presta vraiment légère. Aucun message concernant notre discussion et surtout une communication vraiment en dessous de tout.


 


Un modo est capable de te reprendre sur la longueur de ton message qu'il juge trop long, par contre sur notre conversation et ma demande de prise de position... aucune réponse... le silence complet.


 


Au lieu de nous faire un back-office tout responsive (dont la plupart des gens normaux et gérant leur boutique se fichent eperdument), ils feraient effectivement mieux de corriger certains gros bugs et rajouter des fonctionnalités évidentes que beaucoup réclament (commande par multiple, prix à partir de...).


 


Mais bon la encore je suis certains de leur manque de professionnalisme et aucune réponse ne sera donnée la encore.


 


Pour ma part, je vais tenter de trouver une adresse Paypal en France et faire un courrier recommandé afin de leur dire ma façon de voir sur une société mandaté par eux (202 ecommerce) et le peu de support accordé aux utilisateurs. Car au final c'est Paypal qui va perdre des futurs utilisateurs et donc de l'argent. Faute à l'incompétence flagrante d'une société incapable de répondre à des choses évidentes.


 


PS : Je vais tester ta méthode cet aprem et te tenir au courant


Link to comment
Share on other sites

Bonjour, 

 

Le problème de différence de calcul de TVA provient d'une différence de nombre de chiffres après la virgule utilisé. 

En effet lorsque nous envoyons les informations de paiement à PayPal nous envoyons les informations suivantes (entre autre) : 

 

- Prix du produit taxe inclue

- Quantité

- Prix total du panier

 

Le problème est que toutes les informations envoyée à PayPal doivent contenir au maximum deux chiffres après la virgule ce qui induit des différences de calculs entre PayPal et PrestaShop.

 

Je m'explique, un produit à 0.99 HT sera considéré comme 1.188 TTC par PrestaShop mais comme 1.19 TTC par PayPal à cause de l'arrondi imposé de leur côté. 

 

Une fois toutes les informations envoyée PayPal passe certaines règles de validations dont : 

 

Prix du produit * Quantité = Prix total du panier 

 

Si nous essayons de tricher sur le prix total du panier en indiquant le vrai prix, la transaction est donc refusée. 

De même si nous essayons d'envoyer des valeurs avec plus de chiffres après la virgule PayPal refuse la transaction. 

 

Après en avoir discuté avec l'équipe de PayPal, nous en avions conclu que pour que le seul moyen pour que les transactions de ce type fonctionne serait que PayPal ou PrestaShop modifie sa méthode de paiement. 

Si vous avez cependant un autre avis sur la question qui pourrait nous permettre de modifier ce comportement, nous sommes tout à fait ouvert à échanger sur ce point. 

 

Cordialement

Thoma

Link to comment
Share on other sites

Merci pour ton gentil message Steven. Je regrette ton sentiment sur l'équipe PrestaShop, qui travaille pourtant dans l'unique but de te satisfaire en tant qu'utilisateur. Parfois, en échange de notre logiciel gratuit et open-source, on se prend quelques baffes dans la figure sous la forme de propos dégradants sur un écran d'ordinateur, mais bon, ce n'est pas bien grave on essaye de lire entre les lignes pour comprendre les problèmes remontés (c'est toujours plus efficace sans insultes et autres remarques polluantes, tu sais...)

 

Ça faisait 3 jours que Samyha remontait le topic de Zebx à 202ecommerce et PayPal pour pouvoir vous aider, je suis content que Thoma ait finalement pu apporter une réponse et j'espère débloquer votre situation.

 

Bonne journée à tous.

Link to comment
Share on other sites

Bonjour Thoma,

 

Merci d'être venu réagir sur le forum.

 

Cette réponse est la même qui a été citée plus haut par Steven, donc mon autre avis sur la question, ben je l'ai déjà donné :D

 

De ce que j'ai pu voir rapidement sur Paypal, il est possible d'envoyer le montant total de TVA séparément (via PAYMENTREQUEST_0_TAXAMT).

 

Dans ces conditions, tous les prix par ligne peuvent, et même doivent, être envoyés hors taxes à Paypal.

 

Ce qui d'après moi résout le problème.

 

Le nombre de décimal n'a donc plus aucune incidence, puisque dans les 2 cas on peut fonctionner à 2 chiffres après la virgule.

 

Je peux t'envoyer mes modifs par MP, je ne les poste pas ici, car c'est une modif qui fonctionne pour ma configuration exclusivement et qui ne gère donc pas tous les cas de figure possibles (type paniers ht ou ttc sur la même boutique, frais de port avec ou sans tva, emballages cadeaux, etc)

 

Après, comme je l'ai déjà dit aussi, je n'ai fait que quelques tests... et je ne suis pas non plus un spécialiste Paypal... mais cela semble fonctionner sans pépin (tests effectués en sandbox sur paiements et remboursements).

 

Bonne journée,

Zebx

Link to comment
Share on other sites

Effectivement je suis vraiment désolé d'en arriver la. Mais parfois malheureusement il faut dire ce qu'on pense pour faire bouger les choses.

 

Ce que je regrette c'est que personne (à part 2/3 sur le forum) essaye de trouver une solution. Lors d'un appel téléphonique à 202 ecommerce j'ai proposé de travailler ensemble à la résolution du probleme. Ce qui m'a dérangé c'est leur manque de volonté et leur réponse qui était vraiment à coté de la plaque. Et la encore je ne comprend pas leur réponse. Me parler de virgule alors que rien qu'u début le mode de calcul est différent.

 

Lorsque Prestahsop fait logiquement la formule :

prix unitaire HT * quantié = TOTAL : auquel on ajoute ensuite la TVA (ce qui est logique)

 

Le module Paypal calcule de cette manière :

(prix unitaire HT + TVA) * quantité

 

exemple du coté de Prestashop :

0.63 * 296 = 186.48 + tva 20% = 223.776 que Prestashop arrondi à 223.78

 

Exemple du coté du module Paypal :

0.63 * 1.2 = 0.756 * 296 = 224,96

 

Donc effectivement y'a une erreur. Et si effectivement le problème de Paypal est d'arrondir à 2 chiffres après la virgule il y'a certainement une solution qui est soit d'envoyer les 296 articles comme 1 seul article (ce que j'ai fait avec un problème en retour sur la validation du Paiement coté Prestashop) soit comme le dis Zebx de travailler tout en HT et d'envoyer tout nos montants à Paypal directement  (TVA inclus)

 

Ce qu'on demande Zebx et moi même c'est pas de dire que c'est impossible mais qu'on travaille tous ensemble pour trouver une solution car je suis certain qu'elle existe.

 

Donc désolé de m'être emporté mais parfois il faut savoir se faire entendre. Surtout que lorsque j'ai proposé ce module à mon client je ne me suis posé aucune question vu qu'il était certifié par la team Prestashop.

 

Dernière chose, logiciel gratuit (je parle de Prestashop) mais à ce que je sache, la société derrière n'est pas philanthrope et gagne de l'argent sur la vente des modules et autre (ce que je ne critique en aucun cas car tout le monde doit vivre). Mais faut arrêter parfois de faire le pauvre chien battu et écouter les critiques "constructive".

 

Pour finir sur une note positive, je remercie quand même la Team Pretashop qui nous founi un travail sympas avec ce CMS mais qui, je le redis, devrais parfois être plus à l'écoute de ses utilisateurs car c'est eux qui font et feront le succès de votre solution.

Edited by stevensf (see edit history)
Link to comment
Share on other sites

Et qu'on me dise pas que le fait de calculer avec 6 virgules à la fin résoudra le problème sur des grosses quantités.

 

Dans l'absolu, si, ça pourrait, mais avec quelques nuances...

 

De ce que j'ai pu constater, il me semble que PS ne calcule pas à 6 décimales dans le panier, mais bien à 2.

 

Donc si sur un panier HT côté PS on a 2 décimales, pour avoir la même précision avec des prix TTC côté Paypal, il nous en faudrait 2 de plus, soit min 4 décimales. Or il semble que Paypal ne peut gérer que 2 décimales dans les totaux qu'il refait de son côté.

 

L'erreur ici en mon sens est donc de vouloir s'obstiner à travailler TTC côté Paypal alors que de toute évidence cela ne peut pas fonctionner.

Link to comment
Share on other sites

Bonjour à tous, 

 

@stevensf : Le problème vient du fait que les calculs ne sont pas fait dans le module PayPal, mais directement chez PayPal, c'est à dire que nous n'avons pas la main dessus, et que à cause des restrictions de l'API PayPal nous ne pouvons pas envoyer les mêmes donnée à PayPal que celle utilisée dans les calculs de PrestaShop. 

 

@Zebx

C'est avec plaisir que je regarderais les modifications de code que tu proposes.

Je viens d'en reparler avec l'équipe de PayPal. 

Nous avons effectivement penser à l'histoire de AMT_TAX, ceci dit il semblerait que cela coince en effet, voici ce que nous enverrions : 

 

Quantité : 250

 

Prix du produit HT : 0,99

Prix des taxes du produit : 0,20

 

Prix total HT : 0,99 * 250 = 247,5

Prix total des taxes : 0,20 * 250 = 50

 

On aura donc un panier à 247,5 + 50 = 297,5

 

Tandis que sur PrestaShop : 

 

Quantité : 250

 

Prix du produit HT : 0,99

Prix des taxes du produit : 0,198

 

Prix total HT : 0,99 * 250 = 247,5

Prix total des taxes : 0,198 * 250 = 49,5

 

Prix total du panier : 297

 

Est ce que cela te paraît cohérent ? 

Link to comment
Share on other sites

Donc désolé de m'être emporté mais parfois il faut savoir se faire entendre.

On t'entendait avant que tu t'emportes :) J'ai répondu suite à ton message déplacé, mais la demande à PayPal/202ecommerce était déjà partie.

 

Pour finir sur une note positive, je remercie quand même la Team Pretashop qui nous founi un travail sympas avec ce CMS mais qui, je le redis, devrais parfois être plus à l'écoute de ses utilisateurs car c'est eux qui font et feront le succès de votre solution.

Nous sommes complètement à l'écoute. C'est même plutôt exactement notre job, à Samyha, Ben et moi-même. Ça ne fait pas longtemps que tu es régulièrement présent sur ce forum communautaire, mais sache que nos adresses email, Skype et autres modes de contacts sont complètement publics pour nous remonter tout problème ou inquiétude de la communauté qui nous auraient échappés :)

Link to comment
Share on other sites

Hehe, vu comme ça non :lol:

 

Mais pourquoi vouloir envoyer la taxe unitaire de chaque produit à Paypal ?

 

Sauf erreur de ma part, le TAXAMT n'est pas à gérer par item mais correspond à la taxe totale du panier.

 

De ce qu'il me semble Paypal ne recalcule pas la taxe par produit... sinon il faudrait également lui envoyer le % de taxe à appliquer par item...

 

Selon moi cela fonctionne ainsi :

 

- Paypal doit recevoir la quantité et le prix unitaire (mais Paypal se moque de savoir si on travaille HT ou TTC, pour Paypal c'est un montant et une quantité)

- Paypal effectue son total par ligne sur base de ces infos (à 2 décimales mais jusque là tout va bien)

- Ensuite, si on bosse avec un panier HT, on envoie en plus à Paypal un montant total de Taxes à ajouter (celui qui vient de PS, à 2 décimales toujours)

 

Au final, le grand total reste toujours correct entre PS et PP, puisque ce n'est plus qu'une addition et qu'on a supprimé de l'équation toute la problématique des taxes provenant des opérations de multiplications quantitatives...

 

Simple, et efficace... peut-être même trop :D

Edited by Zebx (see edit history)
Link to comment
Share on other sites

Un exemple vaut probablement mieux qu'un long discours...

 

Voici à quoi ressemble le résumé Paypal après mes modifs :

 

post-250040-0-53877800-1400686638_thumb.jpg

 

NB: TVA belge 21% ;)

 

Tous les montants sont hors taxes (à part le grand total évidemment ^^)

 

A aucun moment je ne gère de taxe par produit... d'ailleurs on n'a aucun détail sur la taxe... on sait juste que y'en a pour 33.44€ en tout.

  • Like 1
Link to comment
Share on other sites

La solution que tu proposes donc, serait la suivante : 

 

Nous avons effectivement penser à l'histoire de AMT_TAX, ceci dit il semblerait que cela coince en effet, voici ce que nous enverrions : 

 

Quantité : 250

Prix du produit HT : 0,99

Prix des taxes du produit : 0,20

 

Prix total HT : 0,99 * 250 = 247,5

Prix total des taxes : 49,5

 

On aura donc un panier à 247,5 + 49,5 = 297

 

Il faut que je valide le comportement avec PayPal. vérifier que cela marchera dans tous les cas et voir si il n'y a pas des problèmes légaux. 

Link to comment
Share on other sites

Problèmes légaux, je ne vois pas trop pourquoi il y en aurait... je dirais même que c'est mieux car à la limite c'est la version TTC qui devrait être discutable puisqu'elle ne précise pas le montant de taxes que le client paye... or sur une facture je pense que c'est obligatoire, du moins en droit belge :D

De la à savoir si le mail Paypal doit être considéré comme une facture ou un ticket de caisse, c'est un autre débat...

 

Pour le reste, c'est à vérifier en effet...

Link to comment
Share on other sites

heureux de voir que le sujets avance enfin :). Je suis désolé car je particeperai bien à la discussion mais j'ai eu une journée bien remplie (trop rempli). J'essayerai de tester tout ça ce soir si j'ai le courage ou demain matin.

 

Ce que je peux dire par contre, c'est pourquoi vouloir envoyer un détail de la commande à Paypal. Lorsque je fais un achat avec ma CB sur un site utilisant paybox (j'ai utilisé le module de Pretashop et celui fourni par la Banque Populaire), j'envoi un montant total à payer. La banque se moque un peu de savoir si c'est HT ou TTC et si il y'a 250 articles X ou 3 articles Y (enfin à ce que je sache), donc pourquoi pas faire de même avec Paypal ?

Edited by stevensf (see edit history)
Link to comment
Share on other sites

Si aucune autre solution n'est validée, c'est probablement la façon la plus simple de faire en effet.

 

1 seul produit envoyé chez Paypal style "commande référence abcxyz" d'un montant de x.xx€ (TTC), correspondant au total à payer de Prestashop.

 

Là au moins on est sûr de pas se louper d'1 centime :D

 

C'est moins classe, peut être moins pro, mais ce serait toujours mieux que de laisser le module en l'état, qui est actuellement inutilisable par certains vendeurs.

Link to comment
Share on other sites

Bonjour à tous,

 

ce que je trouve inadmissible, c'est la façon dont PayPal travaille:

 

ils récupèrent toutes ces informations pour capturer le paiement

 

  • Nom et prénom de nos clients
  • Adresse email de nos clients
  • Adresse de livraison de nos clients
  • Adresse de facturation de nos clients
  • Numéros de téléphone de nos clients
  • Contenu du panier en détail avec références, nom des produits ect...
  • TVA + Numéro de TVA s'il y en a un

Je pense, et je ne suis pas le seul, que PayPal outrepasse ses droits en terme de capture de données.

 

Ce n'est qu'une plateforme de paiement, nous devons en tant que commerçants pouvoir garantir l'anomymat de nos clients et le respect de leur vie privée.

 

Pourquoi une plateforme de paiement récupère le panier entier et l'adresse de livraison du client ?

Pourquoi la version e-commerce ne récupère-t-elle pas simplement la référence du panier client??

 

C'est notre boulot de vendre à nos clients, de conserver leurs données, et de ne pas les exploiter ensuite.

 

PayPal ne respecte plus les règles et 202e-commerce participe à notre insu à la collecte des données de vente de toutes nos boutiques !! 

 

Les plateformes de paiement comme Ogone ou PayZen n'ont pas besoin de capturer toutes ces données, juste la référence du panier, alors pourquoi PayPal le fait-il? et surtout dans quel but et ou vont nos données capturées?

 

Antoine.W

Edited by AntoineWrt (see edit history)
Link to comment
Share on other sites

Bonjour,

 

J'ai failli aborder ce point brièvement lors de mon post précédent et je me suis ravisé histoire de pas partir en hors sujet.

 

Je ne vais donc pas rentrer dans le débat sur Paypal et la protection des données, il y a d'ailleurs déjà pas mal d'articles à ce sujet sur le net suite aux modifications des CGU de fin 2013.

 

Néanmoins, dire que 202ecommerce "participe à notre insu" à la collecte des données...

Certes il y participe, par la force des choses puisqu'il s'agit d'un module pour pouvoir utiliser Paypal, mais "à notre insu", faut pas pousser, on le voit bien que les données détaillées sont envoyées ;)

 

Après peut-être que le module pourrait en effet donner le choix aux vendeurs :

- envoyer le récapitulatif panier détaillé sur la page de paiement Paypal

- envoyer uniquement la référence et le montant total de la commande sur la page de paiement Paypal

 

Cette idée mériterait peut-être un nouveau sujet pour en débattre... mais selon les accords passés entre Prestashop, 202 et Paypal, pas sûr que cela puisse jamais voir le jour...

Link to comment
Share on other sites

Effectivement on risque de partir hors sujet. Apres le mieux serait comme tu dis de proposer l'une ou l'autre des solutions et surtout de résoudre ce problème du HT.

 

Avec mon système donné dans un précédent post (à savoir ne pas envoyer à Paypal 250 articles à tel prix, mais lui donner un global par article) on est un peu dans cette voie.

 

Par contre il y'a cette foutue erreur lors du retour sur la boutique avec la fonction 'validateOrder '

Link to comment
Share on other sites

  • 2 months later...

Hello,

 

Bon ben vu que j'ai pas eu de nouvelles et qu'y a donc pas de solution officielle depuis tout ce temps (ce qui n'est pas très sérieux au passage, mais bon bref...), je poste mes modifs perso ici pour ceux que ça pourrait intéresser ;)

 

Donc pour travailler en HT et envoyer le montant global de TVA séparément (au lieu d'envoyer la TVA ligne par ligne), il y a 2 fichiers à modifier dont voici le détail :

 

https://github.com/Zebx/Paypal3.6.8/commit/58cde2bb6752c819619713c65c9deb1970c34f83

 

Quelques précisions :

 

Version du module Paypal utilisé : 3.6.8

Mode Paypal Intégral, Paypal Express désactivé

 

Comme c'est une config perso, je n'ai pas géré tous les cas de figure, donc ça fonctionne pour le contexte suivant :

 

- paniers HT exclusivement

- TVA toujours appliquée sur le transport

- pas d'emballages cadeaux

 

A vous de vous en inspirer et d'adapter le code en conséquence si le contexte ci-dessus ne vous convient pas.

 

Exemple de résultat à obtenir :

post-250040-0-25841800-1407521786_thumb.jpg

 

A+

Zebx

Link to comment
Share on other sites

Excellent! Merci Zebx

 

Alors, j'ai testé sur ma config en multiboutique:

1ère boutique :

Module Paypal 3.7.2

paniers HT exclusivement
TVA toujours appliquée sur le transport
pas d'emballages cadeaux
 

2ème boutique :

Module Paypal 3.7.2

paniers TTC exclusivement
TVA toujours appliquée sur le transport
pas d'emballages cadeaux
 
Tout fonctionne parfaitement.
Enfin une solution qui marche, dommage le silence de 202 et de Prestashop sur le sujet.
Link to comment
Share on other sites

Merci pour le retour positif :)

 

Et en effet c'est dommage, voire surprenant, de ne pas considérer ce bug comme un bug prioritaire.

 

L'affichage des prix HT est quand-même une fonctionnalité de base de Prestashop, indispensable à tout vendeur B2B... et se retrouver avec un module Paypal incompatible, et donc inutilisable, est tout simplement une absurdité.

 

Je ne comprends d'ailleurs même pas comment ça se fait qu'il n'y ait pas plus de gens qui se plaignent de ce bug... faut croire que peu de personnes utilisent PS en B2B (faut dire que PS est pas vraiment super au point à ce niveau)... ou alors ils zappent tout simplement Paypal (ce qui d'après moi fait sans doute perdre des clients).

 

Enfin bref, en cas de pépin n'hésite pas à revenir ici, car si jamais tu constates un couac ça m'intéresse de le savoir aussi évidemment ^_^

  • Like 1
Link to comment
Share on other sites

Salut Zebx,

 

Ca marche très bien ! Merci pour ta contribution. Il était temps... à l'instar de PS qui semble ne pas se préoccuper des boutiques B2B ne fonctionnant pas avec paypal. Nous sommes une agence web et des clients B2B, nous en avons plein, il y a donc de nombreux users B2B.

Et quand on sait que le module paypal est certifié PS et téléchargeable sur addons sans précision pour le problème avec le HT / B2B, ça justifie tout à fait le pétage de câble des utilisateurs (ou agences web) et ça pousse à s’interroger sur PS.

Ce problème avec Paypal ne date pas d'hier... et la remontée des utilisateurs non plus... Une boutique PS avec un paiement inutilisable, c'est grave ! ça devrait être la priorité numéro 1 ! 

 

Il serait plus correct de la part de la PS team de nous expliquer une telle aberration sans démago plutôt que de réagir sur la forme car Zebx a trouvé une solution en 3 coups de cuillère à pot là ou PS / 202 commerce nous explique que c'est trop compliqué voire impossible et laisse traîner le problème depuis des mois.

Zebx VS Prestashop : Selon vous, qui a le plus de ressources, d'expertise et de légitimité à corriger un bug fonctionnel aussi grave ?

 

En développant des boutiques sur PS, les agences web se portent garants de votre sérieux. Une erreur aussi grave et persistante nous discrédite auprès de nos clients et vous discrédite. L'intérêt pour nous d'utiliser un CMS est de se préoccuper seulement de la personnalisation, du sur mesure et non des basiques du e-commerce (Le paiement paypal est-il un basique en 2014 ?). Nous passons énormément de temps à débugger des basiques sur vos releases. Ce serait moins énervant si des remontées aussi importantes généraient une réaction sur la release suivante ou sur le module concerné.

 

On pourrait me dire que je suis gonflé car le module Paypal est gratuit, ainsi que PS. Je mesure tout à fait la notion de l'open source mais je mesure aussi le fait que beaucoup de modules que nous débuggons sont payants sur addons... vous en êtes les garants / vendeurs. Et nous les acheteurs. Dès lors, vous êtes une entreprise et nous des clients ce qui nous donne le droit de réagir sur votre fonctionnement général.

 

En tant qu'agence, nous ne sommes pas rassurés en utilisant PS. Peut être sommes-nous trop exigeants. J'espère que tout cela va évoluer pour que PS ait un bel avenir et que nous ayons plaisir à l'utiliser et y contribuer.

 

Encore merci à toi Zebx.

Link to comment
Share on other sites

Merci aussi pour ce feedback :)

 

Perso je suis juste "un webmarchand" avec, je dirais, quelques bonnes bases en développement.

 

Il m'a fallu près de 6 mois pour mettre en route ma boutique Prestashop, là où j'espérais pouvoir le faire en 2 à 3 fois moins de temps.

 

Au final je dois dire que j'ai passé plus de temps à tester et débugger toutes les fonctionnalités, qu'à créer le catalogue et configurer la boutique.

 

Ce sont des dizaines et des dizaines de bugs que j'ai dû corriger un peu partout dans Prestashop, ainsi que quelques pense-bêtes que j'ai dû me coller dans un coin afin de me rappeler de faire gaffe à telle ou telle fonctionnalité bugée et éventuellement quelques mini modes d'emploi pour m'en servir sans casse.

 

Aujourd'hui, ma boutique est en ligne depuis un peu plus d'un mois, et dès que je dois faire une action qui sort un peu de l'ordinaire, même minime, je prends un maximum de précautions, donc je passe d'abord par un backup (db et/ou fichiers) + tests en local.

 

Donc en effet, y a de quoi ne pas être franchement rassuré... et j'imagine facilement que pour une agence c'est encore pire puisqu'elle va servir de fusible entre le vendeur final et Prestashop.

 

D'un autre côté Prestashop reste une solution très séduisante, complète, facile à prendre en main et à personnaliser... et globalement je suis pas certain que l'herbe soit plus verte ailleurs.

 

Ce serait à refaire, je pense que je referais donc le même choix, mais je regrette en effet aussi le manque de réactivité sur certains bugs pourtant flagrants (Paypal parmi d'autres).

 

Bonne journée,

Zebx

Link to comment
Share on other sites

  • 1 year later...

Bonjour,

 

Je rencontre le même problème que vous sur ma boutique Prestashop en v1.6.0.9 et avec le module Paypal en v3.10.2.

 

Les tarifs sont affichés HT pour tous les clients et je me retrouve avec des erreurs de montant (centimes) entre la commande en back-office Prestashop et le montant Paypal.

 

J'ai essayé d'appliquer votre patch, mais visiblement il ne fonctionne pas sur la dernière version de Paypal.

 

Avez-vous une solution pour faire fonctionner le module Paypal 3.10.2 et Prestashop en mode HT ?

 

Merci.

Link to comment
Share on other sites

Bonjour,

 

Désolé, je suis resté avec la version 3.6.8 donc j'ai pas de solution toute faite pour une version plus récente du module.

 

Cela dit, le principe de mes corrections est toujours valable et doit toujours fonctionner, donc avec un minimum d'attention et de connaissances en code, ces corrections devraient encore être applicables sans gros bouleversements.

 

Si quelqu'un l'a fait sur une version récente de Paypal et qu'il peut le confirmer ici, ce serait le bienvenu...

 

Sinon, vous pouvez toujours essayer en installant Paypal dans une version plus ancienne...

 

Zebx

Link to comment
Share on other sites

  • 2 months later...

Bonjour,

victime du meme problème avec prestashop 1.6.0.11 et module paypal 3.10.2 ,

j'ai tenté de modifier les 2 fichier mais sans succès.

Par contre pour avoir le meme total sur le panier prestashop et paypal final il faut: 

- Dans les paramètres généraux de prestashop

- modifier le type d'arrondi de total a "pour chaque article"

 

Le total sera donc le meme sur prestashop et paypal MAIS il sera faussé de quelques centimes!

Pensez vous à une autre solution? merci

Link to comment
Share on other sites

  • 4 weeks later...

Bonjour,

Great job, Merci un million.
Il semble fonctionner avec paypal 3.10.2, un seul problème, l'expédition est toujours chargée.
Je dois dans ma boutique livraison gratuite si l'ordre est plus de 200 €, mais l'expédition est toujours chargée.
Toute idée de comment résoudre?
 
Je ne parle pas français, ceci est une traduction de Google. Excuse.
Link to comment
Share on other sites

Bonjour,

 

Les frais de port sont comptés dans le total Paypal mais pas dans le total Prestashop ? Ou ils sont comptés dans les 2 cas ?

 

A mon avis, cela n'est pas lié aux modifications du module Paypal que j'ai données plus haut.

 

C'est sans doute un "simple" problème de configuration...

Edited by Zebx (see edit history)
Link to comment
Share on other sites

Pour ma part, le problème vient de la façon avec laquelle le montant TTC est calculé.

La solution a été pour moi de:

 supprimer l’envoi du détail du panier, et de ne garder que le montant total TTC tel qu’il est calculé par Prestashop.


Pour cela, dans l’arborescence de Prestashop, dans le fichier « modules/paypal/express_checkout/process.php », aux alentours de la ligne 244 :

    Remplacez la ligne :

  • $this->setProductsList($fields, $index, $total, $taxes);


        Par :

                   
    $cart = $this->context->cart;
    
                    $total = $cart->getOrderTotal(true, 1);
    
                    $index = $cart->nbProducts();

    Éventuellement, si vous souhaitez toujours afficher le total sur la page de paiement, ajoutez à la suite :
                  
     $fields['L_PAYMENTREQUEST_0_NAME0'] = $this->l('Total products');
    
                    $fields['L_PAYMENTREQUEST_0_AMT0'] = $total;
    
                    $fields['L_PAYMENTREQUEST_0_QTY0'] = 1;
    $index = 0;
Link to comment
Share on other sites

 

Merci de répondre.
Les frais de transport sont pris en compte dans paypal seulement, prestashop total ne comprend pas les frais d'expédition.

 

 

Bizarre, je ne vois pas en quoi mes modifications auraient un impact là-dessus.

 

17.50€ de transport dans Paypal, c'est un montant HTVA ou TVAC ?

 

Si tu utilises le module Paypal original (sans mes modifications), le transport est-il gratuit dans Paypal ?

 

Edit : Peux-tu prendre un screenshot en montrant le détail du panier sur Paypal stp. (clique sur la flèche à droite du montant)

Edited by Zebx (see edit history)
Link to comment
Share on other sites

Vous avez raison, les changements fonctionnent parfaitement, qui est mon erreur et n'a rien à voir avec le transport.

Je dois une erreur de calcul avec l'arrondissement dans le panier, et non comme sulucionar. Vous pouvez le voir dans l'image ci-dessus de l'écran, le rabais doit toujours être de 50%, mais toujours arrondi 44% et 46%.

Link to comment
Share on other sites

Ah oui en effet, il y a déjà une erreur dans le panier...

 

Le total des 3 lignes fait 395€ et pas 377.50€, donc l'erreur de 17.50€ vient de là.

 

Vous avez peut-être modifié le type d'arrondi de "total" à "pour chaque article" dans les paramètres généraux, comme masquelier.camille l'a suggéré ci-dessus ?

 

C'est une fonctionnalité que je n'ai pas dans PS 1.5.6.2 donc il ne faut sans doute pas l'activer si on modifie Paypal comme je l'ai fait.

Link to comment
Share on other sites

Bonjour,

 

Paypal ne peut en effet pas gérer plus de 2 décimales.

 

Mais vous êtes sûr qu'il n'est pas possible de modifier le type d'arrondi dans PS 1.6.0.6 ? (comme sur la photo ci-dessous de la version 1.6.1.3)

 

Car il est clair que les prix de vos articles sont arrondis à l'unité, au lieu d'arrondir chaque ligne...

 

EDIT :

Bon ben je viens de jeter un oeil sur un vieux PS 1.6.0.9 que j'avais installé à l'époque pour des tests, et en effet cette fonction n'existait pas encore... et l'arrondi après les 50% se fait bien sur l'article et pas sur le total ligne...

 

Je regarde un peu si ça peut se dépanner facilement... et je vous tiens au courant...

post-250040-0-47304900-1454691106_thumb.jpg

Edited by Zebx (see edit history)
Link to comment
Share on other sites

Pfuuu, alors après une petite analyse, voici mes conclusions...

Tout d'abord il faut savoir que :

- Paypal ne peut gérer aucun montant avec plus de 2 décimales
- Si on souhaite afficher le détail du panier sur Paypal, Paypal doit absolument connaître chaque quantité d'article et chaque prix unitaire (toujours à 2 décimales max) pour qu'il refasse un calcul total de son côté (c'est d'ailleurs ce calcul qui est la source du problème avec le module tel quel).

Conclusion, 3 possibilités :

1) Si vous souhaitez absolument travailler avec 3 ou 4 décimales, vous ne pourrez pas afficher le détail panier sur Paypal

La modification proposée par camille ci-dessus est dans ce cas une bonne piste : https://www.prestashop.com/forums/topic/331068-bug-paypal-368-ou-37-et-paniers-hors-taxes/page-2?do=findComment&comment=2245393

Mais il faut quand-même absolument que Paypal reçoivent les éléments suivants avec 2 décimales :

- le total des produits
- le total des bons de réduction éventuels
- les frais de transport
- les frais d'emballage
- le total à payer

Cela implique donc, soit de modifier le coeur de Prestashop (pas nécessairement simple), soit d'utiliser Prestashop en version 1.6.0.14 ou supérieur et de régler le type d'arrondis sur "arrondir sur chaque ligne" ou "arrondir le total" (je n'ai pas testé mais à priori ça devrait fonctionner si PS ne bug pas dans ces arrondis).


2) Vous optez pour travailler à 2 décimales et vous acceptez l'arrondi par article qui est d'office appliqué.

Un article à 0.03€ -50% = 0.015€, ce qui donnera un prix net arrondi de 0.02€ et une remise affichée de -33% (on pourrait éventuellement supprimer l'affichage de cette remise dans le panier si on la trouve gênante).

Dans ce cas de figure, ma méthode (avec détail du panier sur Paypal) ou la méthode de camille (sans détail panier) devraient toutes les 2 fonctionner.


3) Vous optez pour travailler à 2 décimales mais vous souhaitez absolument que le client bénéficie d'une remise réelle de 50%.

Dans ce cas il est possible de travailler avec les "règles panier automatiques" (= un bon de réduction sans code).

La remise de 50% est alors déduite de manière globale via un bon de réduction.

Exemple :

1000 articles A à 0.13€ = 130.00€
1000 articles B à 0.09€ = 90.00€
--------------------------------------------
Total produits : 220.00€
Remise -50% = -110.00€
Total HT : 110.00€
Taxes (21%) : 23.10€
A payer : 133.10€

C'est la méthode que j'utilise personnellement ;)

Dans ce cas de figure, les 2 correctifs doivent fonctionner également : mes modifications pour un affichage du détail du panier sur Paypal, ou celles de camille pour envoyer juste le montant total sans détails.


Bonne chance !
Zebx



 

Link to comment
Share on other sites

Bonjour,

Je vais essayer une solution à l'option 1 proposée par Camille. Les options 2 et 3, ne pas appliquer dans mon cas, puisque les groupes de clients bénéficient d'une réduction qui apparaît sur l'onglet du produit et également dans le panier (des captures ci-joint).
Merci beaucoup pour l'aide.

post-334519-0-12929500-1454917039_thumb.jpg

post-334519-0-44121400-1454917040_thumb.jpg

Link to comment
Share on other sites

 

 

 

  • 
    

     

                   

    
    
    Éventuellement, si vous souhaitez toujours afficher le total sur la page de paiement, ajoutez à la suite :

                  

     $fields['L_PAYMENTREQUEST_0_NAME0'] = $this->l('Total products');
    
                    $fields['L_PAYMENTREQUEST_0_AMT0'] = $total;
    
                    $fields['L_PAYMENTREQUEST_0_QTY0'] = 1;
    $index = 0;

 

Je ne comprends pas cette partie, où vous avez à ajouter?

Merci.

Link to comment
Share on other sites

Au même endroit, à la suite des 3 lignes précédentes...

 

En résumé et en plus clair :

 

Il faut remplacer ceci :

$this->setProductsList($fields, $index, $total, $taxes);

Par ceci :

$cart = $this->context->cart;
$total = $cart->getOrderTotal(true, 1);
$index = $cart->nbProducts();

$fields['L_PAYMENTREQUEST_0_NAME0'] = $this->l('Total products');
$fields['L_PAYMENTREQUEST_0_AMT0'] = $total;
$fields['L_PAYMENTREQUEST_0_QTY0'] = 1;
$index = 0;
Link to comment
Share on other sites

 

Au même endroit, à la suite des 3 lignes précédentes...

 

En résumé et en plus clair :

 

Il faut remplacer ceci :

$this->setProductsList($fields, $index, $total, $taxes);

Par ceci :

$cart = $this->context->cart;
$total = $cart->getOrderTotal(true, 1);
$index = $cart->nbProducts();

$fields['L_PAYMENTREQUEST_0_NAME0'] = $this->l('Total products');
$fields['L_PAYMENTREQUEST_0_AMT0'] = $total;
$fields['L_PAYMENTREQUEST_0_QTY0'] = 1;
$index = 0;

Voilà ce que je pensais, mais échoue.

post-334519-0-21725400-1455002040_thumb.jpg

Link to comment
Share on other sites

Ces valeurs sont utilisées dans Paypal 3.10.2 et sont définies dans la fonction setProductsList que ce bout de code est censé remplacer.

 

Donc ça devrait fonctionner et votre erreur vient sans doute d'ailleurs.

 

Avez-vous essayé avec une opération simple ?

 

Genre : 1 seule produit, sans remise, avec un total à payer rond, exemple 100€ htva.

Link to comment
Share on other sites

  • 1 month later...

 

Pour ma part, le problème vient de la façon avec laquelle le montant TTC est calculé.

 

La solution a été pour moi de:

 

 supprimer l’envoi du détail du panier, et de ne garder que le montant total TTC tel qu’il est calculé par Prestashop.

 

 

Pour cela, dans l’arborescence de Prestashop, dans le fichier « modules/paypal/express_checkout/process.php », aux alentours de la ligne 244 :

 

    Remplacez la ligne :

  • $this->setProductsList($fields, $index, $total, $taxes);
        Par :

     

                   

    $cart = $this->context->cart;
    
                    $total = $cart->getOrderTotal(true, 1);
    
                    $index = $cart->nbProducts();
    Éventuellement, si vous souhaitez toujours afficher le total sur la page de paiement, ajoutez à la suite :

                  

     $fields['L_PAYMENTREQUEST_0_NAME0'] = $this->l('Total products');
    
                    $fields['L_PAYMENTREQUEST_0_AMT0'] = $total;
    
                    $fields['L_PAYMENTREQUEST_0_QTY0'] = 1;
    $index = 0;

 

 

Cette modif a l'air top, tout fonctionne bien sauf hélas le retour vers Prestashop, ça passe en erreur de paiement avec le message joint dans la commande " Price paid on paypal is not the same that on PrestaShop "

 

J'ai vérifié dans ps_orders et ps_paypal_order, la valeur est bien la même et ps_paypal_orders indique bien completed.

 

Une idée pour cela ? J'espère qu'on y arrivera car cette modification a l'air vraiment intéressante.

Edited by KevinNash (see edit history)
Link to comment
Share on other sites

Hello perso sous 1.5.4.1 j'ai résolu le souci en faisant calculer par prestashop comme Paypal le fait, ça fonctionne :)

 

Modif très simple une fois qu'on l'a trouvée dans classes/cart.php remplacer :

$total_price = Tools::ps_round($total_price + $total_ecotax, 2);

par :

$total_price = Tools::ps_round($product['price_wt'] * (int)$product['cart_quantity'], 2);

Prestashop et Paypal seront enfin d'accord pour les clients avec affichage HT :)

Link to comment
Share on other sites

  • 9 months later...

Bonjour à tous,

Je rencontre le même souci dans un autre contexte évoqué d'ailleurs par Eusebio100.
Je ne suis en effet pas en affichage des prix HT comme certains d'entres-vous mais j'ai été confronté à ce problème de calcul lors de la mise en place de réduction catalogue.
Paypal ne prends en effet que 2 décimales et le total de la commande se retrouve donc faux à quelques centimes près et créer une erreur de paiement dans prestashop.

- J'ai donc appliqué les modifs de Camille. le prix envoyé sur Paypal (et donc payé par le client) est désormais juste.
En revanche comme le fait remarqué KevinNash, la commande est toujours considérée en erreur au retour sur prestashop.

- J'ai également testé la modification plus approfondie que préconise Nadius juste au dessus mais avec le même résultat.

 

J'en viens à ma question :

Quelqu'un aurait-il pu solutionner ce dernier petit souci "d'erreur de paiement" affiché par prestashop au retour du paiement sur Paypal ?

Merci par avance.

Link to comment
Share on other sites

Re,

A priori c'est bon. En tout cas je viens de réussir à valider une commande test sans erreur.
En fait il manquait juste un "$" dans le code fourni par Nadius.
 

 

Edit :

penser aussi à modifier dans paypal/expess_checkout/process.php : (sous peine d'avoir des erreurs de paiement)

 public function getTotalPaid()
    {
        $total = 0.00;
        $cart = $this->context->cart;
        $total =  $cart->getOrderTotal(true, Cart::BOTH);
        return $total;
Link to comment
Share on other sites

Merci pour ton retour.
En tout cas, après un week-end complet avec cette modif sur ma boutique en production, je confirme que tout est ok. Tous les paiements paypal sont passés avec succès !

 

Je raye donc une ligne sur ma liste de bug prestashop à corriger !

Rendez-vous en 2050 pour finir cette todolist !  :ph34r:  :rolleyes:

Link to comment
Share on other sites

  • 1 year later...

Bonjour,

Je me rends compte que le problème Paypal / Prestashop ne date pas d'aujourd'hui.  Mon problème n'est vraiment pas le même vu qu'il y a des groupes de clients qui paient la TVA et d'autres non.

Le problème c'est que Paypal (ou même Hipay) font le total taxes comprises alors que le panier affiche le prix HT pour les clients qui ne paient pas la TVA.

J'ai déjà laissé un message sur le Forge, contacté les développeurs de Hipay et Paypal mais aucune réaction, réponse de leur part.

Donc si quelqu'un avait une solution, ce serait bien.

Boutique PS 1.7.2.4.
Paypal V4.3.2.
Hipay V1.0.7

Edited by shana0780 (see edit history)
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...