aide prestashop PhenixSuite Help
    • Catégories
    • Récent
    • Mots-clés
    • Populaire
    • Utilisateurs
    • Groupes
    • Recherche
    • S'inscrire
    • Se connecter
    1. Accueil
    2. okom3pom
    O
    Hors-ligne
    • Profil
    • Abonnements 1
    • Abonnés 1
    • Sujets 16
    • Messages 44
    • Groupes 1

    okom3pom

    @okom3pom

    legacy
    7
    Réputation
    1.2k
    Vues
    44
    Messages
    1
    Abonnés
    1
    Abonnements
    Inscrit
    Dernière connexion

    okom3pom Se désabonner S'abonner
    legacy

    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
    • 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
    • [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 1.6 module front-office bug
      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

    Derniers messages publiés par 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
    • RE: Des modules et des hacks - liste non exhaustive des modules présentant un risque

      3 nouveaux modules :

      colorpictures
      explorerpro
      sampledatainstall

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

      Bonjour,

      Nouveaux thèmes avec module :

      Pour information :
      Il y avait une faille de sécurité dans le module jmsslider.
      Le module est installé avec les thèmes de https://www.joommasters.com/
      La faille est dans le fichier ajax_jmsslider.php et permet d'uploader un fichier PHP sur le serveur (donc prise de contrôle de la boutique).
      La faille existe si le module est présent, il n'y a pas besoin d'installer le module ni de l'activer.
      La faille a été corrigé fin juillet dans le module.

      Thomas

      posté dans Discussion générale
      O
      okom3pom
    • RE: Copieurs-Colleurs

      Parfait je garde l'url 🙂

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

      Génial !

      Ca aide beaucoup je vais lister les modules que j'ai trouvé également, les codes on souvent été enlevé ou corrigé mais je n'ai pas souvent eu d'info sur les fixs.

      1 ) https://www.prestashop.com/forums/topic/168254-module-controleur-activation-de-compte-par-email-validation-dadresse-mail/

      2 ) module-sale-category-appliquer-une-reductionmettre-en-solde-tous-les-produits-dune-categorie

      3 ) https://www.prestashop.com/forums/topic/196722-module-gratuit-changer-le-transporteur/

      4 ) https://www.prestashop.com/forums/topic/258668-module-mini-sondage-comment-nous-avez-vous-connu-ps1415/page-3

      5 ) https://github.com/xanaxilovsky/lexikotron

      6 ) https://github.com/PrestaSafe/prestanews/pull/1

      posté dans Discussion générale
      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
    • RE: Réglementation EU 524/2013 (9 Janvier 2016)

      Il y a deux choses.

      Un lien vers cette plateforme. ( obligatoire sur toutes les pages )

      Et il faut également un médiateur. ( Les coordonnées doivent être dans les CGV )
      Il existe plusieurs types :

      • Un abonnement à l'année pas cher et tu payes au litige
      • Un abonnement cher et tu ne payes pas au litige
      • Adhérer à une association de E-commerçant qui propose ce service.
      posté dans Discussion générale
      O
      okom3pom
    • RE: [1.6.1.12]- Header de cross-orgin invalide avec les CDN

      Merci perso comme un con j'avais ajouté en dessous sans me demander pourquoi :

      # ~~end~~ Do not remove this comment, Prestashop will keep automatically the code outside this comment when .htaccess will be generated again
      
      <FilesMatch "\.(ttf|otf|eot|woff)$">
          <IfModule mod_headers.c>
              Header set Access-Control-Allow-Origin "*"
          </IfModule>
      </FilesMatch>
      

      Voilà c'est corrigé.

      posté dans BUG connus
      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: StockAvailable et setQuantity();

      StockAvailable::setQuantity($this->id, $id_product_attribute, $quantity);

      Est bien appelé avec un $id_product_attribute.

      Le problème c'est qu'il est relancé plus loin dedans avec un $id_product_attribute à 0

      posté dans Discussion générale
      O
      okom3pom