Jump to content

Edit History

JairoA

JairoA

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
 

JairoA

JairoA

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
 

×
×
  • Create New...