SergioE Posted May 5, 2017 Share Posted May 5, 2017 Buenos días, Estoy mirando de deshabilitar el email que se envía al cliente (plantilla credit_slip) y por los Estados no se puede ya que no genera ningún estado, solamente un Abono. He visto este post pero antes de tocar código he querido preguntar por si hay algún otro apartado de Prestashop donde se pueda desactivar ese email. https://www.prestashop.com/forums/topic/315165-disable-mail-for-credit-slip/ Saludos a todos!! Link to comment Share on other sites More sharing options...
nadie Posted May 6, 2017 Share Posted May 6, 2017 Buenos días, Estoy mirando de deshabilitar el email que se envía al cliente (plantilla credit_slip) y por los Estados no se puede ya que no genera ningún estado, solamente un Abono. He visto este post pero antes de tocar código he querido preguntar por si hay algún otro apartado de Prestashop donde se pueda desactivar ese email. https://www.prestashop.com/forums/topic/315165-disable-mail-for-credit-slip/ Saludos a todos!! Por lo que comentan en el "hilo", parece que no es configurable en los estados propios de los pedidos en el panel de presta ni dentro de Prestashop en otra sección. (deduzco que hablamos de la 1.6) El enlace que pasas, comentan dos opciones. Una es editar el fichero: controllers/admin/AdminOrdersController.php y comentar/eliminar la línea correspondiente al envio del email: @Mail::Send( (int)$order->id_lang, 'credit_slip', Mail::l('New credit slip regarding your order', (int)$order->id_lang),...... ......... ..... (Recuerda que siempre es mejor hacer un override) Y la otra opción que nos propone es hacer un override propio de la clase Mail (Mail.php) en /override/classes/ Haciendo un if, con la llegada de la plantilla y cortando la ejecución del proceso class Mail extends MailCore { public static function Send($id_lang, $template, $subject, $template_vars, $to, $to_name = null, $from = null, $from_name = null, $file_attachment = null, $mode_smtp = null, $template_path = _PS_MAIL_DIR_, $die = false, $id_shop = null, $bcc = null, $reply_to = null) { // Don't send an email a credit slip is created (not configurable in backoffice) if ($template == 'credit_slip') { return true; } return parent::Send($id_lang, $template, $subject, $template_vars, $to, $to_name, $from, $from_name, $file_attachment, $mode_smtp, $template_path, $die, $id_shop, $bcc, $reply_to); } } Link to comment Share on other sites More sharing options...
SergioE Posted May 6, 2017 Author Share Posted May 6, 2017 Es solo temporal, para hacer unas facturas negativas y luego ya se le podría quitar ese codigo para enviar el email. Entonces si es solo para eso, puedo hacerlo de la primera forma? O mejor hacer un override? Que diferencia habría? Es Prestashop 1.6.0.9 Gracias nadie Link to comment Share on other sites More sharing options...
nadie Posted May 6, 2017 Share Posted May 6, 2017 Siempre que se edite un controlador o clase, lo recomendable es hacer un override. En el enlace comentan que uno ha tocado el controlador X y otra persona ha tocado la clase B (Para este caso u tocas una cosa u tocar otra...las dos al mismo tiempo ... no merece la pena hacerlo) Yo probaria directamente hacer el override de la clase Mail.php (que es la ultima opción que mencionan en ese tema del foro ingles) Guardarlo en el directorio /overrides/classes/ class Mail extends MailCore { public static function Send($id_lang, $template, $subject, $template_vars, $to, $to_name = null, $from = null, $from_name = null, $file_attachment = null, $mode_smtp = null, $template_path = _PS_MAIL_DIR_, $die = false, $id_shop = null, $bcc = null, $reply_to = null) { // Don't send an email a credit slip is created (not configurable in backoffice) if ($template == 'credit_slip') { return true; } return parent::Send($id_lang, $template, $subject, $template_vars, $to, $to_name, $from, $from_name, $file_attachment, $mode_smtp, $template_path, $die, $id_shop, $bcc, $reply_to); } } De esta manera cuando: Esto lo que hace es cuando se ejecuta en alguna parte del codigo del otro lado la función @Mail::Send( (int)$order->id_lang, 'credit_slip', pasandole el parametro (nombre plantilla) credit_slip se corta la ejecución y en principio no se envia el email. Fijate que aquí: if ($template == 'credit_slip') { return true; } hace la comprobación y $template es el nombre de la plantilla que le pasas a la función: public static function Send($id_lang, $template..... Que si te fijas en el otro controlador que mencionan hace "Mail (clase Mail):send (funcion enviar de la clase Mail) y luego le pasa los parametros. Por eso en principio yo creo que si haces el override de la clase Mail.php con lo que te he pegado (que no es mi codigo, sino el que dice en el otro tema, en principio no se tiene que enviar ese email) Link to comment Share on other sites More sharing options...
SergioE Posted May 7, 2017 Author Share Posted May 7, 2017 Vale lo pruebo y te digo. En versiones de Prestashop 1.6.1.x hay posibilidad en la ficha del cliente los ultimos emails enviados, pero yo en mi versión (1.6.0.9) no puedo ver esos emails, de tal forma que no se si se le envía al cliente o no. De que manera puedo averiguarlo? O puedo añadir ese bloque que aparece en las versiones 1.6.1.x? Gracias nadie! Link to comment Share on other sites More sharing options...
SergioE Posted May 8, 2017 Author Share Posted May 8, 2017 Me refiero a este bloque, se puede poner en 1.6.0.9? O como se si se envían o no estos emails? Link to comment Share on other sites More sharing options...
SergioE Posted May 8, 2017 Author Share Posted May 8, 2017 Nadie sabe como verificar si se envío email o no? Necesito saberlo urgente :/ Link to comment Share on other sites More sharing options...
nadie Posted May 8, 2017 Share Posted May 8, 2017 Me refiero a este bloque, se puede poner en 1.6.0.9? O como se si se envían o no estos emails? Vale lo pruebo y te digo. En versiones de Prestashop 1.6.1.x hay posibilidad en la ficha del cliente los ultimos emails enviados, pero yo en mi versión (1.6.0.9) no puedo ver esos emails, de tal forma que no se si se le envía al cliente o no. De que manera puedo averiguarlo? O puedo añadir ese bloque que aparece en las versiones 1.6.1.x? Gracias nadie! ¿Mirastes si la opción la incorporaron en futuras variantes de las versiones en el changelog o es una opción que se activa en el panel? El changelog: https://www.prestashop.com/es/versiones-para-programadores/registro-de-cambios/1.6.0.11-stable (1.6.0.11) https://www.prestashop.com/es/versiones-para-programadores/registro-de-cambios/1.6.0.12-stable (1.6.0.12) ect.. Aqui: https://www.prestashop.com/es/versiones-para-programadores#previous-version tienes todas las versiones, mira ver si realmente la implantaron en alguna o es una opción propia de presta que tambien funciona en la tu variante de la 1.6, en el changelog puedes ver los cambios Link to comment Share on other sites More sharing options...
nadie Posted May 8, 2017 Share Posted May 8, 2017 Nadie sabe como verificar si se envío email o no? Necesito saberlo urgente :/ En principio no se envia )) Eso esta comprobado )) (Si haces lo de la clase Mail.php no tiene porque enviarse..) De todos modos, es tan sencillo, como que hagas una instalacion basica si quieres, te hagas un pedido, con usuario, hagas el procedimiento en el que se envia el email, y comprobaras que al usuario no le llega. (vamos que solo cuesta 5 minutos hacer las pruebas) Link to comment Share on other sites More sharing options...
SergioE Posted May 8, 2017 Author Share Posted May 8, 2017 Es esto? https://www.prestashop.com/es/versiones-para-programadores/registro-de-cambios/1.6.0.11-stable [+] BO : added email log to the customer page Link to comment Share on other sites More sharing options...
SergioE Posted May 8, 2017 Author Share Posted May 8, 2017 En principio no se envia )) Eso esta comprobado )) (Si haces lo de la clase Mail.php no tiene porque enviarse..) De todos modos, es tan sencillo, como que hagas una instalacion basica si quieres, te hagas un pedido, con usuario, hagas el procedimiento en el que se envia el email, y comprobaras que al usuario no le llega. (vamos que solo cuesta 5 minutos hacer las pruebas) Si, hice un localhost para hacerlo y me da problemas con la configuración de emails. No he podido resolverlo, no se porque no me deja usando Xampp (Php 5.6). Link to comment Share on other sites More sharing options...
SergioE Posted May 8, 2017 Author Share Posted May 8, 2017 Vale, he podido hacerlo con otro dominio y es que directamente no envía ningún email. Es posible que en la versión 1.6.0.9 no envíe ningun email pero al actualizar a 1.6.1.x sea un bug corregido o algo? 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