Récemment
-
Erreur 500 suite installation
Questions relatives à l'installation/upgrade13 -
Suite mise à jour vers 1.6.2.15
Bugs & Améliorations6 -
Les metas OpenGraph
Nouvelles fonctionnalités6 -
Installation du module Mondial Relay
Bugs & Améliorations4 -
1.6.2.12 Two Installation Blocking Bugs
Bugs & Améliorations4 -
Disparition des alert success
Bugs & Améliorations3 -
Mise en avant de PhenixSuite
Nouvelles fonctionnalités3 -
Multi boutique, url virtuelles
Bugs & Améliorations3 -
1.6.2.11 - Bug classe Carrier
Bugs & Améliorations2 -
Aide au debogage Javascript (chargement + événements panier)
Bugs & Améliorations5 -
SendinBlue pour PhenixSuite (API V3)
Modules1 -
Override du module Sthoverimage
Modules1 -
Informations générales
PhenixSuite2 -
Des modules et des hacks - liste non exhaustive des modules présentant un risque
Discussion générale16 -
Comment offrir frais de port à partir d'un certain montant MAIS avec transport facturé au poids ?
Discussion générale5 -
Patch de sécurité thèmes warehouse / iqit (Versions 1.5 & 1.6)
Discussion générale1 -
Copieurs-Colleurs
Discussion générale2 -
Créer un contrôleur front (indépendant)
Tutoriels1 -
Fourre-tout de trucs et astuces
Tutoriels4 -
[1.3] Implanter des classes overrides
Tutoriels1
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.