patate34 Posted July 24, 2022 Share Posted July 24, 2022 Bonjour, Je sollicite votre aide car je n'ai rien trouvé sur le net Pour l'envoi de mes commandes, je scannais le code bar du timbre de suivi collé sur l'enveloppe pour enseigner directement dans le backoffice Prestashop 1.6 le numéro de suivi. Or, depuis peu, la Poste est passée d'un code bar à un QR Code et le résultat du scan est différent : Code bar : 8700064099xxxx ==> Numéro de suivi Qr Code : %00000008700064099xxxx392250A18^2A6D4F9 ==> KO dans le suivi de La Poste Donc, le résultat du QR Code ne fonctionne pas sur le portail de suivi de la Poste, on est obligé de le modifier manuellement Savez-vous comment je ne pourrais conserver que la séquence du numéro de suivi lors du scan du QR Code ? Je pense ne pas être le seul dans ce cas... Merci beaucoup pour votre aide. Link to comment Share on other sites More sharing options...
Ali Samie Posted July 24, 2022 Share Posted July 24, 2022 C'est un sujet intéressant. D'après ce que j'ai compris, vous avez un appareil pour scanner les codes QR, ce code QR contient une liste d'informations, en particulier il y a un numéro de suivi dans le code QR. Et vous devez extraire le numéro de suivi parmi toutes les autres informations. Est-ce correct? Link to comment Share on other sites More sharing options...
Ali Samie Posted July 24, 2022 Share Posted July 24, 2022 (edited) Je suppose donc qu'il existe un module qui connecte le scanner à votre Prestashop. S'il s'agit d'un module comme les autres modules, il est alors possible de le modifier et d'ajouter le support du code QR. Edited July 24, 2022 by stifler97 (see edit history) Link to comment Share on other sites More sharing options...
patate34 Posted July 24, 2022 Author Share Posted July 24, 2022 Bonjour Stifler, Oui, c'est exactement ça, le lecteur de QR Code se branche en USB, je positionne préalablement le curseur dans le champs "Numéro de suivi" et lors du scan, le résultat s'affiche directement dans le champs. Mais je ne vois pas comment modifier la valeur enregistrée, si vous avez une idée, je prends Link to comment Share on other sites More sharing options...
Ali Samie Posted July 24, 2022 Share Posted July 24, 2022 Je sais qu'il devrait y avoir un moyen d'extraire le numéro de suivi, mais je dois mettre la main dessus. C'est juste jouer avec les "string" en PHP. Nous devrions également savoir comment le bureau de poste crée ce code QR, peut-être y a-t-il un document qui dit par exemple que les 50 premiers caractères sont réservés au numéro de suivi. Cela nous aidera beaucoup. Si vous avez besoin de moi pour vous aider, veuillez m'envoyer quelques exemples du résultat des scans de code QR et du module dans DM, n'oubliez pas d'envoyer plusieurs résultats de scan, pas un seul, c'est parce que je veux comprendre le modèle du code QR. Link to comment Share on other sites More sharing options...
Janett Posted July 25, 2022 Share Posted July 25, 2022 Note technique -2312637962504361591sdnote_technique.pdf Link to comment Share on other sites More sharing options...
Ali Samie Posted July 25, 2022 Share Posted July 25, 2022 Merci d'avoir partagé @Janett Link to comment Share on other sites More sharing options...
Ali Samie Posted July 25, 2022 Share Posted July 25, 2022 1 hour ago, Janett said: Note technique -2312637962504361591sdnote_technique.pdf 92.28 kB · 3 downloads J'ai lu ce document complètement et c'est atcually assez simple. Le nouveau tampon de suivi a deux options, d'abord il montre SD comme pour le numéro Smart Data qui contient le numéro trackjng, et un code QR, également appelé Data Matrix, qui contient plus de données, et la bonne chose est qu'il commence par le numéro SD. En conclusion, nous avons le numéro de suivi de deux manières, une pour ordinateur et une adaptée à la lecture pour les humains. Enfin, le Data Matrix, simplement le QR code, contient jusqu'à 72 caractères, comme le mentionne le document. Le numéro de suivi est une chaîne contenant 14 chiffres, qui est placé du 9e au 22e caractère. Tout ce que vous avez à faire est ceci : 1. Convertissez le code QR en une chaîne (ce qui est fait par un périphérique et un module USB) 2. Découpez la chaîne de caractères en position 22 et stockez la première partie 3. Découpez la chaîne de caractères en position 9 et enregistrez la deuxième partie le résultat doit contenir le numéro de suivi Link to comment Share on other sites More sharing options...
patate34 Posted July 25, 2022 Author Share Posted July 25, 2022 Super, merci Janett et Stifler ! Stifler, Si je comprends bien, je récupère la valeur du QR Code dans le champs "Numéro de Suivi" et à la validation clic sur "Mettre à jour", je n'enregistre que la chaine de caractères de la 9ième à a 22ième position. J'espère que c'est ça car je ne vois pas trop comment faire autrement Sans vouloir abuser, je veux bien un exemple de code, ça fait bien longtemps que je ne fais plus de dev 🙄 Encore merci à tous les 2 ! Link to comment Share on other sites More sharing options...
Ali Samie Posted July 25, 2022 Share Posted July 25, 2022 Vous êtes tellement bienvenu. Je suis content d'avoir pu aider. Donc, pour obtenir une partie d'une chaîne en PHP, suivez ceci : https://www.php.net/manual/en/function.substr.php il y a aussi des exemples Link to comment Share on other sites More sharing options...
patate34 Posted July 25, 2022 Author Share Posted July 25, 2022 Génial ! Je vais regarder tout ça et je vous fais un retour. Trop fort Stifler, encore merci pour le temps accordé Link to comment Share on other sites More sharing options...
patate34 Posted August 12, 2022 Author Share Posted August 12, 2022 Bonjour, Je poste ici la modif de code réalisée pour ne récupérer que le numéro de suivi lors du scan du QR Code de la Poste. Je ne connais pas le PHP, il y a sans doute mieux à faire, mais ça peut toujours dépanner quelqu'un... Dans le fichier AdminOrdersController.php public function postProcess() { // If id_order is sent, we instanciate a new Order object if (Tools::isSubmit('id_order') && Tools::getValue('id_order') > 0) { $order = new Order(Tools::getValue('id_order')); if (!Validate::isLoadedObject($order)) $this->errors[] = Tools::displayError('The order cannot be found within your database.'); ShopUrl::cacheMainDomainForShop((int)$order->id_shop); } /* Update shipping number */ if (Tools::isSubmit('submitShippingNumber') && isset($order)) { if ($this->tabAccess['edit'] === '1') { $order_carrier = new OrderCarrier(Tools::getValue('id_order_carrier')); //*** Ajout ==> Extraction numéro de suivi Scan la Poste if (preg_match('/%00000/',Tools::getValue('tracking_number')) == 1) $shipping_number_la_poste = substr(Tools::getValue('tracking_number'),8,14); else $shipping_number_la_poste = Tools::getValue('tracking_number'); //*** Fin Ajout if (!Validate::isLoadedObject($order_carrier)) $this->errors[] = Tools::displayError('The order carrier ID is invalid.'); //***Remplacer la ligne ci-dessous elseif (!Validate::isTrackingNumber(Tools::getValue('tracking_number'))) //***Par elseif (!Validate::isTrackingNumber($shipping_number_la_poste)) $this->errors[] = Tools::displayError('The tracking number is incorrect.'); else { // update shipping number // Keep these two following lines for backward compatibility, remove on 1.6 version //***Modif ==> Remplacer la ligne ci-dessous $order->shipping_number = Tools::getValue('tracking_number'); //***==> Par $order->shipping_number = $shipping_number_la_poste; $order->update(); // Update order_carrier //***Modif ==> Remplacer la ligne ci-dessous $order_carrier->tracking_number = pSQL(Tools::getValue('tracking_number')); //***==>Par $order_carrier->tracking_number = pSQL($shipping_number_la_poste); Encore merci pour votre aide. 👍 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