mxlweb Posted January 28, 2015 Share Posted January 28, 2015 (edited) 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 February 10, 2015 by mxlweb (see edit history) Link to comment Share on other sites More sharing options...
mxlweb Posted February 6, 2015 Author Share Posted February 6, 2015 ¿Nadie me puede echar una mano?... por favor, es importante esto. Gracias! Link to comment Share on other sites More sharing options...
mxlweb Posted February 6, 2015 Author Share Posted February 6, 2015 Perdón, no sabía que eso molestaba. Muchas gracias por el apunte. Link to comment Share on other sites More sharing options...
Javier Terrón Posted February 6, 2015 Share Posted February 6, 2015 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 More sharing options...
ventura Posted February 6, 2015 Share Posted February 6, 2015 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 More sharing options...
mxlweb Posted February 9, 2015 Author Share Posted February 9, 2015 Muchas gracias por vuestras respuestas. Voy a probar ambas soluciones a ver si consigo que no se envíe el e-mail y si funciona lo doy por cerrado y solucionado. Un saludo! Link to comment Share on other sites More sharing options...
mxlweb Posted February 9, 2015 Author Share Posted February 9, 2015 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 More sharing options...
ventura Posted February 9, 2015 Share Posted February 9, 2015 Para comentar codigo hazlo asi, lo ideal sería un override /* codigo aqui */ Con lo de la plantilla renonbrandola se produce un error de plantilla no encontrada, de ahi que no te aplique los cambios e manera instantanea Link to comment Share on other sites More sharing options...
mxlweb Posted February 9, 2015 Author Share Posted February 9, 2015 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 More sharing options...
ventura Posted February 9, 2015 Share Posted February 9, 2015 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 More sharing options...
mxlweb Posted February 10, 2015 Author Share Posted February 10, 2015 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 More sharing options...
ventura Posted February 10, 2015 Share Posted February 10, 2015 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 More sharing options...
mxlweb Posted February 10, 2015 Author Share Posted February 10, 2015 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 More sharing options...
Recommended Posts