Laetitia Bordon Posted March 23, 2021 Share Posted March 23, 2021 (edited) Bonjour, J'ai téléchargé le module ps_emailAlerts et je l'ai installé. 2 soucis : le marchant ne reçoit pas le mail lors d'une nouvelle commande (il a bien la notification dans le BO mais n'a pas forcément son BO toujours ouvert) le mail pour un produit en rupture de stock est envoyé à chaque employé au lieu d'être envoyé au mail renseigné (j'ai donc désactivé cela en attendant de régler le souci) Les mails pour le marchand devraient arriver à l'adresse renseignée dans le dernier cadre (image ci-dessous) mais ce n'est pas le cas. Côté client, par contre, aucun souci. Une idée pour régler le soucis? Je précise que j'ai téléchargé le zip du module (dézippé et renommé avant de rezipper) V2.2.1 car, prestashop n'étant pas sur le net chez nous, je ne savais pas le prendre directement... En faisant des tests, je remarque que ce module ne sert finalement pas et que ça se joue au niveau des déclinaisons de produits pour l'envoie de mail en cas de stock bas. Le souci est qu'il envoie un mail à tous les employés. Moi, je voudrais qu'il envoie un mail à l'adresse du marchand, celle choisie dans les paramètres avancés -> email (cf ci-dessous) et pas à tous les employés. Comment je peux faire cela? Car on est 3 super admin au service ICT mais on s'en moque de savoir que tel produit est quasi épuisé, on ne gère pas ça... Edited March 23, 2021 by Laetitia Bordon (see edit history) Link to comment Share on other sites More sharing options...
Laetitia Bordon Posted March 23, 2021 Author Share Posted March 23, 2021 (edited) Pour l'envoi de mail à partir du module de gestion des stocks (catalog->stocks), voilà ce que j'ai fait pour que ça fonctionne : Dans src/Core/Stock/StockManager.php (à partir de la ligne 309) : J'ai mis en commentaires toute la partie d'envoi de mail aux employés. J'ai repris juste la fonction Mail mail, en changeant $email par (string) $configuration['PS_SHOP_EMAIL'] (pour envoyer le mail à l'adresse mail du Shop renseignée dans advanced parameters -> emails, partie envoyer les email à). // get emails on employees who have right to run stock page /*$emails = array(); $employees = Employee::getEmployees(); foreach ($employees as $employeeData) { $employee = new Employee($employeeData['id_employee']); if (Access::isGranted('ROLE_MOD_TAB_ADMINSTOCKMANAGEMENT_READ', $employee->id_profile)) { $emails[] = $employee->email; } } // Send 1 email by merchant mail, because Mail::Send doesn't work with an array of recipients foreach ($emails as $email) { Mail::Send( $idLang, 'productoutofstock', Mail::l('Product out of stock', $idLang), $templateVars, $email, null, (string) $configuration['PS_SHOP_EMAIL'], (string) $configuration['PS_SHOP_NAME'], null, null, dirname(__FILE__) . '/mails/', false, $idShop ); }*/ Mail::Send( $idLang, 'productoutofstock', Mail::l('Product out of stock', $idLang), $templateVars, (string) $configuration['PS_SHOP_EMAIL'], null, (string) $configuration['PS_SHOP_EMAIL'], (string) $configuration['PS_SHOP_NAME'], null, null, dirname(__FILE__) . '/mails/', false, $idShop ); Reste à trouver la même fonction quand on change les déclinaisons de produits dans la fiche produit (Si je met une déclinaison à 0, ça enregistre bien mais ça n'envoie pas le mail) et celle quand on crée une commande (pour notifier la nouvelle commande par mail au marchand) Edited March 23, 2021 by Laetitia Bordon (see edit history) Link to comment Share on other sites More sharing options...
Laetitia Bordon Posted March 25, 2021 Author Share Posted March 25, 2021 Bon, j'avance. L'envoi de la confirmation de commande par mail au client se fait dans classes/PaymentModule.php. Du coup, si l'email est valide, je copie le mail envoyé au client et j'adapte pour l'envoyer aussi au marchand. Pour ça, j'ai créé un nouveau sujet (New order) et j'ai fait une copie des mails order_conf que j'ai renommé en new_order. Link to comment Share on other sites More sharing options...
sparkss Posted March 25, 2021 Share Posted March 25, 2021 4 hours ago, Laetitia Bordon said: Bon, j'avance. L'envoi de la confirmation de commande par mail au client se fait dans classes/PaymentModule.php. Du coup, si l'email est valide, je copie le mail envoyé au client et j'adapte pour l'envoyer aussi au marchand. Pour ça, j'ai créé un nouveau sujet (New order) et j'ai fait une copie des mails order_conf que j'ai renommé en new_order. Bonjour, En lisant votre sujet, j'ai lu quelque chose sur lequel vous pourriez m'aider. Sachant que les mails s'envoient, au client et j'en reçoit la copie également ! Cependant je souhaiterai envoyer la facture et seulement la facture (de façon automatique toujours) à moi même et au client (ce qui ce fait actuellement) mais aussi à sa comptable (deuxième adresse email qui sera dans la base de données). Auriez vous donc une idée ou pise de comment faire ? Merci de votre réponse, CDT Link to comment Share on other sites More sharing options...
Laetitia Bordon Posted March 26, 2021 Author Share Posted March 26, 2021 (edited) @sparkss : il faut que vous récupériez le mail de la comptable en db (et éventuellement son nom prénom si présent). Ensuite, dans classes/PaymentModule.php, vous avez ça qui envoie le mail au client Mail::Send( (int) $order->id_lang, 'order_conf', //template du mail Context::getContext()->getTranslator()->trans( 'Order confirmation', //sujet du mail array(), 'Emails.Subject', $orderLanguage->locale ), $data, $this->context->customer->email, //email du destinataire $this->context->customer->firstname . ' ' . $this->context->customer->lastname, //nom prénom du destinataire null, null, $file_attachement, //fichiers joints null, _PS_MAIL_DIR_, false, (int) $order->id_shop ); Vous faites un copier - coller de cette fonction et vous remplacez $this->context->customer->email par le mail de la comptable et la ligne du dessous par son nom prénom. Si vous avez un template exprès pour la comptable et un sujet adapté, vous pouvez remplacer 'order_conf' et 'Order confirmation' par les vôtres. Attention à ce que le sujet soit dans les fichiers de traduction EmailsSubject.xlf et le template dans chaque langue là où sont les emails. Mail::Send est dans la condition if (Validate::isEmail($this->context->customer->email)) {}.Attention à mettre le mail pour la comptable dedans aussi... Edited March 26, 2021 by Laetitia Bordon (see edit history) 1 Link to comment Share on other sites More sharing options...
sparkss Posted March 29, 2021 Share Posted March 29, 2021 On 3/26/2021 at 7:37 AM, Laetitia Bordon said: @sparkss : il faut que vous récupériez le mail de la comptable en db (et éventuellement son nom prénom si présent). Ensuite, dans classes/PaymentModule.php, vous avez ça qui envoie le mail au client Mail::Send( (int) $order->id_lang, 'order_conf', //template du mail Context::getContext()->getTranslator()->trans( 'Order confirmation', //sujet du mail array(), 'Emails.Subject', $orderLanguage->locale ), $data, $this->context->customer->email, //email du destinataire $this->context->customer->firstname . ' ' . $this->context->customer->lastname, //nom prénom du destinataire null, null, $file_attachement, //fichiers joints null, _PS_MAIL_DIR_, false, (int) $order->id_shop ); Vous faites un copier - coller de cette fonction et vous remplacez $this->context->customer->email par le mail de la comptable et la ligne du dessous par son nom prénom. Si vous avez un template exprès pour la comptable et un sujet adapté, vous pouvez remplacer 'order_conf' et 'Order confirmation' par les vôtres. Attention à ce que le sujet soit dans les fichiers de traduction EmailsSubject.xlf et le template dans chaque langue là où sont les emails. Mail::Send est dans la condition if (Validate::isEmail($this->context->customer->email)) {}.Attention à mettre le mail pour la comptable dedans aussi... Je vous remercie de votre réponse et tout les détails apportés, je vais essayer tout ça et je reviens vers vous pour vous dire. CDT 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