Jump to content

Quitar Envío de Email (credit_slip)


SergioE

Recommended Posts

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

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

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

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

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

Me refiero a este bloque, se puede poner en 1.6.0.9? O como se si se envían o no estos emails?

:P

 

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

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

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

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

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 account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...