Snowball Posted December 5, 2008 Share Posted December 5, 2008 Salut à tous,Je viens d'avoir une idée qui me semble assez simple et efficace pour compléter les pages "Commandes" de clients dans le back office.Je pense qu'il serait bien d'y reprendre le poids total de la commande pour pouvoir directement le saisir dans un logiciel d'envoi/affranchissement (en l'ocurence "Expinet" de Colissimo). Ou tout simplement pour simplifier, en "rappelant le poids" l'étape de préparation/affranchissement.En effet, ces fiches permettent d'imprimer rapidement la facture, de contacter simplement le client, de renseigner l'avancer de sa commande, de spécifier un n° de colis ... cool !!! Mais je trouve que le poids est quand même un élément "capital" du traitement global d'une commande ! Pourquoi ne pas l'indiquer à cette endroit ?Jusqu'à présent, je reprends 1 à 1 les articles et fait le total à la calculette. Une perte de temps qui pourrait peut-être être évitée je trouve J'essaie d'imaginer quelles seraient les limites de ce complément d'info, mais j'ai du mal, j'aurais pas dû sortir hier soir :/Qu'en pensez-vous ? Link to comment Share on other sites More sharing options...
Damien Metzger Posted December 5, 2008 Share Posted December 5, 2008 C'est tout en haut à droite sur la 1.1 Link to comment Share on other sites More sharing options...
Snowball Posted December 5, 2008 Author Share Posted December 5, 2008 La 1.1 Finale ... attendue tel le messie Merci de ta Damien ^^ Link to comment Share on other sites More sharing options...
EnveloppeBulle Posted March 24, 2009 Share Posted March 24, 2009 Je suis désolé de soulever à nouveau le problème (l'idée), mais je constate que le poids total n'apparait pas sur les facture PDF générées (ni en haut à droite, ni nul part).je cherche depuis quelques temps à faire apparaitre cette information, mais je n'y arrive pas (d'ailleurs je ne trouve pas dans le forum comment récupérer les variables de poids ou autre, et ce n'est pas faute de demander).BREF, cette information est TRES IMPORTANTE pour la préparation des commandes.Etant donné que tous les poids sont déjà saisis pour tous les produits, il est vraiment dommage de ne pouvoir afficher le poids total sur la facture (qui nous sert, en l'occurence, pour la préparation des commandes).Si vous avez une idée, ou une indication...(Version 1.1.0.5 ) Link to comment Share on other sites More sharing options...
EnveloppeBulle Posted March 24, 2009 Share Posted March 24, 2009 j'apporte des précisions :le problème vient de la classe Order.php dans laquelle on trouve cette fonction getTotalWeight() : public function getTotalWeight() { $result = Db::getInstance()->getRow(' SELECT SUM(product_weight*product_quantity) as weight FROM '._DB_PREFIX_.'order_detail WHERE id_order = '.intval($this->id)); return $result['weight']; } On voit ici que c'est le poids des PRODUITS qui est utilisé et non celui des déclinaisons (attributs/groupes...). Donc, le résultat calculé est toujours faux (pour nous en tout cas), d'autant plus que nous avons mis 0Kg comme poids à tous nos produits et que le poids n'est indiqué, finalement, que par les déclinaisons.J'ai trouvé comment afficher le poids dans la facture (voir ci-dessous), mais j'aimerais savoir comment modifier la fonction pour que getTotalWeight() nous donne le bon poids.dans classes/PDF.php j'ai ajouté le poids après le nom du transporteur :ligne 373 $pdf->Cell(50, 6, Tools::iconv('utf-8', self::encoding(), $carrier->name).' ('.self::$order->getTotalWeight().' Kg)', 'LRB'); Link to comment Share on other sites More sharing options...
Fabrice Posted March 26, 2009 Share Posted March 26, 2009 up. moi aussi je suis intéressé. Link to comment Share on other sites More sharing options...
EnveloppeBulle Posted March 26, 2009 Share Posted March 26, 2009 Bon, on va essayer autrement...Quelqu'un pourrait-il nous/me dire à quel endroit ou à quel moment les données d'une commande sont inscrites dans la BDD dans la table order_details ?!merci Link to comment Share on other sites More sharing options...
Damien Metzger Posted March 26, 2009 Share Posted March 26, 2009 Il faut rajouter ça dans la boucle de Cart::getProducts() : $row['weight'] = $row['weight_attribute']; Car c'est en effet weight qui est utilisé plus tard pour mettre dans product_weight. Link to comment Share on other sites More sharing options...
EnveloppeBulle Posted March 26, 2009 Share Posted March 26, 2009 merci pour cette réponse.Pourriez-vous juste nous indiquer dans quel fichier et à quel endroit effectuer cette modification ? (je n'arrive pas à mettre la main sur cette boucle..) Link to comment Share on other sites More sharing options...
Damien Metzger Posted March 27, 2009 Share Posted March 27, 2009 L'idéal est de regarder les logs SVN car j'ai fait la modif sur un 1.2 et non une 1.1, donc mes éventuelles précisions pourraient être erronées. Link to comment Share on other sites More sharing options...
EnveloppeBulle Posted March 27, 2009 Share Posted March 27, 2009 ceci explique cela j'avais parcouru tous les fichiers de la 1.1 en vain... par contre cela m'inquiète fortement pour la future MAJ 1.2 si l'on doit voir apparaitre des changements aussi importants (comme l'affichage/calcul des caractéristiques des produits via de nouvelles fonctions...) Link to comment Share on other sites More sharing options...
EnveloppeBulle Posted March 27, 2009 Share Posted March 27, 2009 Bon ok..Avec un peu de persévérance, j'ai finalement trouvé la solution (sans regarder dans le SVN).------ Peut-être serait-il utile pour d'autres que cette solution soit postée de manière + visible ? (à vous de voir) ------DONC, pour afficher le poids total d'une commande dans la facture (pdf) à côté du transporteur, en se basant sur le poids des attributs/déclinaisons des produits, faites comme ceci :1) Modifier le fichier classes/PDF.php à la ligne 373 (à côté de carrier->name) $pdf->Cell(50, 6, Tools::iconv('utf-8', self::encoding(), $carrier->name).' ('.number_format(self::$order->getTotalWeight(), 2, ',', ' ').' Kg)', 'LRB'); 2) Ensuite, modifier le fichier classes/PaymentModule.php à la ligne 200 :Remplacer '.floatval($product['weight']).', par '.floatval($product['weight_attribute']).', Ceci aura pour effet, lors de la validation d'une commande, de mettre le poids d'un attribut dans la table order_detail pour le champs product_weight, qui est ensuite utilisé dans la fonction getTotalWeight() pour afficher sur la facture. Au final, c'est une grosse bidouille, mais qui m'est très utile Link to comment Share on other sites More sharing options...
Fabrice Posted April 5, 2009 Share Posted April 5, 2009 merci EnveloppeBulle pour le partage !tu saurais comment on peux mentionner le poids total à côté de chaque article dans le récap du panier ?l'idée est de mentionner le poids dans le panier, de façon à avoir également cette information et dans le panier, et sur le détail de chaque produit listés dans la facture. merci ! Link to comment Share on other sites More sharing options...
EnveloppeBulle Posted April 6, 2009 Share Posted April 6, 2009 J'ai essayé lontemps d'afficher le poids de l'article dans sa fiche produit, mais sans succès. Je n'ai même aps cherché à l'afficher dans le Block panier en haut à droite (tellement c'est déjà instable), mais par contre, je pense avoir réussi à l'afficher dans le Panier (normal).Dans ton theme, dans shopping-cart.tpl, ligne 82, entre la ligne "total price" et la ligne "free shipping" j'ai ajouté la ligne : {l s='Total Weight :'} {$total_weight} Kg Je réutilise la classe "cart_total_delivery", donc ne pas faire attention à cette dénomination. Pour la variable $total_weight, je ne me rappelle pas si elle est déjà dispo, ou si je l'avais réglée pour qu'elle soit donnée.Peux-tu faire l'essai ? Link to comment Share on other sites More sharing options...
lpdj74 Posted April 8, 2009 Share Posted April 8, 2009 Bonjour EnveloppeBulleEst tu sur de ne pas avoir modifier d'autres fichiers pour que marche {l s='Total Weight :'} {$total_weight} Kg parce que en l'état sa n'affiche rienmerci Link to comment Share on other sites More sharing options...
EnveloppeBulle Posted April 8, 2009 Share Posted April 8, 2009 Non, comme indiqué dans le post précédent, je ne me rappelle pas si (et où) j'ai fait d'autres modifs.A noter, que dans mon cas, cela ne fonctionne QUE parceque tous les poids des produits sont en fait définis dans les déclinaisons, et par contre, tous les "produits" ont un poids de 0.Je vais essayer de voir où j'ai pu faire des modifs mais 1) je n'ai malheureusement pas trop commenté mon code 2) je n'ai pas trop le temps en ce moment Link to comment Share on other sites More sharing options...
EnveloppeBulle Posted April 8, 2009 Share Posted April 8, 2009 Bon alors c'est simple, il suffisait de regarder le moteur (la classe) qui alimentait (balançait les données) le template ça se passe dans classes/Cart.phpligne 834 (par là) tu as la fonction getSummaryDetails suivante : function getSummaryDetails() { global $cookie; return array( 'delivery' => new Address(intval($this->id_address_delivery)), 'invoice' => new Address(intval($this->id_address_invoice)), 'carrier' => new Carrier(intval($this->id_carrier), $cookie->id_lang), 'products' => $this->getProducts(false), 'discounts' => $this->getDiscounts(), 'total_discounts' => number_format($this->getOrderTotal(true, 2), 2, '.', ''), 'total_wrapping' => number_format($this->getOrderTotal(true, 6), 2, '.', ''), 'total_shipping' => number_format($this->getOrderShippingCost(), 2, '.', ''), 'total_products_wt' => number_format($this->getOrderTotal(true, 1), 2, '.', ''), 'total_price' => number_format($this->getOrderTotal(), 2, '.', '')); } dans cette fonction il faut ajouter la variable de poids 'total_weight' => number_format($this->_totalWeight,2,'.',''), ce qui va nous donner : function getSummaryDetails() { global $cookie; return array( 'delivery' => new Address(intval($this->id_address_delivery)), 'invoice' => new Address(intval($this->id_address_invoice)), 'carrier' => new Carrier(intval($this->id_carrier), $cookie->id_lang), 'products' => $this->getProducts(false), 'discounts' => $this->getDiscounts(), 'total_discounts' => number_format($this->getOrderTotal(true, 2), 2, '.', ''), 'total_wrapping' => number_format($this->getOrderTotal(true, 6), 2, '.', ''), 'total_shipping' => number_format($this->getOrderShippingCost(), 2, '.', ''), 'total_products_wt' => number_format($this->getOrderTotal(true, 1), 2, '.', ''), 'total_weight' => number_format($this->_totalWeight,2,'.',''), 'total_price' => number_format($this->getOrderTotal(), 2, '.', '')); } Peux-tu me dire si c'est ok avec ça ? Link to comment Share on other sites More sharing options...
lpdj74 Posted April 8, 2009 Share Posted April 8, 2009 super avec cette ajout sa marche nickelmerci Link to comment Share on other sites More sharing options...
Fabrice Posted April 29, 2009 Share Posted April 29, 2009 J'ai essayé lontemps d'afficher le poids de l'article dans sa fiche produit, mais sans succès. Je n'ai même aps cherché à l'afficher dans le Block panier en haut à droite (tellement c'est déjà instable), mais par contre, je pense avoir réussi à l'afficher dans le Panier (normal).Dans ton theme, dans shopping-cart.tpl, ligne 82, entre la ligne "total price" et la ligne "free shipping" j'ai ajouté la ligne : {l s='Total Weight :'} {$total_weight} Kg Je réutilise la classe "cart_total_delivery", donc ne pas faire attention à cette dénomination. Pour la variable $total_weight, je ne me rappelle pas si elle est déjà dispo, ou si je l'avais réglée pour qu'elle soit donnée.Peux-tu faire l'essai ? hello !je tente en vain de faire fonctionner le bazar : voici le problème.Tout fonctionne normallement SAUF lorsque l'un des produits mis dans le panier comporte une déclinaison dont le dont est différent.Donc, pour résumer :le poids est renseigné dans la fiche - pas de déclinaison : OK - l'ajout de l'article dans le panier + calcul du poids totalle poids est renseigné dans la fiche - + déclinaison avec un surpoids : MARCHE PAS - l'ajout de l'article dans le panier + calcul du poids total = 0.00Quelqu'un saurait pourquoi le calcul merdouille sous cette condition ?merci ! Link to comment Share on other sites More sharing options...
EnveloppeBulle Posted July 21, 2009 Share Posted July 21, 2009 pour finir et compléter la chose (on affiche le poids dans le panier et dans la facture pdf), dans le cas de poids de produits avec ou sans déclinaisons, avec influences ou non sur le poids, voici ce qu'il faut finalement modifier :dans classes/PaymentModules.php à la ligne 200 :Remplacer: '.floatval($product['weight']).', ou '.floatval($product['weight_attribute']).', par : '.floatval($product['weight_attribute']+$product['weight']).', puis dans classes/Cart.php à la ligne 207 :Remplacer : IF (IFNULL(pa.`weight`, \'\') = \'\', p.`weight`, pa.`weight`) AS weight_attribute, par : IF (IFNULL(pa.`weight`, \'\') = \'\', 0, pa.`weight`) AS weight_attribute, Ca veut dire que s'il n'y a pas d'attribut pour un produit, au lieu d'utiliser le poids du produit pour la variable weight_attribute, on lui met 0. Et donc, pour les calculs de poids, on ajoute le poids du produit au poids de l'attribut, ce qui donne un résultat juste ! Link to comment Share on other sites More sharing options...
Fabrice Posted July 22, 2009 Share Posted July 22, 2009 Merci - vraiment merci !!! pour cette info. :coolsmile: Link to comment Share on other sites More sharing options...
AngelDisc Posted January 18, 2011 Share Posted January 18, 2011 Pour les version 1.3.5, pour afficher le poids sur la facture, celà se situe vers la ligne 444: après $pdf->Cell(40, 6, self::l('Payment method:'), 'LR'); ajouter --> /* Poids */ $pdf->Cell(0, 6, self::l('Weight:'), 'LR'); Après $pdf->Cell(40, 6, Tools::iconv('utf-8', self::encoding(), $order->payment), 'LRB'); ligne 450 : ajouter --> /* Poids */ $pdf->Cell(0, 6, number_format(self::$order->getTotalWeight(),3).' Kg', 'LRB'); Link to comment Share on other sites More sharing options...
Recommended Posts
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 accountSign in
Already have an account? Sign in here.
Sign In Now