Gatou Posted December 16, 2014 Share Posted December 16, 2014 Bonjour a tous ! Version de prestashop : 1.6.0.9 Je viens de m'apercevoir que mes clients reçoivent le mails 'in_transit' qui est envoyé automatiquement avec l'import du fichier dans le module Expeditor Inet avec les infos order_name qui ne sont pas remplacées. Voila ce que reçoit le client : BONJOUR CLIENTS EXTERIEURS, COMMANDE {ORDER_NAME} - EN COURS D'EXPÉDITION La livraison de votre commande ayant pour référence {order_name} est en cours. Vous pouvez suivre la progression de votre livraison à l'adresse suivante: http://www.colissimo.fr/portail_colissimo/xxx Vous pouvez accéder à tout moment au suivi de votre commande et télécharger votre facture dans "Historique des commandes" de la rubrique "Mon compte" sur notre site. Si vous avez un compte invité, vous pouvez suivre votre commande dans la section "Suivi invité" de notre site. Pourtant la variable firstname, lastname et shop_name ont bien fonctionné. Je sèche, je ne vois pas d'où vient le problème surtout que dans le mail 'preparation' order_name passe bien. Merci de votre aide. Link to comment Share on other sites More sharing options...
ai-dev Posted December 17, 2014 Share Posted December 17, 2014 Bonjour, Est ce que le phénomène est lié à un seul mode de paiement ou à tous ? Avez vous une surcharge du fichier PaymentModule.php dans le répertoire override/classes de votre boutique ? Link to comment Share on other sites More sharing options...
Gatou Posted December 17, 2014 Author Share Posted December 17, 2014 (edited) Bonjour @ide-info, Je ne comprends pas pourquoi le mode de paiement est en lien avec mon problème de variable order_name ? Peux tu m'éclairer ? Edit : Après vérification dans le répertoire override/classes/ je n'ai pas de surcharge du fichier PaymentModule.php Suite a des recherches c'est le fichier Paymentmodule.php qui contient la déclarations des variables utilisées dans les envois des mails. Est-ce bien cela ? Edit 2 : Le paiement est effectué via le module officiel CM/CIC de prestashop. Je n'ai pas pu constater ce problème avec le module Paypal car nous n'avons pas eu de paiement via ce module encore. Merci. Edited December 17, 2014 by Gatou (see edit history) Link to comment Share on other sites More sharing options...
ai-dev Posted December 17, 2014 Share Posted December 17, 2014 (edited) On 12/17/2014 at 3:34 PM, Gatou said: Bonjour @ide-info, Je ne comprends pas pourquoi le mode de paiement est en lien avec mon problème de variable order_name ? Peux tu m'éclairer ? Edit : Après vérification dans le répertoire override/classes/ je n'ai pas de surcharge du fichier PaymentModule.php Suite a des recherches c'est le fichier Paymentmodule.php qui contient la déclarations des variables utilisées dans les envois des mails. Est-ce bien cela ? Edit 2 : Le paiement est effectué via le module officiel CM/CIC de prestashop. Je n'ai pas pu constater ce problème avec le module Paypal car nous n'avons pas eu de paiement via ce module encore. Merci. Oui, c'est à partir de cette classe que la variable est envoyée. Mais les modes de paiement peuvent surcharger la méthode puisqu'ils surcharge la classe PaymentModule. J'utilise un module de paiement CIC aussi (me rappelle plus lequel) et pas de souci de ce côté là. Pour paypal, vous pouvez toujours essayer en vous mettant sur la sandbox, et vous pourrez ainsi savoir si le problème est le même. Bon après midi. Edited December 17, 2014 by @ide-info (see edit history) Link to comment Share on other sites More sharing options...
Gatou Posted December 17, 2014 Author Share Posted December 17, 2014 Merci pour tes précisions. Mais pourquoi lorsque je fais l'essai avec l'envoi du mail 'preparation' qui utilise aussi la variable order_name elle se trouve bien remplacé dans le mail et elle ne fonctionne pas pour l'envoi du mail 'in_transit' ? PS : Pour mon test la commande a été effectuée avec le module chèque de prestashop, ça pourrait venir de la ? Link to comment Share on other sites More sharing options...
ai-dev Posted December 17, 2014 Share Posted December 17, 2014 (edited) Il faut regarder l'aiguillage, les mails ne sont pas envoyés dans les mêmes conditions et n'ont pas forcément les mêmes variables. Par contre je n'avais pas vu que le mail dépend d'un module, il faut vérifier si ce module envoie le mail directement, il se peut que le souci vienne de là. De toute manière, cette variable n'est pas définie, elle n'est pas vide, elle est indéfinie, donc prends le problème à l'envers. Regarde quel script appelle ce tpl de mail, et ensuite remonte jusqu'à trouver la déclaration des variables, et elle sera forcément manquante. Bonne soirée. Edited December 17, 2014 by @ide-info (see edit history) Link to comment Share on other sites More sharing options...
Gatou Posted December 17, 2014 Author Share Posted December 17, 2014 Je viens de gratter un peu dans le fichier. 'in_transit' est appelé par deux fichiers du module expeditorINet : - admin\tabs\AdminExpeditor.php - modules\expeditor\AdminExpeditor.php Après je commence a être un peu paumé pour aller plus loin car je manque de pratique en php. J'ai sorti la partie du code qui fait appel a 'in_transit', c'est possible de jeter un œil ? Merci. /* * Extract all needings informations */ if (($keyId = array_search($this->columnName, $infos[0])) === false) return false; $keyShippingNumber = array_search('NumeroColis', $infos[0]); echo '<p>' . $this->l('List of orders recognized') . '</p>'; echo '<ul>'; unset($infos[0]); // delete csv header foreach ($infos as $info) { $id_order = eregi_replace($this->prefix, '', $info[$keyId]); $shipping_number = $info[$keyShippingNumber]; $id_expeditor = ExpeditorModule::getByIdOrder($id_order); if (!is_numeric($id_expeditor)) continue; $expeditor = new ExpeditorModule($id_expeditor); $expeditor->is_send = 1; $expeditor->save(); $order = new Order($id_order); // Avoid to make multiple submissions if (version_compare(_PS_VERSION_, '1.5.0.4') >= '0') { $id_order_carrier = Db::getInstance()->getValue(' SELECT `id_order_carrier` FROM `'._DB_PREFIX_.'order_carrier` WHERE `id_order` = ' . (int)$id_order ); $order_carrier = NULL; if ($id_order_carrier) $order_carrier = new OrderCarrier( $id_order_carrier ); if ($order_carrier && !$order_carrier->tracking_number ) { $order_carrier->tracking_number = $shipping_number; $order_carrier->update(); } } else if ($order->shipping_number == '') { $order->shipping_number = $shipping_number; $order->update(); } $customer = new Customer($order->id_customer); $carrier = new Carrier((int)$order->id_carrier, (int)$order->id_lang); $templateVars = array('{followup}' => str_replace('@', $shipping_number, $carrier->url)); $history = new OrderHistory(); $history->id_order = $id_order; $history->changeIdOrderState(Configuration::get('EXPEDITOR_STATE_IMP'), $id_order); // Shipping $history->id_employee = intval($cookie->id_employee); $history->addWithemail(true, $templateVars); global $_LANGMAIL; $templateVars = array( '{followup}' => str_replace('@', $shipping_number, $carrier->url), '{firstname}' => $customer->firstname, '{lastname}' => $customer->lastname, '{id_order}' => intval($order->id) ); //send email with traking number $subject = 'Package in transit'; if (Mail::Send(intval($order->id_lang), 'in_transit', ((is_array($_LANGMAIL) AND key_exists($subject, $_LANGMAIL)) ? $_LANGMAIL[$subject] : $subject), $templateVars, $customer->email, $customer->firstname.' '.$customer->lastname)) echo '<br/>' . $this->l('Email send to') . ': ' . $customer->email; else echo '<br/>' . $this->l('Email faild to') . ': ' . $customer->email; echo '<li>' . $this->l('Order number') . ': ' . $id_order; echo '<br/>' . $this->l('Shipping number') . ': ' . $shipping_number; echo "</li>\n"; } echo '</ul>'; echo ' <form action="index.php" method="get"> <p> <input type="hidden" name="tab" value="AdminExpeditor" /> <input type="hidden" name="token" value="'.Tools::getValue('token').'" /> <input type="submit" value="'.$this->l(' Back ').'" class="button" /> </p> </form>'; return true; } Link to comment Share on other sites More sharing options...
ai-dev Posted December 18, 2014 Share Posted December 18, 2014 Bonjour, A mon avis, après un coup d'oeil succint, il y a appareemnt un souci ici : $templateVars = array( '{followup}' => str_replace('@', $shipping_number, $carrier->url), '{firstname}' => $customer->firstname, '{lastname}' => $customer->lastname, '{id_order}' => intval($order->id) ); La variable est manquante. Il faudrait essayer : $templateVars = array( '{order_name}' => $order->getUniqReference(), '{followup}' => str_replace('@', $shipping_number, $carrier->url), '{firstname}' => $customer->firstname, '{lastname}' => $customer->lastname, '{id_order}' => intval($order->id) ); Je pense que c'est un oubli du développeur de reporter cette variable. Bonne journée. Link to comment Share on other sites More sharing options...
Gatou Posted December 18, 2014 Author Share Posted December 18, 2014 Merci pour le coup d'oeil ! Je vais faire quelques essais et voir ce que ça donne. Je ferai un retour. Bonne soirée. Link to comment Share on other sites More sharing options...
Gatou Posted March 30, 2015 Author Share Posted March 30, 2015 Bonsoir, Je viens au nouvelle sur ce problème que j'ai toujours. J'ai essayé de faire la modification proposé par @ide-info et d'autres qui n'ont rien donné ! Avez vous une autre idée d'où cela peux venir ? Les autres utilisateurs de ce module vous n'avez pas ce problème ? Link to comment Share on other sites More sharing options...
JulienTi Posted March 31, 2015 Share Posted March 31, 2015 Bonjour à toutes et tous, J'ai un problème similaire à celui de Gatou avec quelques variables des mails envoyés au client. Pour commencer ma boutique a été développée par une agence, avec qui je ne travail plus actuellement, et après avoir fouiller à droite à gauche je ne pense pas que les mails de confirmation soient gérés de façon conventionnelle c'est à dire dans l'onglet commande>Statut. J'utilise PS 1.5.5 en multiboutique avec module TNT et voici mon problème : Mail paiement validé : les variables sont Ok ({firstname} {lastname} {shop_name} {order_name} Mail commande validée : les variables sont Ok ({firstname} {lastname} {shop_name} {order_name} Là ou ça commence à clocher c'est quand je passe en livraison : Mail en cours de livraison : déjà il s'envoie quand je change le statut de la commande et les variables {order_date} {shipping_mode} et {shipping_number} ne s'affichent pas. Ensuite un autre mail par expédition quand je renseigne le numéro de suivi TNT là le {shipping_number} est renseigné mais les {order_date} et {shipping_mode} restent absents. Si vous pouviez me donner une piste où chercher car c'est embettant que mes clients aient un numéro de suivi sans savoir chez qui le suivre. Pour conclure j'ajouterai que je n'ai que les connaissances que google et les forums ont pus m’apporter. Merci à vous. Link to comment Share on other sites More sharing options...
Guillaume_MPS Posted June 2, 2015 Share Posted June 2, 2015 Bonjour, J'ai aussi le même problème : {order_name} à la place du numéro de la commande et en plus je n'ai même pas le lien sur le suivi. J'ai prestashop 1.6.0.14 et j'ai fait la dernière mise à jour du module Expeditor. J'ai ouvert une demande de support à Prestashop puisque c'est eux qui développent le module Expeditor. Je vous tiendrai informé de la résolution de ce problème. Link to comment Share on other sites More sharing options...
Ludo14320 Posted January 20, 2016 Share Posted January 20, 2016 Bonjour, Avez-vous solutionné votre dysfonctionnement ? Si oui, comment ? J'ai le même problème et je n'arrive pas à trouver la solution. Merci par avance, Link to comment Share on other sites More sharing options...
floch guillaume Posted January 22, 2016 Share Posted January 22, 2016 Bonjour, moi aussi il y as que dans orderhistory.php $topic = $result['osname']; $data = array( '{lastname}' => $result['lastname'], '{firstname}' => $result['firstname'], '{id_order}' => (int)$this->id_order, '{order_name}' => $order->getUniqReference() pour remplir les mail j'ai ajouté livraison $carrier = new Carrier((int)($order->id_carrier), $order->id_lang); $topic = $result['osname']; $data = array( '{lastname}' => $result['lastname'], '{firstname}' => $result['firstname'], '{id_order}' => (int)$this->id_order, '{carrier}' => $carrier->name, '{order_name}' => $order->getUniqReference() et j'arrive a avoir Transporteur : Livraison à domicile dans le retour apres status par contre rien d'autre aucune ne fonctionne genre Bonjour guillaume floch,votre DEVIS sur MATSECOE est en étude Détails du DEVIS Devis : FXNJHCPNN Date {date}Etat : {payment} Référence Produit Prix unitaire Quantité Prix total {products} {discounts} Produits {total_products} Réductions {total_discounts} Paquet cadeau {total_wrapping} Livraison {total_shipping} TVA totale {total_tax_paid} Total payé 32,40 € Livraison Transporteur : Livraison à domicilePaiement : {payment} Adresse de livraison {delivery_block_html} Adresse de facturation {invoice_block_html} idem pour le xcheque Commande FXNJHCPNN - En attente des chèques Nous avons bien enregistré votre commande ayant pour référence FXNJHCPNN. Celle-ci vous sera envoyée dès réception de votre paiement. Vous avez choisi de payer par chèque en trois fois sans frais. Voici les informations dont vous avez besoin pour effectuer le paiement :Montant : 32,40 €À l'ordre de : {cheque_name}Veuillez envoyer votre chèque à l'adresse suivante : {cheque_address_html} alors que le meme template pour cheque fonctionne je cherche depuis 3 jours deja rien vu sur le net a ce propos merci de nous trouver une raison a bientot 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