Navigation

    aide prestashop

    PrestaHelp

    • S'inscrire
    • Se connecter
    • Recherche
    • Catégories
    • Récent
    • Mots-clés
    • Populaire
    • Utilisateurs
    • Groupes
    • Recherche
    1. Accueil
    2. okom3pom
    3. Meilleur sujets
    O
    • Profil
    • Abonnements
    • Abonnés
    • Sujets
    • Messages
    • Meilleur sujets
    • Groupes

    Meilleurs messages postés par okom3pom

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

      1. Faire un override de la classe PDFGeneratorCore et ajouter la méthode header dans l'override.
      2. 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 :

      text alternatif

      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.

      1. on pose le colis sur la balance,
      2. on flash le code barre
      3. l'étiquette sort directement sur l'imprimante thermique.
      posté dans Tutoriels
      O
      okom3pom
    • [1.6.X.X] Le module loyalty s'affiche sur les articles en promotion

      Le module loyalty affiche des points de fidélité sur les articles en promotion alors que dans le backoffice il est coché ne pas donner de points aux articles en promotion.

      Prestashop compare une variable avec parseInt qui retourne donc un nombre entier.

      Ca fonctionne de nouveau pour les versions de theme > 1.6.1.0 avec

      https://github.com/PrestaShop/PrestaShop/pull/8791

      Autre solution qui fonctionnera en 1.6.0.X ( @doekia )

      Ajouter dans le tpl

      {addJsDef no_pts_discounted=$no_pts_discounted}
      

      Remplacer :

      if (typeof(new_price) == 'undefined' || typeof(productPriceWithoutReduction) == 'undefined')
      

      Par

      if (typeof(new_price) == 'undefined' || typeof(productPriceWithoutReduction) == 'undefined' || no_pts_discounted == 1)
      
      posté dans BUG connus
      O
      okom3pom
    • RE: Personnalisation des urls des étapes d'achat

      Oui c est possible en éditant les tpls et ajouter une variable dans les form

      posté dans Discussion générale
      O
      okom3pom
    • Rendre le module mailjet GDPR

      Bonjour,

      Voici une astuce pour rendre le module mailjet RGPD

      Avant toute chose la version du module utilisée est la 3.4.14 disponible ici :

      https://github.com/mailjet/prestashop-mailjet-plugin-apiv3/releases

      Ouvrir le fichier mailjet.php

      A la fin du fichier ajouter avant le dernier }

          public function hookActionExportGDPRData($customer)
          {
              if (!Tools::isEmpty($customer['email']) && Validate::isEmail($customer['email'])) {
      
                  if (!$customer) {
                      return false;
                  }
      
                  $initialSynchronization = new HooksSynchronizationSingleUser(MailjetTemplate::getApi());
                  $customerMailJet = $initialSynchronization->getCustomerByEmail($customer['email']);
                  
                  if( !$customerMailJet || empty($customerMailJet) ) {
                      return json_encode($this->l('Mailjet : Unable to export customer using email.'));
                  }
      
      
                  $dateAdd = new DateTime($customerMailJet->Data[0]->CreatedAt);
                  $dateLastActivity = new DateTime($customerMailJet->Data[0]->LastActivityAt);      
      
                  $return[] = [
                      $this->l('Email') => $customerMailJet->Data[0]->Email,
                      $this->l('Date add') => $dateAdd->format('Y-m-d H:i:s'),
                      $this->l('Newsletters sended') => $customerMailJet->Data[0]->DeliveredCount,
                      $this->l('Last Activity') =>  $dateLastActivity->format('Y-m-d H:i:s'), 
                  ];
      
                  return  json_encode($return);
      
              }
          }
      
          public function hookRegisterGDPRConsent($param)
          {
      
              return;
          }
      
      

      Ouvrir le fichier classes/hooks/synchronization/SingleUser.php

      Ajouter à la fin juste avant le dernier }

          /**
           * Get Contact information by email
           * @param string $email
           * @return object
           */
          public function getCustomerByEmail($email)
          {
              $apiOverlay = $this->getApiOverlay();
      
              $contact= $apiOverlay->getContactByEmail($email);
      
              if (!$contact) {
                  return false;
              }
      
              return $contact;
      
          }
      
      

      Greffer le module sur le deux nouveaux hooks

      Enjoy !

      0_1530016824018_mail-jet-gdpr.png

      Dans la logique on a pas besoin du hook delete car il y a déjà une action sur les hook pour ça ... au pire c'est quelques lignes de codes

      posté dans Tutoriels
      O
      okom3pom
    • RE: Des modules et des hacks - liste non exhaustive des modules présentant un risque

      Module JA Marketplace V 6.2 et sûrement avant

      posté dans Discussion générale
      O
      okom3pom