Jump to content
Sign in to follow this  
Jean-Bruno

[RESOLU] remplacer total HT de la page validation.php par le TTC de la page order.php

Recommended Posts

Bonjour

j'aimerai remplacer le total HT des pages validation.php en paiement comptant, par chèque ou par virement par le montant TTC de la page order.php qui lui est bien TTC. Une idée

Merci, vraiment.

Share this post


Link to post
Share on other sites

Donc, tu as effectué des modifications que j'ai réalisé sur ta boutique pour mettre les prix en HT.

Est-ce que tu peux afficher ici la fonction getOrderTotal() contenu dans le fichier /classes/Cart.php, déclaration comprise, s'il te plais ?

Share this post


Link to post
Share on other sites

c'est de ça dont tu as besoin ? (désolé d'avoir zappé cette réponse)

/**
    * Return cart discounts
    *
    * @result array Discounts
    */
   public function getDiscounts($lite = false)
   {
       if (!$this->id)
           return array();
       if ($this->_discounts)
           return $this->_discounts;

       $result = Db::getInstance()->ExecuteS('
       SELECT d.*, `id_cart`
       FROM `'._DB_PREFIX_.'cart_discount` c
       LEFT JOIN `'._DB_PREFIX_.'discount` d ON c.`id_discount` = d.`id_discount`
       WHERE `id_cart` = '.intval($this->id));
       if ($lite)
           return $result;

       $total_products_wt = $this->getOrderTotal(true, 1);
       $shipping = $this->getOrderShippingCost();
       $this->_discounts = array();
       foreach ($result as $row)
       {
           $discount = new Discount($row['id_discount'], intval($this->id_lang));
           $row['description'] = $discount->description ? $discount->description : $discount->name;
           $row['value_real'] = $discount->getValue(sizeof($result), $total_products_wt, $shipping);
           $this->_discounts[] = $row;
       }
       return $this->_discounts;
   }

   public function getDiscountsCustomer($id_discount)
   {
       $result = Db::getInstance()->ExecuteS('
       SELECT `id_discount`
       FROM `'._DB_PREFIX_.'cart_discount`
       WHERE `id_discount` = '.intval($id_discount).' AND `id_cart` = '.intval($this->id));

       return Db::getInstance()->NumRows();
   }

   /**
    * Return cart products
    *
    * @result array Products
    */

Share this post


Link to post
Share on other sites

non, non, il me faut la fonction getOrderTotal situé dans /classes/Cart.php

dans la version originale, ça donne

function getOrderTotal($withTaxes = true, $type = 3)
   {
       if (!$this->id)
           return 0;
       $type = intval($type);
       if (!in_array($type, array(1, 2, 3, 4, 5, 6, 7)))
           die(Tools::displayError());

... etc



et dans ma version modifiée ça donne

function getOrderTotal($withTaxes = true, $type = 3, $wt = false) // MODIF SOTEW
   {
       $withTaxes = $wt;  // AJOUT SOTEW
       if (!$this->id)
           return 0;
       $type = intval($type);
       if (!in_array($type, array(1, 2, 3, 4, 5, 6, 7)))
           die(Tools::displayError());
... etc



j'aimerais que tu me donnes celle que tu as pour que je te dises quoi mettre là où il faut :/

Share this post


Link to post
Share on other sites

Je suis aveugle, je ne l'avais pas trouvée

la voici

function getOrderTotal($withTaxes = true, $type = 3, $wt = false) // MODIF SOTEW
   {
       if (!$wt) {$withTaxes = false;} else {$withTaxes = true;}  //Rajout SOTEW
       if (!$this->id)
           return 0;
       $type = intval($type);
       if (!in_array($type, array(1, 2, 3, 4, 5, 6, 7)))
           die(Tools::displayError());



Merci SotEW

Share this post


Link to post
Share on other sites

J'ai essayé de remplacer par ta version (bizarre elle est différente, pourtant je ne touche pas à ça, jamais, promis) Rien n'a changé.

A+

Share this post


Link to post
Share on other sites

oui, elle est un peu différente, je me suis aperçu après relecture que je devais être fatigué à ce moment là.

(if (!$wt) {$withTaxes = false;} else {$withTaxes = true;} est totalement équivalent à $withTaxes = $wt; )

donc.

c'est très simple, pour ta modification.

Dans chacun des fichiers validation.php, tu trouveras un appel à getOrderTotal qui doit ressembler à

$total = floatval(number_format($cart->getOrderTotal(true, 3), 2, '.', ''));



et bien rajoute un autre paramètre à true. par exemple :

$total = floatval(number_format($cart->getOrderTotal(true, 3, true), 2, '.', ''));

Share this post


Link to post
Share on other sites

Alors là tu me true ! T'est over trop fort. Tu n'as pas résolu mon problème de prix TTC
MAIS
tu as résolu le problème de plantage lors du processus de validation qui me pourri la vie depuis 3 jours

JE T'ADORE

si !

Share this post


Link to post
Share on other sites

Comment ça, j'ai pas résolu le problème du ttc ??

ça a pas résolu, ça ? :gulp:

Share this post


Link to post
Share on other sites

Mon sauveur ! Ben non si tu veux faire une commande test pour voir ! j'ai bien mon prix ttc sur order.php et en ht sur validation. MAis comme je te l'ai dis tu m'as résolu un sacré gros big bug !

Share this post


Link to post
Share on other sites

SotEW
C'est tout bon (sauf pour le ht mais bon j'ai rajouté un HT sur payement-execution.tpl des modules de paiement), je fais encore une fois le tour du propriétaire et je met en ligne, discrètement…

Share this post


Link to post
Share on other sites

je veux pas trop critiquer, mais tu as toujours ton prix en blanc dans le panier :)

Share this post


Link to post
Share on other sites

j'ai eut un plantage de css, du coup faut que je me retape tout. MAis je commence à cerner le problèmme. C'est en cssant qu'on devient csseron ! :-S

Share this post


Link to post
Share on other sites

Au secours SOTEW ! Je suis sur les starting blocs et je crois que la manip des HT donne une erreur à la commande. En effet il me met en BO Attention : 37,97 € payé au lieu de 31,74 € !
Hors c'est du HT et du TTC ça. Pleas, please, please comme dirait JB!

Share this post


Link to post
Share on other sites

ATTENTION, Attention la modif a tout d'abord fonctionné puis après plus. Au final mon module chéque ne blOQUE PLUS DEPUIS 88

ALLEZ COMPRENDRE ! Content mais fatigué

Share this post


Link to post
Share on other sites

je comprends pas où tu en est, là.

Refais nous un petit message décrivant ce qui se passe. Tu as un problème, ou il est résolu ? qué passa ?

Share this post


Link to post
Share on other sites

Soir ami
suis crevé moi ! en clair : le titre de ce fil n'est pas résolu. J'ai toujours mon HT à la place de mon TTC
Par contre ça avait résolu mon problème de page validation.php qui bloquaient.
Puis toutes mes commandes revenaient annulées (y compris celle de mon module de paiement CB) ce qui m'a induit en erreur car lui c'était normal du fait de la procédure CIC
J'ai défait les modif dans les pages validation.php
Et tous refonctionnne

Je revient donc à la case départ cad avoir la fin de mon processus en TTC sans que ça foute le bins !
sais pas si je suis clair

merci en tout cas de me soutenir à ces heures tardives

ps: te moque pas dans la bataille j'ai encore mon panier qu'a une drole de tete avec ses tax not inc.

Share this post


Link to post
Share on other sites

Le problème doit venir de la validation du payement.

Je maintient qu'il faut mettre le prix en TTC dans les modules de paiement en rajoutant la troisième variable à true, mais il faut sans doute le faire aussi dans un autre fichier. à mon avis, il s'agirait de /classes/PaymentModule.php, à la ligne 67 :

$order->total_paid = floatval(Tools::convertPrice(number_format($cart->getOrderTotal(true, 3), 2, '.', ''), $currency));



ici, le paiement se valide, et fait une comparaison entre la vairable amountPaid, qui est la somme que tu as payé via le mode de paiement (ici, la variable $total que je t'avais demandé de mettre en TTC, et que je te RE-demande de la mettre), et il refait le calcul de la somme. Sans rien toucher, il aura l'HT, et je te conseil fortement de mettre le TTC avec la même métode :

$order->total_paid = floatval(Tools::convertPrice(number_format($cart->getOrderTotal(true, 3, true), 2, '.', ''), $currency));

Share this post


Link to post
Share on other sites

Merci Sotew
Je vais faire le test et je te tiens au courant. T'es par là jusque vers quelle heure ?

Share this post


Link to post
Share on other sites

SoTEW est grand ! Il est arrivé, le divin developpeur ! gentil, disponible, altruiste, serviable !

Avis à la Prestateam : embauchez vite ce jeune homme avant que je ne puisse le faire !

MERCI MERCI MERCI

Share this post


Link to post
Share on other sites

Je vous passe les détails : Mon ami sotew m'a été d'un grand secours mais la je suis confronté à un problème insoluble. Le module de paiement CIC made by Prestashop ne fonctionne pas suite aux modifications des fichiers coeur. je reprend donc tout à 0. Et je ne toucherais à rien d'autre qu'aux .tpl. Je vous dirait si au final ça fonctionne ou pas cette boutique en BtoB. Je crois qu'après je ferais un tuto. C'est trop pénible.

EDIT : dire que les modifications apportées à la boutique font que le module ne peut fonctionner serait plus juste ;-)

a+ et merci encore Sotew

Share this post


Link to post
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
Sign in to follow this  

×
×
  • Create New...

Important Information

Cookies ensure the smooth running of our services. Using these, you accept the use of cookies. Learn More