Jump to content

¡Solucionado! - Quitar envío de e-mail cuando se modifica un pedido


Recommended Posts

Hola a todos,

 

Tengo una gran duda, ya que no encuentro como hacerlo en este caso.

 

La cuestión es que si a un cliente le modifico su pedido (por ejemplo, le cambio de 1 unidad a 2 una vez el pedido está hecho), le envía automáticamente un e-mail indicando que su pedido ha sufrido una modificación.

 

En los "ESTADOS DE PEDIDO" sé como quitar ese envío o como modificar la plantilla del mail, pero en este caso no sé donde tengo que tocar para quitar que ese e-mail se envíe.

 

¿Alguien me puede ayudar?

 

Gracias!

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

  • 2 weeks later...

Hola a todos,

 

Tengo una gran duda, ya que no encuentro como hacerlo en este caso.

 

La cuestión es que si a un cliente le modifico su pedido (por ejemplo, le cambio de 1 unidad a 2 una vez el pedido está hecho), le envía automáticamente un e-mail indicando que su pedido ha sufrido una modificación.

 

En los "ESTADOS DE PEDIDO" sé como quitar ese envío o como modificar la plantilla del mail, pero en este caso no sé donde tengo que tocar para quitar que ese e-mail se envíe.

 

¿Alguien me puede ayudar?

 

Gracias!

 

Creo que quieres decir que se marque como pedido modificado pero que el cliente no reciba ningún correo, ¿verdad?

 

Si es así, tienes que modificar el estado del Pedido Modificado y dentro de las opciones hay una que pone "Enviar un e-mail al cliente cuando una orden cambie a este estado" que estará marcada. Desmarcala y veras que la parte de "plantillas" desaparece. Guarda y ya esta.

Link to comment
Share on other sites

Para hacer lo que quieres tienes que editar el archivo

controllers/AdminOrdersControllers.php

Y comentar la funcion

public function sendChangedNotification(

Como modo apaño para salir del paso puedes renombrar las plantillas

mails/es/order_changed
themes/tu_tema/mails/es/order_changed
Link to comment
Share on other sites

Hola de nuevo,

La solución de Javier Terrón, no es la que necesito en este caso, pero te agradezco la ayuda, ya que así me informo de mas cosas.

 

La solución de Ventura voy por partes:

 

No entiendo muy bien como va, pero si comento esto así //public function sendChangedNotification o así public function //sendChangedNotification (No sé si está bien hecho) al entrar en el Backoffice de Presashop a Pedidos>Pedidos se me queda la pantalla en blanco.

 

En cuanto a la solución de cambiar el nombre de mails/es/order_changed o themes/tu_tema/mails/es/order_changed funciona y no envía el e-mail, pero al modificar el pedido no lo hace del todo correcto pues doy a "Aceptar" en el pop-up que aparece y se queda sin hacer, aparentemente, nada. Sin embargo refresco la página y se ha realizado el cambio.

 

El caso es que la segunda solución valdría, pero es un poco "rollo" el tener que actualizar para que se aplique realmente el cambio y no lo haga directamente.

 

¿He hecho bien lo del comentario? si no es así, decirme que poner por favor.

Link to comment
Share on other sites

Hola Ventura,

Gracias de nuevo por la rápida respuesta y ruego disculpes mi torpeza, pero he probado como me has dicho a ponerlo de varias formas y en unas me deja en blanco la pantalla al entrar a pedidos y de otra forma, me pasa como al cambiar el nombre a la plantilla,me deja hacer los cambios, pero tengo que refrescar la página para que me los aplique.

 

Exactamente, ¿Dónde debería poner eso que me dices, dentro de este extracto del código, que creo es el que me has indicado?

$this->sendChangedNotification($order);

		die(Tools::jsonEncode(array(
			'result' => true,
			'view' => $this->createTemplate('_product_line.tpl')->fetch(),
			'can_edit' => $this->tabAccess['add'],
			'order' => $order,
			'invoices' => $invoice_array,
			'documents_html' => $this->createTemplate('_documents.tpl')->fetch(),
			'shipping_html' => $this->createTemplate('_shipping.tpl')->fetch(),
			'discount_form_html' => $this->createTemplate('_discount_form.tpl')->fetch()
		)));
	}
	
	public function sendChangedNotification(Order $order = null)
	{
		if (is_null($order))
			$order = new Order(Tools::getValue('id_order'));
		
		$data = array(
			'{lastname}' => $order->getCustomer()->lastname,
			'{firstname}' => $order->getCustomer()->firstname,
			'{id_order}' => (int)$order->id,
			'{order_name}' => $order->getUniqReference()
		);
		
		Mail::Send(
			(int)$order->id_lang,
			'order_changed',
			Mail::l('Your order has been changed', (int)$order->id_lang),
			$data,
			$order->getCustomer()->email,
			$order->getCustomer()->firstname.' '.$order->getCustomer()->lastname,
			null, null, null, null, _PS_MAIL_DIR_, true, (int)$order->id_shop);
	}

	public function ajaxProcessLoadProductInformation()

De nuevo mil gracias y disculpas, pero no tengo mucha idea aunque me defienda un poco con algo de esto.

 

Un saludo.

Link to comment
Share on other sites

No tienes porque disculparte. Dejalo asi comentado

/*
	public function sendChangedNotification(Order $order = null)
	{
		if (is_null($order))
			$order = new Order(Tools::getValue('id_order'));

		$data = array(
			'{lastname}' => $order->getCustomer()->lastname,
			'{firstname}' => $order->getCustomer()->firstname,
			'{id_order}' => (int)$order->id,
			'{order_name}' => $order->getUniqReference()
		);

		Mail::Send(
			(int)$order->id_lang,
			'order_changed',
			Mail::l('Your order has been changed', (int)$order->id_lang),
			$data,
			$order->getCustomer()->email,
			$order->getCustomer()->firstname.' '.$order->getCustomer()->lastname,
			null, null, null, null, _PS_MAIL_DIR_, true, (int)$order->id_shop);
	}
*/
Link to comment
Share on other sites

Buenos días Ventura,

De nuevo darte las gracias. He copiado el código tal y como me lo has puesto y funciona, solo que cuando hago la modificación, pulso actualizar y luego aceptar en la ventana flotante, tengo que refrescar la página para que se quede correcto, pero así me vale.

 

Muchas gracias por la ayuda prestado, creo que ya lo puedo dejar como solucionado y que le sirva a otros de ayuda este post.

 

Un saludo y gracias a todos.

Link to comment
Share on other sites

Hola de nuevo, prueba mejor a dejarlo asi, sin comentar, solo añadiendo el return false

public function sendChangedNotification(Order $order = null)
	{
return false;
		if (is_null($order))
			$order = new Order(Tools::getValue('id_order'));

		$data = array(
			'{lastname}' => $order->getCustomer()->lastname,
			'{firstname}' => $order->getCustomer()->firstname,
			'{id_order}' => (int)$order->id,
			'{order_name}' => $order->getUniqReference()
		);

		Mail::Send(
			(int)$order->id_lang,
			'order_changed',
			Mail::l('Your order has been changed', (int)$order->id_lang),
			$data,
			$order->getCustomer()->email,
			$order->getCustomer()->firstname.' '.$order->getCustomer()->lastname,
			null, null, null, null, _PS_MAIL_DIR_, true, (int)$order->id_shop);
	}
Link to comment
Share on other sites

Probado, pero hace lo mismo que con el comentario. Al ir a cambiar el precio o las unidades, tengo que refrescar para que se quede correcto. 

 

A mi me vale como está, no me importa tener que refrescar, con que no llegue el e-mail me salva de todo. Si se encuentra una solución total mejor para todos los que tengamos este problema, pero si no, bastante os he molestado ya y mucha ayuda desinteresada me habéis ofrecido.

 

El caso es que es raro, porque anula el envío de e-mail todo funciona bien (el cambio de los estados de pedido si que los hace bien), pero solo falla el tema de actualizar precio o cantidad del producto.

 

Un saludo!

Link to comment
Share on other sites

Guest
This topic is now closed to further replies.
×
×
  • Create New...