Loulou91 Posted January 9, 2017 Share Posted January 9, 2017 (edited) Bonjour à tous, J'ai crée un email pour un nouvel état de commande, dans cet email, j'ai besoin d'y afficher le numéro de commade et l'adresse email du client . Pour le numéro de commande j'ai bien trouvé le code {order_name} qui fonctionne, par contre pour l'adresse email du client, J'ai cherché, à doite et a gauche, mais je n'ai rien trouvé, j'ai essayé (au pif) {email} ou {email_client} mais cela n'a hélas pas fonctionné ! Si quelqu'un à la solution ? Merci d'avance Edited January 24, 2017 by Loulou91 (see edit history) Link to comment Share on other sites More sharing options...
Loulou91 Posted January 9, 2017 Author Share Posted January 9, 2017 (edited) il faut essayer : $email=$this->context->customer->email; //depuis le php en question Ensuite il faudra creer une variable template ... Bonjour ndiaga, Et merci pour votre aide! Désolé, mais je ne sais pas si cela a une importance pour la réponse, mais j'ai changé le début du titre de mon message (qui commençait par PhP)..par HTML..!! Sinon pour votre réponse, j'ai compris qu'apres avoir coller ce code " $email=$this->context->customer->email; " quelque part dans mon fichier (new_email.html), il fallait que je crée une "variable Template" ...Le problème c'est que je ne sais pas à quoi ressemble une variable Template , où faut-il la créer et comment faut-il l'utiliser?? voici la ligne de code de mon fichier.html, que je cherche à modifier : <strong>Adresse électronique <a href="mailto:{email}" style="color: rgb(51, 127, 241);">{email}</a></strong> désolé pour mes questions qui peuvent paraitre "candides"...mais je le suis..! Encore merci ! Edited January 9, 2017 by Loulou91 (see edit history) Link to comment Share on other sites More sharing options...
Loulou91 Posted January 10, 2017 Author Share Posted January 10, 2017 Comment connaitre le fichier php qui utilise le fichier new_email.html ?? sachant que cet email est envoyé lors d'un changement d'état d'une commande ?? Link to comment Share on other sites More sharing options...
Loulou91 Posted January 10, 2017 Author Share Posted January 10, 2017 A priori, J'ai trouvé ce fichier, admiOrdersController.php, dans lequel il y a une section /* add a new message for the current order and send and email to the custumer is needed */ dans cette section, j'ai trouvé ça: $varsTpl = array ( '{lastname} ' => $customer->lastname, '{firstname} ' => $customer->firstname, '{id_order} ' => $order -> id '{order_name}' => $order -> getUniqReference(), j'ai ensuite inséré votre code (modifié pour avoir la même syntaxe), ici : '{email}' => $this -> context -> Customer-> email , ); Apres enregistrement, lorsque je suis allé sur la page des commandes dans l'admin, j'ai eu une erreur 500, j'ai vidé le cache, mais j'ai eu la même erreur 500 donc, je n'ai pas pu faire le test d'envoi d'email, avec cette variable {email} ... :-( une idée ? déjà,suis-je sur la bonne voie ?? Merci pour votre aide . Link to comment Share on other sites More sharing options...
Loulou91 Posted January 10, 2017 Author Share Posted January 10, 2017 On dirait que nos reponses se sont croisée...! Je fais la modif et je vous tiens au courant.. Merci! Link to comment Share on other sites More sharing options...
Loulou91 Posted January 10, 2017 Author Share Posted January 10, 2017 Je n'ai pas trouvé la exactement le même code ( j'ai la version 1.6.1.10 de PS) que dans votre exmple, mais j'ai tout de même fait la modification avec votre syntaxe, j'ai trouvé 2 endroits dans ce fichier, ou l'on pouvait insérer ce code, j'ai tester aux 2 endroits successivement, mais j'ai toujours cette erreur 500 (qui disparait heureusement quand j'enlève le code inséré..) ?? Link to comment Share on other sites More sharing options...
Loulou91 Posted January 10, 2017 Author Share Posted January 10, 2017 /* Add a new message for the current order and send an e-mail to the customer if needed */ elseif (Tools::isSubmit('submitMessage') && isset($order)) { if ($this->tabAccess['edit'] === '1') { $customer = new Customer(Tools::getValue('id_customer')); if (!Validate::isLoadedObject($customer)) { $this->errors[] = Tools::displayError('The customer is invalid.'); } elseif (!Tools::getValue('message')) { $this->errors[] = Tools::displayError('The message cannot be blank.'); } else { /* Get message rules and and check fields validity */ $rules = call_user_func(array('Message', 'getValidationRules'), 'Message'); foreach ($rules['required'] as $field) { if (($value = Tools::getValue($field)) == false && (string)$value != '0') { if (!Tools::getValue('id_'.$this->table) || $field != 'passwd') { $this->errors[] = sprintf(Tools::displayError('field %s is required.'), $field); } } } foreach ($rules['size'] as $field => $maxLength) { if (Tools::getValue($field) && Tools::strlen(Tools::getValue($field)) > $maxLength) { $this->errors[] = sprintf(Tools::displayError('field %1$s is too long (%2$d chars max).'), $field, $maxLength); } } foreach ($rules['validate'] as $field => $function) { if (Tools::getValue($field)) { if (!Validate::$function(htmlentities(Tools::getValue($field), ENT_COMPAT, 'UTF-8'))) { $this->errors[] = sprintf(Tools::displayError('field %s is invalid.'), $field); } } } if (!count($this->errors)) { //check if a thread already exist $id_customer_thread = CustomerThread::getIdCustomerThreadByEmailAndIdOrder($customer->email, $order->id); if (!$id_customer_thread) { $customer_thread = new CustomerThread(); $customer_thread->id_contact = 0; $customer_thread->id_customer = (int)$order->id_customer; $customer_thread->id_shop = (int)$this->context->shop->id; $customer_thread->id_order = (int)$order->id; $customer_thread->id_lang = (int)$this->context->language->id; $customer_thread->email = $customer->email; $customer_thread->status = 'open'; $customer_thread->token = Tools::passwdGen(12); $customer_thread->add(); } else { $customer_thread = new CustomerThread((int)$id_customer_thread); } $customer_message = new CustomerMessage(); $customer_message->id_customer_thread = $customer_thread->id; $customer_message->id_employee = (int)$this->context->employee->id; $customer_message->message = Tools::getValue('message'); $customer_message->private = Tools::getValue('visibility'); if (!$customer_message->add()) { $this->errors[] = Tools::displayError('An error occurred while saving the message.'); } elseif ($customer_message->private) { Tools::redirectAdmin(self::$currentIndex.'&id_order='.(int)$order->id.'&vieworder&conf=11&token='.$this->token); } else { $message = $customer_message->message; if (Configuration::get('PS_MAIL_TYPE', null, null, $order->id_shop) != Mail::TYPE_TEXT) { $message = Tools::nl2br($customer_message->message); } $varsTpl = array( '{lastname}' => $customer->lastname, '{firstname}' => $customer->firstname, '{id_order}' => $order->id, '{order_name}' => $order->getUniqReference(), '{message}' => $message ); /* Update shipping number */ if (Tools::isSubmit('submitShippingNumber') && isset($order)) { if ($this->tabAccess['edit'] === '1') { $order_carrier = new OrderCarrier(Tools::getValue('id_order_carrier')); if (!Validate::isLoadedObject($order_carrier)) { $this->errors[] = Tools::displayError('The order carrier ID is invalid.'); } elseif (!Validate::isTrackingNumber(Tools::getValue('tracking_number'))) { $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 $order->shipping_number = Tools::getValue('tracking_number'); $order->update(); // Update order_carrier $order_carrier->tracking_number = pSQL(Tools::getValue('tracking_number')); if ($order_carrier->update()) { // Send mail to customer $customer = new Customer((int)$order->id_customer); $carrier = new Carrier((int)$order->id_carrier, $order->id_lang); if (!Validate::isLoadedObject($customer)) { throw new PrestaShopException('Can\'t load Customer object'); } if (!Validate::isLoadedObject($carrier)) { throw new PrestaShopException('Can\'t load Carrier object'); } $templateVars = array( '{followup}' => str_replace('@', $order->shipping_number, $carrier->url), '{firstname}' => $customer->firstname, '{lastname}' => $customer->lastname, '{id_order}' => $order->id, '{shipping_number}' => $order->shipping_number, '{order_name}' => $order->getUniqReference() ); Voici les 2 zones Link to comment Share on other sites More sharing options...
Loulou91 Posted January 10, 2017 Author Share Posted January 10, 2017 il y avait une "," de trop dans le code que je copie /colle...je n'ai plus l'erreur 500, ! Par contre la modif n'a pas fonctionné, le parametre {email} n'est pas pris en compte à l'envoi du mail..??!! j'ai balayé tout le fichier et, des que je pouvais inserer ce code (finalement + de 2 fois) j'ai inséré ce code..pas d'erreur 500 au final, mais le parametre ne fonctionne pas ! :-( Link to comment Share on other sites More sharing options...
Loulou91 Posted January 11, 2017 Author Share Posted January 11, 2017 Bonjour, Comment puis-je retrouver cette partie dans le fichier AdminOrdersController.php ?? Link to comment Share on other sites More sharing options...
Loulou91 Posted January 11, 2017 Author Share Posted January 11, 2017 Oui, j'ai bien compris qu'il fallait que je cherche, mais le problème c'est que je ne sais pas quoi ( et ou) chercher..! Chercher dans le fichier AdminOrdersController.php ??, chercher dans un autre fichier ? j'ai bien compris qu'il fallait chercher un code PhP particulier qui serait sensé utiliser ou qui ferait la liaison à "new_Email" (Template) Désolé, mais entre le jargon ^particulier", le manque d'outil de débogage (à l'image de ce que l'on peut trouver dans d'autre language comme VBA) mais ce n'est pas facile, pas très "intuitif" on va dire.. ! Et donc, je cherche ou et je cherche quoi?? Merci pour votre aide ! Link to comment Share on other sites More sharing options...
Loulou91 Posted January 18, 2017 Author Share Posted January 18, 2017 Bonjour, Après moult recherches et investigations ....je seche j'ai bien modifié le fichier ...define.inc.php pour etre en mode debug, mais je n'ai pas tres bien compris l'outil de débug...! donc pas moyen pour moi de suivre le fil...! donc la je suis un peu perdu ..!! je pensais que le sujet serait assez simple à traiter... si quelqu'un à une voie de recherche ? Merci pour votre aide ! loulou91 Webmaster (en herbe) du site: https://www.vintagethique.fr Link to comment Share on other sites More sharing options...
Loulou91 Posted January 24, 2017 Author Share Posted January 24, 2017 Bonjour à tous, j'ai finalement trouvé (en fouillant dans les forum anglophone) une solution à mon problème ! la solution est donc de modifier le fichier classes/orders/OrderHistory.php et d'y inserer le code: '{email}'=> $order->getCustomer()->email, dans la partie du code ci-après: public function sendEmail($order, $template_vars = false) { $result = Db::getInstance()->getRow(' SELECT osl.`template`, c.`lastname`, c.`firstname`, osl.`name` AS osname, c.`email`, os.`module_name`, os.`id_order_state`, os.`pdf_invoice`, os.`pdf_delivery` FROM `'._DB_PREFIX_.'order_history` oh LEFT JOIN `'._DB_PREFIX_.'orders` o ON oh.`id_order` = o.`id_order` LEFT JOIN `'._DB_PREFIX_.'customer` c ON o.`id_customer` = c.`id_customer` LEFT JOIN `'._DB_PREFIX_.'order_state` os ON oh.`id_order_state` = os.`id_order_state` LEFT JOIN `'._DB_PREFIX_.'order_state_lang` osl ON (os.`id_order_state` = osl.`id_order_state` AND osl.`id_lang` = o.`id_lang`) WHERE oh.`id_order_history` = '.(int)$this->id.' AND os.`send_email` = 1'); if (isset($result['template']) && Validate::isEmail($result['email'])) { ShopUrl::cacheMainDomainForShop($order->id_shop); $topic = $result['osname']; $data = array( '{lastname}' => $result['lastname'], '{firstname}' => $result['firstname'], '{id_order}' => (int)$this->id_order, '{email}'=> $order->getCustomer()->email, '{order_name}' => $order->getUniqReference() Voilà, ça fonctione à merveille!! j'indique le sujet RESOLU !! loulou91 Webmaster (en herbe) du site: https://www.vintagethique.fr 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