Récemment
-
[REGLÉ] override - je n'y arrive pas.
Modules3 -
les routes sur mesures
Discussion générale6 -
Nouvelle attaque ?
Discussion générale11 -
Problème calcul HT
Bugs & Améliorations42 -
Erreur sur facture générée depuis le FO
PhenixSuite3 -
Factures ne se génèrent plus depuis 06/12 [RÉSOLU]
Bugs & Améliorations20 -
Problèmes de prix avec plusieurs devises et PayPal
PhenixSuite3 -
Edition en masse des déclinaisons
Nouvelles fonctionnalités4 -
Mise à niveau de Prestashop 1.6.24 vers PhenixSuite 1.6.30
Discussion générale2 -
PaypalAPI erreur
PhenixSuite50 -
Thème possible
Questions relatives à l'installation/upgrade2 -
erreurs cleaner
Discussion générale3 -
multiples déclinaisons sur produit [RÉSOLU]
Bugs & Améliorations22 -
Thème enfant
PhenixSuite3 -
ONePageCheckout
BUG connus4 -
Informations générales
PhenixSuite2 -
timepicker absent dans le BO
Bugs & Améliorations11 -
Installation Phenixsuite depuis 1.6.1.24
Questions relatives à l'installation/upgrade4 -
Passage au Webp qui n'a pas fonctionné
Bugs & Améliorations11 -
erreur 500 module paypal
Bugs & Améliorations8
Prestashop 1.6 ajouter un code barre au bon de livraison.
-
Comment ajouter un code barre au bon de livraison
Je vais ici expliquer comment ajouter un code barre ( C128 ) dans vos bons de livraison, j'utiliserais ici un override on pourrait utiliser les hook sur les pdf mais dans un soucis d'encre utilisée, de ligne à modifier je préfère utiliser l'override.
- Faire un override de la classe PDFGeneratorCore et ajouter la méthode header dans l'override.
- Dans cette méthode ajouter le code suivant :
$style = array( 'position' => '', 'align' => 'C', 'stretch' => false, 'fitwidth' => true, 'cellfitalign' => '', 'border' => true, 'hpadding' => 'auto', 'vpadding' => 'auto', 'fgcolor' => array(0,0,0), 'bgcolor' => false, //array(255,255,255), 'text' => true, 'font' => 'helvetica', 'fontsize' => 8, 'stretchtext' => 4 ); if( $this->filename == 'deliveries.pdf' || substr($this->filename,0,3) == '#LI' ) { $this->write1DBarcode($this->id_customer.' '.$this->id_order, 'C128', '', '', '', 18, 0.4, $style, 'N'); } else { $this->writeHTML($this->header); }
Ajouter dans cet override :
public function createHeader($header, $object, $filename) { $order = new Order($object->id_order); $this->id_order = $order->id; $this->id_customer = $order->id_customer; $this->filename = $filename; $this->header = $header; }
Faire un override la classe PDF.php ajouter dedans :
public function render($display = true) { $render = false; $this->pdf_renderer->setFontForLang(Context::getContext()->language->iso_code); foreach ($this->objects as $object) { $this->pdf_renderer->startPageGroup(); $template = $this->getTemplateObject($object); if (!$template) { continue; } if (empty($this->filename)) { $this->filename = $template->getFilename(); if (count($this->objects) > 1) { $this->filename = $template->getBulkFilename(); } } $template->assignHookData($object); $this->pdf_renderer->createHeader($template->getHeader(),$object,$this->filename); $this->pdf_renderer->createFooter($template->getFooter()); $this->pdf_renderer->createPagination($template->getPagination()); $this->pdf_renderer->createContent($template->getContent()); $this->pdf_renderer->writePage(); $render = true; unset($template); } if ($render) { // clean the output buffer if (ob_get_level() && ob_get_length() > 0) { ob_clean(); } return $this->pdf_renderer->render($this->filename, $display); } }
Dans cette exemple vous n'afficherez plus le logo sur votre bon de livraison il sera remplacer par un code contenant l'id de la commande et l'id du client.
Voici à quoi ressemblera vos bon de livraison désormais :
En gros si le fichier à générer est un bon de livraison on affiche un code, sinon on garde le header des pdf.
Vous pouvez ajuster ceci selon vos besoins, nous nous servons de ces code barre pour mondial relay et expéditor.
- on pose le colis sur la balance,
- on flash le code barre
- l'étiquette sort directement sur l'imprimante thermique.