Jump to content

Adjuntar factura en cambio de estados del pedido


achura

Recommended Posts

No sé porque ya no me adjunta las facturas en el email de confirmacion del pedido. Creo que modifiqué algo hace tiempo...es igual lo que realmente necesito es:

 

Cuando cambie a un estado el pedido (p.e. pago aceptado) el correo que reciba el cliente lleve adjunto la factura.

 

Esto mismo con cualquier otro estado, es decir un par de estados me permitan hacer esto (p.e. el de pago aceptado y otro que yo genere)

 

he mirado en foros ingles pero nada... ni siquiera un modulito

 

Gracias

Link to comment
Share on other sites

  • 6 months later...

Hola,

 

Después de googlear sobre esto y encontrar muchos posts como este, pero ninguno con una solución gratis me he puesto con ello y lo he resuelto en Prestashop 1.4.9

 

Se debe añadir el siguiente código en el archivo /classes/Mail.php en la función Send() justo antes de la linea con el comentario: /* Send mail */ (en mi archivo, línea 201):

 

if (strpos($template, 'payment')){
   $id_factura = $templateVars['{id_order}'];
   $orden = new Order($id_factura);
   $factura['content'] = PDF::invoice($orden, 'S');
   $factura['name'] = $id_factura.'.pdf';
   $factura['mime'] = 'application/pdf';
   $message->attach(new Swift_Message_Attachment($factura['content'], $factura['name'], $factura['mime']));
  }

 

Este código adjunta la factura al email de 'Pago aceptado'. Si se quiere adjuntar a otros mails hay que ver cual es el nombre de la plantilla y añadirlo a la condicón en la sentencia if. Por ejemplo, si quisieramos adjuntar la factura también en los mensajes 'Pedido enviado' nuestro código debería ser el siguiente:

 

if (strpos($template, 'payment' || strpos($template, 'shipped')){
   $id_factura = $templateVars['{id_order}'];
   $orden = new Order($id_factura);
   $factura['content'] = PDF::invoice($orden, 'S');
   $factura['name'] = $id_factura.'.pdf';
   $factura['mime'] = 'application/pdf';
   $message->attach(new Swift_Message_Attachment($factura['content'], $factura['name'], $factura['mime']));
  }

 

Espero que ayude a alguien, saludos.

 

Ivan.

Link to comment
Share on other sites

  • 3 months later...
  • 2 months later...

Es sencillo. Solo hay que editar el archivo /classes/order/OrderHistory.php

En la linea 416.

 

Donde pone:

if ((int)$result['id_order_state'] === 2 && (int)Configuration::get('PS_INVOICE') && $order->invoice_number)

Modificarlo por:

if (((int)$result['id_order_state'] === 2||(int)$result['id_order_state'] === 14) && (int)Configuration::get('PS_INVOICE') && $order->invoice_number)

Donde 14 es el id del estado que quieres que también adjunte la factura en PDF cuando se cambie a este. En este caso es un nuevo estado que he creado que tiene id 14, pero podría ser cualquier otro número.

Se pueden añadir tantos estados como se desee. Simplemente hay que añadir después del 

||(int)$result['id_order_state'] === 14

, este código (donde XX es el número del estado que quieres que también tenga adjuntada una factura en PDF):

||(int)$result['id_order_state'] === XX
  • Like 1
Link to comment
Share on other sites

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