Bllidz Posted July 27, 2021 Share Posted July 27, 2021 Bonjour, je suis sur la création d'un module qui a pour but d'envoyer un mail à une adresse email. 2 types de mails peuvent être envoyé soit un AR soit la facture. j'ai une table avec l'email de compta et l'email a qui je dois envoyé l'ar. Mais je bloque avant car je mets mon email en brut histoire de tester. "Possible de retrouver des erreurs de code" voici le rendu du tpl. Ma fonction qui est censé envoyer un mail public function send_mail1($id_order,$typeMail){ $order = new Order($id_order); $customer = new Customer((int)$order->id_customer); $id_customer=((int)$order->id_customer); $templateVars = array( '{firstname}' => $customer->firstname, '{lastname}' => $customer->lastname, '{id_order}' => $order->id, '{order_name}' => $order->getUniqReference(), ); $id_lang = $order->id_lang; $id_lang = 0 ; if ($typeMail == "AR") { $subject = $this->l('Accusé de réception pour la commande'); $template_name = 'mail_ar'; $mail = Db::getInstance()->getValue('SELECT email_ar FROM`' . _DB_PREFIX_ .'jv_mail` where id_customer = '. (int)$id_customer); $mail1 = "[email protected]"; $file_attachment=null ; } if ($typeMail == "Compta") { $subject = $this->l('Facture de la commande'); $template_name = 'mail_compta'; $mail = Db::getInstance()->getValue('SELECT email_compta FROM`' . _DB_PREFIX_ .'jv_mail` where id_customer = '. (int)$id_customer); $mail1 = "[email protected]"; //$file_attachment['content'] = file_get_contents(_PS_ROOT_DIR_.'/pdf/ar.pdf'); //Chemin du fichier $file_attachment=null ; } Mail::Send( $id_lang, $template_name, $subject, $templateVars, $mail1,//mail du destinataire null, null, null, null, null, dirname(__FILE__) . '/mails/' ); } Mon js $('button.submitSendMail').unbind('click').click(function(e) { e.preventDefault(); //var email =$('#emailComptable').val(); //alert(email); var typeMail = document.querySelector('input[name=typeMail]:checked').value; //alert(typeMail); query = 'ajax=1&token='+token+'&action=envoi&id_customer='+id_customer+'&typeMail='+typeMail+'&id_order='+id_order+'&'; $.ajax({ type:'POST', //Methode POST url: "../modules/jv_mails/ajax_jv_mails.php", cache: false, dataType: 'json', data : query, success: function(data) { if (data.result) { console.log('ok'); } else jAlert(data.error); } }); return false; }); et mon fichier ajax_mon_module if (Tools::getValue('action') == 'envoi') { //$id_customer = Tools::getValue('id_customer'); $typeMail = Tools::getValue('typeMail'); $id_order=Tools::getValue('id_order'); $j->send_mail1($id_order,$typeMail); } et l'erreur en question Merci pour tout aide d'avance Je suis sous prestashop 1.7.6.9 Link to comment Share on other sites More sharing options...
Eolia Posted July 27, 2021 Share Posted July 27, 2021 Vous avez quelque chose qui est hooké sur actionEmailSendBefore et qui ne renvoie pas un tableau... $hookBeforeEmailResult = Hook::exec( 'actionEmailSendBefore', [ 'idLang' => &$idLang, 'template' => &$template, 'subject' => &$subject, 'templateVars' => &$templateVars, 'to' => &$to, 'toName' => &$toName, 'from' => &$from, 'fromName' => &$fromName, 'fileAttachment' => &$fileAttachment, 'mode_smtp' => &$mode_smtp, 'templatePath' => &$templatePath, 'die' => &$die, 'idShop' => &$idShop, 'bcc' => &$bcc, 'replyTo' => &$replyTo, ], null, true ); if ($hookBeforeEmailResult === null) { $keepGoing = false; } else { $keepGoing = array_reduce( $hookBeforeEmailResult, function ($carry, $item) { return ($item === false) ? false : $carry; }, true ); } $keepGoing = array_reduce( $hookBeforeEmailResult, ... Link to comment Share on other sites More sharing options...
Bllidz Posted July 27, 2021 Author Share Posted July 27, 2021 (edited) 13 minutes ago, Eolia said: Vous avez quelque chose qui est hooké sur actionEmailSendBefore et qui ne renvoie pas un tableau... $hookBeforeEmailResult = Hook::exec( 'actionEmailSendBefore', [ 'idLang' => &$idLang, 'template' => &$template, 'subject' => &$subject, 'templateVars' => &$templateVars, 'to' => &$to, 'toName' => &$toName, 'from' => &$from, 'fromName' => &$fromName, 'fileAttachment' => &$fileAttachment, 'mode_smtp' => &$mode_smtp, 'templatePath' => &$templatePath, 'die' => &$die, 'idShop' => &$idShop, 'bcc' => &$bcc, 'replyTo' => &$replyTo, ], null, true ); if ($hookBeforeEmailResult === null) { $keepGoing = false; } else { $keepGoing = array_reduce( $hookBeforeEmailResult, function ($carry, $item) { return ($item === false) ? false : $carry; }, true ); } $keepGoing = array_reduce( $hookBeforeEmailResult, ... Merci de ta réponse @Eolia pourtant je ne fais pas appel au hook actionEmailSendBefore.. Donc si je comprends bien je dois rajouter ce hook et ce code avant de faire appel a send_mail1 (ma fonction)? Edited July 27, 2021 by Bllidz (see edit history) Link to comment Share on other sites More sharing options...
Eolia Posted July 27, 2021 Share Posted July 27, 2021 Ben regardez dans Modules -> positions lequel est hooké dessus Link to comment Share on other sites More sharing options...
Bllidz Posted July 27, 2021 Author Share Posted July 27, 2021 9 minutes ago, Eolia said: Ben regardez dans Modules -> positions lequel est hooké dessus justement je viens de vérifier et les seuls hooks greffé sont bien ceux que j'ai sélectionné.. Link to comment Share on other sites More sharing options...
Eolia Posted July 27, 2021 Share Posted July 27, 2021 Allo? La terre ? Je vous parle d'un autre module qui serait greffé sur ce hook, pas du votre. Link to comment Share on other sites More sharing options...
Bllidz Posted July 27, 2021 Author Share Posted July 27, 2021 1 minute ago, Eolia said: Allo? La terre ? Je vous parle d'un autre module qui serait greffé sur ce hook, pas du votre. Ah, j'avais mal compris... Et aucun n'est gréffé sur ce hook.. Link to comment Share on other sites More sharing options...
Eolia Posted July 27, 2021 Share Posted July 27, 2021 Whaaah.... ces 1.7 m'étonneront toujours^^ Perso je remplacerait la ligne de Mail.php if ($hookBeforeEmailResult === null) { par if ($hookBeforeEmailResult === null || !is_array($hookBeforeEmailResult)) { Pour régler le problème. Link to comment Share on other sites More sharing options...
Bllidz Posted July 27, 2021 Author Share Posted July 27, 2021 1 hour ago, Eolia said: Whaaah.... ces 1.7 m'étonneront toujours^^ Perso je remplacerait la ligne de Mail.php if ($hookBeforeEmailResult === null) { par if ($hookBeforeEmailResult === null || !is_array($hookBeforeEmailResult)) { Pour régler le problème. L'erreur a disparu je vais tester ça du coup. Merci de ton 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