kimzey Posted September 17, 2013 Share Posted September 17, 2013 (edited) Bonjour, Je cherche à ajouter le champs commentaire client sur les bons de livraison. J'ai fouillé un peu dans delivery-slip.tpl mais je n'ai pas réussi à ajouter ce champ. Quelqu'un sait il comment faire ? Merci. Edited September 18, 2013 by kimzey (see edit history) Link to comment Share on other sites More sharing options...
indesign47 Posted September 17, 2013 Share Posted September 17, 2013 Bonsoir, delivery-slip.tpl (dossier pdf) ligne 101 environ {if isset($message)} <b>{l s='Message:' pdf='true'}</b><br /> {$message}<br /> <br /> {/if} HTMLTemplateDeliverySlip.php (dossier classes > pdf) ligne 64 environ //add Message $message = $this->order->getFirstMessage(); $carrier = new Carrier($this->order->id_carrier); $carrier->name = ($carrier->name == '0' ? Configuration::get('PS_SHOP_NAME') : $carrier->name); $this->smarty->assign(array( 'order' => $this->order, 'order_details' => $this->order_invoice->getProducts(), 'delivery_address' => $formatted_delivery_address, 'invoice_address' => $formatted_invoice_address, 'order_invoice' => $this->order_invoice, 'carrier' => $carrier, 'message' => $message, )); Résultat 1 1 Link to comment Share on other sites More sharing options...
kimzey Posted September 18, 2013 Author Share Posted September 18, 2013 Bonjour, Merci une nouvelle fois pour ton aide, ta solution fonctionne parfaitement !. 1 Link to comment Share on other sites More sharing options...
Trephisto Posted September 23, 2013 Share Posted September 23, 2013 Bonjour à tous, Indesign, ta solution m'a bien aidé également, merci! Tu ne saurais pas comment on peut afficher l'adresse e-mail du client également? Merci d'avance! Link to comment Share on other sites More sharing options...
indesign47 Posted September 23, 2013 Share Posted September 23, 2013 Bonjour Trephisto, Je regarde ta demande dans la journée. Cordialement. Link to comment Share on other sites More sharing options...
Trephisto Posted September 23, 2013 Share Posted September 23, 2013 Merci indesign, très sympa! J'ai aussi vu dans ton exemple que tu as rajouté le transporteur, cela m'intéresse également donc j'ai rajoute les 3 lignes de ton exemple concernant le "Carrier" dans ma classe HTMLTemplateDeliverySlip.php et dans delivery-slip.tpl j'ai rajouté : <b>{l s='Transporteur :' pdf='true'}</b><br /> {$carrier}<br /> Mais cela ne fonctionne pas, est ce que je m'y suis mal pris? Link to comment Share on other sites More sharing options...
Trephisto Posted September 23, 2013 Share Posted September 23, 2013 (edited) En m'aidant de la classe de la facture et d'éléments trouvés sur le net j'ai réussi à ajouter l'adresse e-mail finalement : delivery-slip.tpl {$customer_email} HTMLTemplateDeliverySlip.php $customer = new Customer((int)$this->order->id_customer); $customer_email = $customer->email; $this->smarty->assign(array( 'order' => $this->order, 'order_id' => $this->order_invoice->id_order, 'order_details' => $this->order_invoice->getProducts(), 'delivery_address' => $formatted_delivery_address, 'invoice_address' => $formatted_invoice_address, 'order_invoice' => $this->order_invoice, 'carrier' => $carrier, 'message' => $message, 'customer_email' => $customer_email )); Manque plus que le transporteur et ce sera parfait Edited September 23, 2013 by Trephisto (see edit history) 1 Link to comment Share on other sites More sharing options...
indesign47 Posted September 23, 2013 Share Posted September 23, 2013 (edited) Bonjour Trephisto, delivery-slip.tpl (dossier pdf) ligne 101 environ {if isset($message)} <b>{l s='Message:' pdf='true'}</b><br /> {$message}<br /> <br /> {/if} {if isset($customer_email)} <b>{l s='Customer email:' pdf='true'}</b><br /> {$customer_email}<br /> <br /> {/if} HTMLTemplateDeliverySlip.php (dossier classes > pdf) ligne 52 environ public function getContent() { $delivery_address = new Address((int)$this->order->id_address_delivery); $formatted_delivery_address = AddressFormat::generateAddress($delivery_address, array(), '<br />', ' '); $formatted_invoice_address = ''; if ($this->order->id_address_delivery != $this->order->id_address_invoice) { $invoice_address = new Address((int)$this->order->id_address_invoice); $formatted_invoice_address = AddressFormat::generateAddress($invoice_address, array(), '<br />', ' '); } $carrier = new Carrier($this->order->id_carrier); $carrier->name = ($carrier->name == '0' ? Configuration::get('PS_SHOP_NAME') : $carrier->name); //add Message $message = $this->order->getFirstMessage(); //add Customer email $customer = new Customer((int)$this->order->id_customer); $customer_email = $customer->email; $this->smarty->assign(array( 'order' => $this->order, 'order_details' => $this->order_invoice->getProducts(), 'delivery_address' => $formatted_delivery_address, 'invoice_address' => $formatted_invoice_address, 'order_invoice' => $this->order_invoice, 'carrier' => $carrier, 'message' => $message, 'customer_email' => $customer_email, )); return $this->smarty->fetch($this->getTemplate('delivery-slip')); } PS Il faut traduire les champs Edited September 23, 2013 by indesign (see edit history) Link to comment Share on other sites More sharing options...
Trephisto Posted September 23, 2013 Share Posted September 23, 2013 Merci beaucoup pour ces précisions indesign. Il manque juste une petite chose c'est ce que qui affiche le transporteur dans le tpl. J'ai réussi à l'afficher en faisant : {$carrier->name} C'est parfait pour moi maintenant, merci encore 1 Link to comment Share on other sites More sharing options...
Fanny Abysse Posted October 4, 2016 Share Posted October 4, 2016 Bonjour, Après 3 ans je me permets de ré-ouvrir ce sujet... Je cherche à ajouter dans le BL le champs "message client" pour faciliter la vie de notre logisticien et surtout satisfaire les demandes de nos clients. J'ai appliqué les instructions ci-dessous, mais malheureusement j'ai une erreur 500 lorsque que je veux télécharger le BL. Quelqu'un aurait une solution ? Version Prestashop : 1.6.1.4 Merci pour vos réponses ! Bonsoir, delivery-slip.tpl (dossier pdf) ligne 101 environ {if isset($message)} <b>{l s='Message:' pdf='true'}</b><br /> {$message}<br /> <br /> {/if} HTMLTemplateDeliverySlip.php (dossier classes > pdf) ligne 64 environ //add Message $message = $this->order->getFirstMessage(); $carrier = new Carrier($this->order->id_carrier); $carrier->name = ($carrier->name == '0' ? Configuration::get('PS_SHOP_NAME') : $carrier->name); $this->smarty->assign(array( 'order' => $this->order, 'order_details' => $this->order_invoice->getProducts(), 'delivery_address' => $formatted_delivery_address, 'invoice_address' => $formatted_invoice_address, 'order_invoice' => $this->order_invoice, 'carrier' => $carrier, 'message' => $message, )); Résultat message.png Link to comment Share on other sites More sharing options...
andre.laguerre Posted November 18, 2016 Share Posted November 18, 2016 Bonjour,J'avais appliqué ceci depuis longtemps, et cela fonctionnait très bien sur le 1.6.1.4Depuis que j'ai fait la mise à jour vers 1.6.1.9, j'ai réappliqué le m^me methode dans mes fichiers comme indiqué ci-dessus mais je n'ai rien qui s'affiche ? Avez-vous une idée ? D'avance Merci. André. Link to comment Share on other sites More sharing options...
badi3 Posted November 22, 2016 Share Posted November 22, 2016 j'ai 1.6.1.7, ça marche bien, n'oublie pas de mettre le code avant le } // footer informations $this->shop = new Shop((int)$this->order->id_shop); //add Message $message = $this->order->getFirstMessage(); $carrier = new Carrier($this->order->id_carrier); $carrier->name = ($carrier->name == '0' ? Configuration::get('PS_SHOP_NAME') : $carrier->name); $this->smarty->assign(array( 'order' => $this->order, 'order_details' => $this->order_invoice->getProducts(), 'delivery_address' => $formatted_delivery_address, 'invoice_address' => $formatted_invoice_address, 'order_invoice' => $this->order_invoice, 'carrier' => $carrier, 'message' => $message, )); } Link to comment Share on other sites More sharing options...
ahcheval Posted November 30, 2018 Share Posted November 30, 2018 Bonjour, Comme j'ai un peu galéré, je partage ce que j'ai fait pour avoir l'email du client sur le B/L avec un Prestashop 1.6.0, en noir les lignes existantes, en rouges les lignes de codes à ajouter. Et ça marche, ouf! Par contre, pour le message du client, ça ne marchait pas, ça affichait des informations sur le paiement à la place donc j'ai supprimé la partie message et ça me va. Voilà il ne me reste plus qu'à trouver un moyen d'afficher l'EAN des déclinaisons sur le B/L. En espérant que ce post sera utile à quelqu'un. Fichier HTMLTemplateDeliverySlip.php (dossier classes > pdf) // footer informations $this->shop = new Shop((int)$this->order->id_shop); //add Customer email $customer = new Customer((int)$this->order->id_customer); $customer_email = $customer->email; $this->smarty->assign(array( 'order' => $this->order, 'order_details' => $this->order_invoice->getProducts(), 'delivery_address' => $formatted_delivery_address, 'invoice_address' => $formatted_invoice_address, 'order_invoice' => $this->order_invoice, 'carrier' => $carrier, 'customer_email' => $customer_email, )); } /** * Returns the template's HTML content Fichier delivery-slip.tpl (dossier pdf) {if isset($carrier)} <b>{l s='Carrier:' pdf='true'}</b><br /> {$carrier->name}<br /> <br /> {/if} {if isset($customer_email)} <b>{l s='Customer email:' pdf='true'}</b><br /> {$customer_email}<br /> <br /> {/if} <!-- / CUSTOMER INFORMATIONS --> Link to comment Share on other sites More sharing options...
dgjauto71 Posted May 15, 2019 Share Posted May 15, 2019 Bonjour Je déterre le topic car ma demande est presque similaire et je ne suis pas certain qu'un nouveau post soit utile, cela sera plus en complément après réponse Je voudrais faire apparaitre sur mon bon de livraison la référence fournisseur de chaque produit, j'utilise cette mention plus pour des infos de préparation (emplacement et/ou mention complémentaire....des infos internes pour le préparateur de paquet). Je suis sous la version 1.6.1.4 Merci de votre aide Link to comment Share on other sites More sharing options...
Lolo1402 Posted April 28, 2021 Share Posted April 28, 2021 Bonjour, Au cas où ca peut encore aidé, j'avais le même besoin : ajouter la ref fournisseur sur le BL. Voila comment j'ai fait (désolé pour la mis en forme, je suis débutant prestashop et aussi sur les forums): Inspiré du post : https://www.prestashop.com/forums/topic/986400-faire-apparaitre-fournisseur-sur-bon-de-livraison/ Dont voici le détail Pour faire apparaitre le fournisseur dans ton bon de livraison voici les étapes à suivre: Modifier la method getContent() du fichier /classes/pdf/HTMLTemplateDeliverySlip.php dans le methode getContent vers la ligne 97 Juste aprés ce code : $order_details = $this->order_invoice->getProducts(); Ajouter ce code o foreach ($order_details as &$order_detail) { o $order_detail['supplier_name'] = Supplier::getNameById((int)$order_detail['id_supplier']); } Ensuite modifier le fichier /pdf/delivery-slip.product-tab.tpl : Remplacer l'entête du tableau <thead>....</thead> par ce code : o <thead> o <tr> o <th class="product header small" width="20%">{l s='Reference' pdf='true'}</th> o <th class="product header small" width="55%">{l s='Product' pdf='true'}</th> o <th class="product header small" width="15%">{l s='Fournisseur' pdf='true'}</th> o <th class="product header small" width="10%">{l s='Qty' pdf='true'}</th> o </tr> </thead> Dans le <tbdoy> juste avant : o <td class="product center"> o {$order_detail.product_quantity} </td> AJouter ce bout de code: o <td class="product center"> o {if empty($order_detail.supplier_name)} o --- o {else} o {$order_detail.supplier_name} o {/if} </td> Enregistrer et uploader sur votre serveur Mais dans notre cas, pas besoin d’aller chercher le nom du fournisseur car la ref du fournisseur est déjà attachée au produit. Donc pas de modif de la « method getcontent() » (le point 1 ci-dessus). Donc uniquement faire 2 et 3, en adaptant 2. Voici ce que ca donne dans le fichier /pdf/delivery-slip.product-tab.tpl Remplacer l'entête du tableau <thead>....</thead> par ce code : <thead> <tr> <th class="product header small" width="20%">{l s='Reference' pdf='true'}</th> <th class="product header small" width="55%">{l s='Product' pdf='true'}</th> <th class="product header small" width="15%">{l s='Ref. Fourn.' pdf='true'}</th> <th class="product header small" width="10%">{l s='Qty' pdf='true'}</th> </tr> </thead> Dans le <tbdoy> juste avant : o <td class="product center"> o {$order_detail.product_quantity} </td> AJouter ce bout de code: <td class="product center"> {if empty($order_detail.product_supplier_reference)} --- {else} {$order_detail.product_supplier_reference} {/if} </td> Ca marche ! Link to comment Share on other sites More sharing options...
Mediacom87 Posted April 28, 2021 Share Posted April 28, 2021 il y a 41 minutes, Lolo1402 a dit : Bonjour, Au cas où ca peut encore aidé, j'avais le même besoin : ajouter la ref fournisseur sur le BL. Voila comment j'ai fait (désolé pour la mis en forme, je suis débutant prestashop et aussi sur les forums): Inspiré du post : https://www.prestashop.com/forums/topic/986400-faire-apparaitre-fournisseur-sur-bon-de-livraison/ Dont voici le détail Pour faire apparaitre le fournisseur dans ton bon de livraison voici les étapes à suivre: Modifier la method getContent() du fichier /classes/pdf/HTMLTemplateDeliverySlip.php dans le methode getContent vers la ligne 97 Juste aprés ce code : $order_details = $this->order_invoice->getProducts(); Ajouter ce code foreach ($order_details as &$order_detail) { $order_detail['supplier_name'] = Supplier::getNameById((int)$order_detail['id_supplier']); } Ensuite modifier le fichier /pdf/delivery-slip.product-tab.tpl : Remplacer l'entête du tableau <thead>....</thead> par ce code : <thead> <tr> <th class="product header small" width="20%">{l s='Reference' pdf='true'}</th> <th class="product header small" width="55%">{l s='Product' pdf='true'}</th> <th class="product header small" width="15%">{l s='Fournisseur' pdf='true'}</th> <th class="product header small" width="10%">{l s='Qty' pdf='true'}</th> </tr> </thead> Dans le <tbdoy> juste avant : <td class="product center"> {$order_detail.product_quantity} </td> AJouter ce bout de code: <td class="product center"> {if empty($order_detail.supplier_name)} --- {else} {$order_detail.supplier_name} {/if} </td> Enregistrer et uploader sur votre serveur Mais dans notre cas, pas besoin d’aller chercher le nom du fournisseur car la ref du fournisseur est déjà attachée au produit. Donc pas de modif de la « method getcontent() » (le point 1 ci-dessus). Donc uniquement faire 2 et 3, en adaptant 2. Voici ce que ca donne dans le fichier /pdf/delivery-slip.product-tab.tpl Remplacer l'entête du tableau <thead>....</thead> par ce code : <thead> <tr> <th class="product header small" width="20%">{l s='Reference' pdf='true'}</th> <th class="product header small" width="55%">{l s='Product' pdf='true'}</th> <th class="product header small" width="15%">{l s='Ref. Fourn.' pdf='true'}</th> <th class="product header small" width="10%">{l s='Qty' pdf='true'}</th> </tr> </thead> Dans le <tbdoy> juste avant : <td class="product center"> {$order_detail.product_quantity} </td> AJouter ce bout de code: <td class="product center"> {if empty($order_detail.product_supplier_reference)} --- {else} {$order_detail.product_supplier_reference} {/if} </td> Ca marche ! il y a 49 minutes, Lolo1402 a dit : Modifier la method getContent() du fichier /classes/pdf/HTMLTemplateDeliverySlip.php Bien entendu il est préférable et même obligatoire de faire une surcharge de cette clasee et non pas de la modifier dans le coeur pusique cela empêchera toute mise à jour et provoquera des difficulté d'analyse pour un intervenant externe si le code provoque une incompatibilité. Link to comment Share on other sites More sharing options...
Lolo1402 Posted April 28, 2021 Share Posted April 28, 2021 Merci Mediacom pour cette precision. Mais à vrai dire c'est du chinois pour moi. Je me suis inspiré d'un post proposant cette solution, mais pour l'adapter à ma problèmatique, je n'ai pas touché à "la method getcontent()" . J'ai juste appliqué des modifs au fichier delivery-slip.product-tab.tpl Donc c'est ok pour toi? Merci Link to comment Share on other sites More sharing options...
Mediacom87 Posted April 28, 2021 Share Posted April 28, 2021 il y a 21 minutes, Lolo1402 a dit : J'ai juste appliqué des modifs au fichier delivery-slip.product-tab.tpl Donc c'est ok pour toi? pas la moindre idée, je n'ai pas du tout analyser le contenue. Link to comment Share on other sites More sharing options...
Bertrand57 Posted March 5 Share Posted March 5 On 9/17/2013 at 7:02 PM, indesign47 said: $message = $this->order->getFirstMessage(); Bonjour, Merci pour les codes. Avec $message = $this->order->getFirstMessage(); cela retourne le message le plus récent, y compris si le message est un message privé. J'ai cette situation avec mes modules de paiement qui ajoutent un message privé. Du coup, quand il n'y a pas de message du client, c'est le message du module de paiement qui s'affiche sur le PDF. Comment faire pour exclure les messages privés et ainsi être certain de récupérer le message du client quand il y en a un ? Merci 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