Jump to content

Ayuda con asunto mensaje pedido cliente SOLUCIONADO


resplandor2010

Recommended Posts

Buenos días a todos:

 

Llevo varios días, buscando en internet, y en los foros una solución, o indicación de como cambiar el asunto de los correos que se envian cuando hacen un pedido.

 

Anteriormente, tenía prestashop 1.2, y lo tenía controlado, pero recientemente he actualizado a la 1.4.6 y aunque lo he podido arreglar casi todo, esto del asunto se me resiste.

 

He modificado las traducciones de las plantillas de correo, pero como si no hiciese caso de dichas modificaciones. También he cambiado el asunto en el archivo PaymentModule.php, pero tampoco funciona, y llegan los correos a los clientes con el "Order confirmation".

 

Yo quiero traducir eso, y que añada el número del pedido en el asunto, pero no doy con ello. El que me llega ami, si viene así, pero como es de otro módulo, no funciona igual.

 

Agradecería cualquier ayuda o indicación.

 

Un saludo

Link to comment
Share on other sites

 

 


Buenos días a todos:

Llevo varios días, buscando en internet, y en los foros una solución, o indicación de como cambiar el asunto de los correos que se envian cuando hacen un pedido.

Anteriormente, tenía prestashop 1.2, y lo tenía controlado, pero recientemente he actualizado a la 1.4.6 y aunque lo he podido arreglar casi todo, esto del asunto se me resiste.

He modificado las traducciones de las plantillas de correo, pero como si no hiciese caso de dichas modificaciones. También he cambiado el asunto en el archivo PaymentModule.php, pero tampoco funciona, y llegan los correos a los clientes con el "Order confirmation".

Yo quiero traducir eso, y que añada el número del pedido en el asunto, pero no doy con ello. El que me llega ami, si viene así, pero como es de otro módulo, no funciona igual.

Agradecería cualquier ayuda o indicación.

Un saludo



Bueno lo primero es que en mails/idioma/lang.php es donde se traducen los asuntos de los emails generales.

Ahora si lo que quieres es por ejemplo, añadir, como sale por ejemplo Pedido

Te doy una pista en el mailalerts.php si buscas encuentras esto:
$subject = $this->l('New order').' - '.sprintf('%06d', $order->id);

Ahora con esa pista, y comparando los dos ficheros el de PaymentModule.php y mailalerts.php, estaras cerca de encontrar tu solucion.

 
Link to comment
Share on other sites

Bueno lo primero es que en mails/idioma/lang.php es donde se traducen los asuntos de los emails generales.

 

Ahora si lo que quieres es por ejemplo, añadir, como sale por ejemplo Pedido

 

Te doy una pista en el mailalerts.php si buscas encuentras esto:

$subject = $this->l('New order').' - '.sprintf('%06d', $order->id);

 

Ahora con esa pista, y comparando los dos ficheros el de PaymentModule.php y mailalerts.php, estaras cerca de encontrar tu solucion.

 

:)

 

Gracias por tu respuesta. pero eso ya lo estuve mirando, y o no lo hago bien, o no funciona.

 

Como son 2 líneas diferentes, y yo de programación, se lo justo, no acabo de configurar muy bien la línea.

 

Tengo esto

Mail::Send((int)$order->id_lang, 'order_conf', Mail::l('Order confirmation', (int)$order->id_lang), $data, $customer->email, $customer->firstname.' '.$customer->lastname, NULL, NULL, $fileAttachment);

 

¿Exactamente como debería de ponerlo, para que me salga igual que el otro?

 

Gracias de antemano.

Link to comment
Share on other sites

Hola:

 

La verdad, es que no consigo de ninguna manera, que en el asunto que le llega al cliente cuando hace un pedido aparezca el número del pedido.

 

He consegido tarducir el "Order confirmed", modificandolo directamente de los archivos "PaymentModule.php" y "maofree_cashondeliveryfee.php", pues dependiendo de la forma de pago, actuaba uno u otro.

 

Sin embargo, no consigo que en el asunto ponga el nº de pedido.

 

Si alguien me puede ayudar, se lo agradeceré mucho.

Link to comment
Share on other sites

Hola:

 

La verdad, es que no consigo de ninguna manera, que en el asunto que le llega al cliente cuando hace un pedido aparezca el número del pedido.

 

He consegido tarducir el "Order confirmed", modificandolo directamente de los archivos "PaymentModule.php" y "maofree_cashondeliveryfee.php", pues dependiendo de la forma de pago, actuaba uno u otro.

 

Sin embargo, no consigo que en el asunto ponga el nº de pedido.

 

Si alguien me puede ayudar, se lo agradeceré mucho.

Otra pista:

Fijate en el Mail::Send, del mailalerts.php y en el Mail::Send del PaymentModule.

Link to comment
Share on other sites

Otra pista:

Fijate en el Mail::Send, del mailalerts.php y en el Mail::Send del PaymentModule.

 

Gracias por tu interés, pero por mucho que miro, no encuentro la relación.

 

En uno, el asunto, es

$subject = $this->l('New order').' - '.sprintf('%06d', $order->id);

y en el otro

Mail::Send((int)$order->id_lang, 'order_conf', Mail::l('Pedido confirmado', (int)$order->id_lang), $data, $customer->email,
$customer->firstname.' '.$customer->lastname, NULL, NULL, $fileAttachment);

 

Por mucho que miro, y con mis pocos conocimientos, me es imposible poder fusionar el primero con el segundo.

 

He hecho infinidad de pruebas, y el resultado, ha sido que no envía ningún correo, porque lo hago mal.

 

Debe ser algo sencillo, pero no doy con ello.

 

Sigo buscando alguien, que me diga como se soluciona.

 

Un saludo

Link to comment
Share on other sites

Gracias por tu interés, pero por mucho que miro, no encuentro la relación.

 

En uno, el asunto, es

$subject = $this->l('New order').' - '.sprintf('%06d', $order->id);

y en el otro

Mail::Send((int)$order->id_lang, 'order_conf', Mail::l('Pedido confirmado', (int)$order->id_lang), $data, $customer->email,
$customer->firstname.' '.$customer->lastname, NULL, NULL, $fileAttachment);

 

Por mucho que miro, y con mis pocos conocimientos, me es imposible poder fusionar el primero con el segundo.

 

He hecho infinidad de pruebas, y el resultado, ha sido que no envía ningún correo, porque lo hago mal.

 

Debe ser algo sencillo, pero no doy con ello.

 

Sigo buscando alguien, que me diga como se soluciona.

 

Un saludo

Otra pista:

En el fichero PaymentModule.php tienes por ejemplo esto:

Mail::Send((int)$order->id_lang, 'order_conf', Mail::l('Order confirmation', (int)$order->id_lang), $data, $customer->email, $customer->firstname.' '.$customer->lastname, NULL, NULL, $fileAttachment);

 

Y en el mailalerts.php

esto:

 Mail::Send($id_lang, $template, $subject, $templateVars, explode(self::__MA_MAIL_DELIMITOR__, $this->_merchant_mails), NULL, $configuration['PS_SHOP_EMAIL'], $configuration['PS_SHOP_NAME'], NULL, NULL, dirname(__FILE__).'/mails/');

Link to comment
Share on other sites

Otra pista:

En el fichero PaymentModule.php tienes por ejemplo esto:

Mail::Send((int)$order->id_lang, 'order_conf', Mail::l('Order confirmation', (int)$order->id_lang), $data, $customer->email, $customer->firstname.' '.$customer->lastname, NULL, NULL, $fileAttachment);

 

Y en el mailalerts.php

esto:

 Mail::Send($id_lang, $template, $subject, $templateVars, explode(self::__MA_MAIL_DELIMITOR__, $this->_merchant_mails), NULL, $configuration['PS_SHOP_EMAIL'], $configuration['PS_SHOP_NAME'], NULL, NULL, dirname(__FILE__).'/mails/');

 

Sigo sin ver la relación del uno con el otro. en uno el asunto se genera por

Mail::l('Order confirmation',

que es lo que quiero cambiar. Pero como ajusto ahí, para que imprima el número de pedido.

 

Se supone que poniendo ahí lo de

.sprintf('%06d', $order->id)

pero bien puesto, debería de funcionar. Sin embargo yo no soy capaz de ponerlo correctamente.

Link to comment
Share on other sites

Sigo sin ver la relación del uno con el otro. en uno el asunto se genera por

Mail::l('Order confirmation',

que es lo que quiero cambiar. Pero como ajusto ahí, para que imprima el número de pedido.

 

Se supone que poniendo ahí lo de

.sprintf('%06d', $order->id)

pero bien puesto, debería de funcionar. Sin embargo yo no soy capaz de ponerlo correctamente.

fijate en que almacena la variable $subject

Link to comment
Share on other sites

como que no servirá ??? a mi me sirve.. yo lo hago y me funciona..no hay nada imposible con php y prestashop :)

 El enlace que has pasado, es para traducir el asunto de los emails, eso ya lo sabe el. lo que quiere y es sencillo hacerlo, es que en la confirmacion del pedido del cliente el asunto del mensaje sea "Confirmacion del Pedido: Numero del Pedido".

Un saludo,

Link to comment
Share on other sites

Hola:

 

Sigo con lo mismo, y se que para vosotros será facil, pero yo no lo consigo.

 

Además hay algo que no me anda fino, y es que cuando modifico las plantillas de los correos a través del back-ofiice, no me hace caso, y se desconfiguran.

 

Para hacerlo correctamente, tengo que modificarlo a través del dreamweaver, pues desde prestahop, no me funciona, y cada vez que abro las plantillas, estas vueleven a estar mal.

 

Lo unico que he podido configurar, es la traducción (desde el mismo aechivo, pues desde el programa no me funciona), pero lo de poner el número de pedido, lo veo muy dificil, porque yo de programación no entiendo, y lo único que hago es fijarme en los archivos, pero en este caso no doy con la tecla.

 

Sigo esperando que alguien me indique como solucionarlo.

 

Gracias.

Link to comment
Share on other sites

Hola:

 

Sigo con lo mismo, y se que para vosotros será facil, pero yo no lo consigo.

 

Además hay algo que no me anda fino, y es que cuando modifico las plantillas de los correos a través del back-ofiice, no me hace caso, y se desconfiguran.

 

Para hacerlo correctamente, tengo que modificarlo a través del dreamweaver, pues desde prestahop, no me funciona, y cada vez que abro las plantillas, estas vueleven a estar mal.

 

Lo unico que he podido configurar, es la traducción (desde el mismo aechivo, pues desde el programa no me funciona), pero lo de poner el número de pedido, lo veo muy dificil, porque yo de programación no entiendo, y lo único que hago es fijarme en los archivos, pero en este caso no doy con la tecla.

 

Sigo esperando que alguien me indique como solucionarlo.

 

Gracias.

Otra Pista: :)

 

if (Validate::isEmail($customer->email)) {

// Mail::Send((int)$order->id_lang, 'order_conf', Mail::l('Order confirmation', (int)$order->id_lang), $data, $customer->email, $customer->firstname.' '.$customer->lastname, NULL, NULL, $fileAttachment);

$subject = $this->l('Pedido Confirmado, Num Pedido:').' - '.sprintf('%06d', $order->id);

Mail::Send((int)$order->id_lang, 'order_conf', $subject, $data, $customer->email, $customer->firstname.' '.$customer->lastname, NULL, NULL, $fileAttachment);

}

Link to comment
Share on other sites

Otra Pista: :)

 

if (Validate::isEmail($customer->email)) {

// Mail::Send((int)$order->id_lang, 'order_conf', Mail::l('Order confirmation', (int)$order->id_lang), $data, $customer->email, $customer->firstname.' '.$customer->lastname, NULL, NULL, $fileAttachment);

$subject = $this->l('Pedido Confirmado, Num Pedido:').' - '.sprintf('%06d', $order->id);

Mail::Send((int)$order->id_lang, 'order_conf', $subject, $data, $customer->email, $customer->firstname.' '.$customer->lastname, NULL, NULL, $fileAttachment);

}

 

¡Por fin...! Muchas gracias nadie.

 

La verdad, es que me gusta aprender, y no que te den las cosas hechas y simplemente pegarlas. Pero los pocos conocimiento que tengo, a veces son insuficientes para conseguir los propositos.

 

Yo ya estaba poniendo las variables, pero no conseguia que cuaudrase todo, y lo único que conseguía era que no se enviase el correo.

 

Por cierto, en el código que me has indicado, he tendido que borrar la llave

{

quedando así

if (Validate::isEmail($customer->email))
// Mail::Send((int)$order->id_lang, 'order_conf', Mail::l('Order confirmation', (int)$order->id_lang),
$data, $customer->email, $customer->firstname.' '.$customer->lastname, NULL, NULL,
$fileAttachment);
$subject = $this->l('Pedido Confirmado, Num Pedido:').' - '.sprintf('%06d', $order->id);
Mail::Send((int)$order->id_lang, 'order_conf', $subject, $data, $customer->email,
$customer->firstname.' '.$customer->lastname, NULL, NULL, $fileAttachment);
}

 

Pues como tu habías puesto, al entrar a la cesta, o hacer el pedido, daba error.

 

Lo dicho muchas gracias a nadie y a todos los que participan en este foro, y a seguir aprendiendo.

Link to comment
Share on other sites

¡Por fin...! Muchas gracias nadie.

 

La verdad, es que me gusta aprender, y no que te den las cosas hechas y simplemente pegarlas. Pero los pocos conocimiento que tengo, a veces son insuficientes para conseguir los propositos.

 

Yo ya estaba poniendo las variables, pero no conseguia que cuaudrase todo, y lo único que conseguía era que no se enviase el correo.

 

Por cierto, en el código que me has indicado, he tendido que borrar la llave

{

quedando así

if (Validate::isEmail($customer->email))
// Mail::Send((int)$order->id_lang, 'order_conf', Mail::l('Order confirmation', (int)$order->id_lang),
$data, $customer->email, $customer->firstname.' '.$customer->lastname, NULL, NULL,
$fileAttachment);
$subject = $this->l('Pedido Confirmado, Num Pedido:').' - '.sprintf('%06d', $order->id);
Mail::Send((int)$order->id_lang, 'order_conf', $subject, $data, $customer->email,
$customer->firstname.' '.$customer->lastname, NULL, NULL, $fileAttachment);
}

 

Pues como tu habías puesto, al entrar a la cesta, o hacer el pedido, daba error.

 

Lo dicho muchas gracias a nadie y a todos los que participan en este foro, y a seguir aprendiendo.

 

 

Déjalo así exactamente:

 

if (Validate::isEmail($customer->email)) {

// Mail::Send((int)$order->id_lang, 'order_conf', Mail::l('Order confirmation', (int)$order->id_lang),

$data, $customer->email, $customer->firstname.' '.$customer->lastname, NULL, NULL,

$fileAttachment);

$subject = $this->l('Pedido Confirmado, Num Pedido:').' - '.sprintf('%06d', $order->id);

Mail::Send((int)$order->id_lang, 'order_conf', $subject, $data, $customer->email,

$customer->firstname.' '.$customer->lastname, NULL, NULL, $fileAttachment);

}

} // puesto que esta llave cierra otra (es decir esta llave la dejas), y ademas pones las dos llaves que he puesto

Link to comment
Share on other sites

Déjalo así exactamente:

 

if (Validate::isEmail($customer->email)) {

// Mail::Send((int)$order->id_lang, 'order_conf', Mail::l('Order confirmation', (int)$order->id_lang),

$data, $customer->email, $customer->firstname.' '.$customer->lastname, NULL, NULL,

$fileAttachment);

$subject = $this->l('Pedido Confirmado, Num Pedido:').' - '.sprintf('%06d', $order->id);

Mail::Send((int)$order->id_lang, 'order_conf', $subject, $data, $customer->email,

$customer->firstname.' '.$customer->lastname, NULL, NULL, $fileAttachment);

}

} // puesto que esta llave cierra otra (es decir esta llave la dejas), y ademas pones las dos llaves que he puesto

 

No me funciona como dices, ni de este modo, ni con el anterior. De las 2 maneras, al entrar en la cesta o hacer el pedido sale

"El sitio web no puede mostrar la página"

 

Sin embargo como yo te he dicho, si funciona, y me llegan los correos con el número de pedido.

 

No se el porqué, pues como he comentado no soy programador, pero he quitado esa llave, pues en el original no la hay y aparentemente funciona todo correctamente.

Link to comment
Share on other sites

No me funciona como dices, ni de este modo, ni con el anterior. De las 2 maneras, al entrar en la cesta o hacer el pedido sale

"El sitio web no puede mostrar la página"

 

Sin embargo como yo te he dicho, si funciona, y me llegan los correos con el número de pedido.

 

No se el porqué, pues como he comentado no soy programador, pero he quitado esa llave, pues en el original no la hay y aparentemente funciona todo correctamente.

Te subo el fichero. Sustitúyelo y dime si te salta error. :)

PaymentModule.php

Link to comment
Share on other sites

Te subo el fichero. Sustitúyelo y dime si te salta error. :)

 

He puesto el fichero que me has dado, y este funciona correctamente.

 

Es algo raro, pues si copio y pego la parte afectada, no funciona, y con tu archivo si.

 

He comparado ambos archivos con winmerge, y aparte de algunas líneas, que no tiene nada que ver con las llaves, lo demás es igual.

 

No se que hacer, si dejar el tuyo, o el mio que funciona sin la llave.

 

La lineas que cambian, son estas:

$customer_message = $order->getFirstMessage();
'{message}' => $customer_message,

Yo no las tengo

y esta

'{payment}' => $order->payment,

yo la tengo así

'{payment}' => Tools::substr($order->payment, 0, 32),

 

Todo lo demás, menos el codigo en cuestión, es igual. ¿Que me recomiendas?

Link to comment
Share on other sites

Sube mi fichero, (esta verificado en la 1.4.6.X de prestashop). :)

 

De acuerdo, lo dejaré con el tuyo. Mas que nada, lo preguntaba, porque yo había actualizado de la 1.2, y quizás las diferencias hacian falta para algun otro modulo.

 

Estaba haciendo pruebas con el otro archivo afectado, el del contrarreembolso, y me estaba pasando lo mismo, pero al final averigué la causa.

 

Si pego el código directamente del archivo que me has pasado, todo funciona correctamente. Si pego el código de este post, no me funciona.

 

Por lo cual deduzco, que algun espacio en blanco, o algo no está bien en el código aquí expuesto.

 

Tema resuelto. gracias.

Link to comment
Share on other sites

De acuerdo, lo dejaré con el tuyo. Mas que nada, lo preguntaba, porque yo había actualizado de la 1.2, y quizás las diferencias hacian falta para algun otro modulo.

 

Estaba haciendo pruebas con el otro archivo afectado, el del contrarreembolso, y me estaba pasando lo mismo, pero al final averigué la causa.

 

Si pego el código directamente del archivo que me has pasado, todo funciona correctamente. Si pego el código de este post, no me funciona.

 

Por lo cual deduzco, que algun espacio en blanco, o algo no está bien en el código aquí expuesto.

 

Tema resuelto. gracias.

Bueno, lo importante es que se soluciono.

 

Un saludo, y recuerda que estaremos por el foro para guiarte por este mundo lleno de oscuridad y tinieblas.

Link to comment
Share on other sites

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