Jump to content

[RESOLU] problème lors du paiement sous Prestashop


Recommended Posts

Bonjour,

Actuellement j'ai un gros soucis dans Prestashop. Aprés avoir modifier des paramètres, rajouter des champs pour calculer des poids (décimal), ce qui fonctionne trés bien, je suis me suis aperçu d'un énorme problème.

Dans le panier (quand j'affiche le récapitulatif) mes produits alimentaires sont calculés avec une taxe de 19,6% alors qu'ils sont configurés en base de données à 5,5%. Et mes frais de transport sur une taxe de 19,6%. Pour une raison que j'ignore le prix de mon produit s'affiche HT dans le panier....

Toujours pour une raison qui m'échappe (le CB et le paiement par chéque) calculs bien mes produits alimentaires en 5,5% et mes frais de transports en 19,6% ! Je vois cela dans le récapilutatif des commandes.

A cause de cette différence entre le panier et le paiement des erreurs surgissent due à la différence de montant entre celui qui est affiché et celui que l'on va payer !



Avertissement et erreur lors du paiement par chéque.

We noticed a problem with your order. If you think this is an error, you can contact our customer support.







Voici quelques élèments qui j'espère vous aideront.

-> L'ancienne sauvegarde qui fonctionnait y 15 jours (aucune erreur de paiement à la fin) ne fonctionne plus aujourd'hui. Entre temps des élèments dans la base de données ont été modifiés.

-> Je n'ai jamais touché à aucun moment au calcul des montants, aux taxes et autres fonction du pannier. J'ai juste changé la quantité dans la table ps_product en décimal pour qu'elle puisse accueillir des décimaux (contraintes dans le cadre de notre projet).

-> Quelques soit la taxe que je mets pour mes produits alimentaires, je suis toujours sur une taxe à 19,6%

-> Installation du module CIC (j'ai trouvé un autre post qui semble parlait de ces soucis avec ce dernier)
http://www.prestashop.com/forums/viewthread/51839/P30/configuration_et_utilisation_de_prestashop/probleme_sur_la_commande



-> Aprés avoir déroulé le fil, je me suis aperçu qu'il prennait la taxe associés à la zone géographique (je suis en France). Explicant sans doute le dernier point (?)

Fichier Product.php

$result = Db::getInstance()->getRow('
SELECT p.`price`, p.`reduction_percent`, p.`wholesale_price`, p.`reduction_percent`, p.`reduction_from`, p.`reduction_to`, p.`id_tax`, t.`rate`, 
'.($id_product_attribute ? 'pa.`price`' : 'IFNULL((SELECT pa.price FROM `'._DB_PREFIX_.'product_attribute` pa WHERE id_product = '.intval($id_product).' AND default_on = 1), 0)').' AS attribute_price
FROM `'._DB_PREFIX_.'product` p
'.($id_product_attribute ? 'LEFT JOIN `'._DB_PREFIX_.'product_attribute` pa ON pa.`id_product_attribute` = '.intval($id_product_attribute) : '').'
LEFT JOIN `'._DB_PREFIX_.'tax` AS t ON t.`id_tax` = p.`id_tax`
WHERE p.`id_product` = '.intval($id_product));
$price = $result['price'];




Aprés cette fonction mon prix HT passe en 19,6%. Le taux qui rentre est bien de 5,5%, je précise.

$tax = floatval(Tax::getApplicableTax(intval($result['id_tax']), floatval($result['rate'])));




Dans mon fichier de sortie (error_log) :


Taux 5,5
Prix :8,10 (prix HT)

Taux 5,5
Prix :9,6876 (prix TTC à 19,6%)






Pensez-vous que mon problème puisse venir de la base de données ? Du code (sachant que j'ai pas touché au calcul des taxes une seule fois) ? Pourquoi mes prix s'affiche t-il en HT dans mon panier (chose qui m'échappe également).

J'espère que vous allez pouvoir me donner des pistes, des élèments pour que je puisse orienter mes recherches ! J'avoue ne plus savoir ou chercher...

D'avance merci
Cordialement,
CVbdev

ps : Dans le backoffice, les frais de transports sont calculés sur le poids final. En le mettant sur le prix final ça ne change rien du tout !

Topic RESOLU -yoya971
Link to comment
Share on other sites

Bonjour,

Merci de ta réponse ! :)
Je vais revoir cela de plus prêt !

Est-ce que tu penses que ceci couplé au erreur du module de paiement CIC pourrait provoquer les nombreuses anomalies dont je fais l'objet ? :)

Je te tiens au courant, dés que j'ai des élèments probants...:)
++

Link to comment
Share on other sites

Bonjour,

En désactivant le module de paiement de la CIC le message lors du paiement par chèque à disparu ! Je / nous continuons à chercher cet histoire de taxe, pourquoi il nons prend la taxes des frais de transport...? :)

++

Link to comment
Share on other sites

@liandri : Merci pour ta réponse !
Ca fonctionne nickel ! :)

Par contre, je gère des quantités sous forme décimal.
Est-ce que tu sais quel fichier m'arrondie ces quantités en entier ?
Ce qui ne donne pas un prix "juste"...

D'avance merci
++

Link to comment
Share on other sites

Avant même de traiter la quantité, je te donne juste une donnée supplémentaire qui pour le coup répond à ta question :

La structure de la table _product gère les quantités sous forme d'entier ( quantity => int(10) )
Tu auras donc beau modifier quoi que se soit dans le code, il faut au préalable gérer le décimal dans la structure.
De plus, j'ai peur que ça ai de fâcheuses incidences sur tous les autres calculs.

A+

Link to comment
Share on other sites

Bonjour,

Merci de ta réponse ! :) j'ai modifié la structure de la base de données (en mettant les champs à Float). J'ai changé dans le code, également en remplaçant "intval" par "floatval" sur les quantités. Seul ennuis, le prix n'est pas impacté par le décimal, il reste calculé sur un entier (6 au lieu de 6.4 Kg).

J'ai pas le choix c'est une contrainte du cahier des charges !
Actuellement je cherche pourquoi le prix n'est pas impacté, par le changement du "poid" !
Alors que le site affiche bien 6,4 (panier, recap commande,...)

Une idée ? :)

++

Link to comment
Share on other sites

Bonsoir,

Finalement j'ai résolu le problème, je n'avais pas tout passé en Floatval(....

Voilà, si ça peut servir à une personne :
- Utiliser la méthode de "liandri" (1er réponse)
- Rechercher toute les valeurs quantity dans le code et changer le intval en floatval aprés modification des types de champs dans la base de données.

Bonne soirée !! :)
++

Link to comment
Share on other sites

  • 5 months later...

Bonjour,

Je met une note ici car je viens d'avoir le meme probleme, je n'ai pas eu a changé les tpl et php.

Dans mon theme -> modules -> blocknewsletter -> il faut changer le droit des repertoire de 705 a 727

sur votre ftp, click droit "files permissions"


Désormais tout fonctionne

voila ma modeste contribution

a+

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...