Jump to content

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


Recommended Posts

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 ?

Link to comment
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
    */

Link to comment
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 :/

Link to comment
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

Link to comment
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, '.', ''));

Link to comment
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!

Link to comment
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.

Link to comment
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));

Link to comment
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

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