Jump to content

Desactivar email confirmación de pedido según método de pago PS1.7.6 [Solucionado]


JairoA

Recommended Posts

Hola a todos!

Tengo entre manos el siguiente objetivo: Evitar que prestashop envíe el email de confirmación de pedido cuando el pedido se haya pagado con "pago con tarjeta".

La forma habitual de elegir cúando se envía emails es asociando un email a un estado de pedido (pago aceptado, envíado, cancelado, etc). Pero en este caso lo que necesito es establecer una regla que evite envíar los emails, asociados a esos estados, en el caso de que el pedido se haya pagado con tajeta

Por ejemplo, en la tienda te pueden pagar con paypal, con baintre, amazon pay, etc. Y todos estos pedidos se generan con el estado "pago aceptado" y la tienda envía un email de confirmación de pedido. Pues lo que quiero hacer es que esos emails se sigan enviando con normalidad excepto en un método de pago "pago con tarjeta". (Digo pago con tarjeta porque es el más habitual pero imagino que el proceso será el mismo para otros métodos de pago una vez averigue como hacerlo.)

Y como llevo un rato buscando el archivo donde se controla el envío de emails sin conseguir absolutamente nada, aquí estoy, pidiendo socorro a la comunidad.

Espero que alguien pueda ayudarme y de antemano muchas gracias por vuestro tiempo

saludos

 

Edited by JairoA (see edit history)
Link to comment
Share on other sites

  • 2 weeks later...

Hola @Luisejo


Muchas gracias por tu respuesta. En efecto, desde esa pantalla se puede elegir el email que se quiere enviar en cada estado de pedido. Pero existe un email, el email de confirmación de pedido (order_conf) que prestashop envía automáticamente cada vez que entra un pedido en la tienda.

Lo que estaba buscando es la manera de desactivar ese email en determinador métodods de pago, es decir, no quiero enviar ese email cuando el cliente pague con tarjeta (redsys), por ejemplo. Y he encontrado la manera de hacerlo basándome en este post:

https://victor-rodenas.com/2017/04/10/evitar-que-el-cliente-reciba-el-email-de-confirmacion-en-prestashop/

En el post se puede encontrar la manera de evitar que el cliente reciba el email de confirmación de pedido comentando una parte del código de /classes/PaymentModule.php Y siguiendo esa lógica se puede desactivar ese email teniendo en cuenta el método de pago.

En vez de comentar el código del post, se puede agregar una condición al if que está antes de Mail::send. Así es como lo he dejado yo:

if (Validate::isEmail($this->context->customer->email) && stristr($order->payment, 'Redsys') == FALSE) {
                            Mail::Send(
                                (int) $order->id_lang,
                                'order_conf',
                                Context::getContext()->getTranslator()->trans(
                                    'Order confirmation',
                                    array(),
                                    'Emails.Subject',
                                    $orderLanguage->locale
                                ),
                                $data,
                                $this->context->customer->email,
                                $this->context->customer->firstname . ' ' . $this->context->customer->lastname,
                                null,
                                null,
                                $file_attachement,
                                null,
                                _PS_MAIL_DIR_,
                                false,
                                (int) $order->id_shop
                            );
                        }

De esa forma el email de confirmación de pedido se sigue enviando excepto cuando el pedido haya usado como método de pago "Redsys".


No sé si es la manera adecuada de hacerlo o la más optima pero lleva una semana funcionando y no da problemas. Espero que a alguien le sirva y si he cometido un gran error que alguien me abra los ojos jeje.

Saludos
 

Edited by JairoA (see edit history)
  • Thanks 1
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...