Por defecto el email de confirmación de compra de PrestaShop adjunta la factura pero ¿qué courre si quieres adjuntar otros documentos al email de confirmación de compra? En ocasiones, por imperativo legal es necesario adjuntar cláusulas o términos de compra especiales y, de momento, PrestaShop no dispone de esta funcionalidad y tampoco hay módulos que permitan adjuntar archivos a todos los emails por defecto, solamente los hay para añadir documentos adicionales a cada producto a los que el usuario puede acceder cuando compra un producto.
A continuación vamos a ver cómo adjuntar documentos PDF al email de confirmación de compra de compra en PrestaShop. Esto es algo que tendremos que hacer a nivel de programación tocando el CORE de PrestaShop.
Para ello vamos a entrar en la carpeta /classes/ de nuestra instalación de PrestaShop y vamos a editar el archivo llamado PaymentModule.php que se encarga de envir la factura una vez realizado el pedido. Allí vamos a buscar este código:
// Join PDF invoice if ((int)Configuration::get('PS_INVOICE') && $order_status->invoice && $order->invoice_number) { $order_invoice_list = $order->getInvoicesCollection(); Hook::exec('actionPDFInvoiceRender', array('order_invoice_list' => $order_invoice_list)); $pdf = new PDF($order_invoice_list, PDF::TEMPLATE_INVOICE, $this->context->smarty); $file_attachement['content'] = $pdf->render(false); $file_attachement['name'] = Configuration::get('PS_INVOICE_PREFIX', (int)$order->id_lang, null, $order->id_shop).sprintf('%06d', $order->invoice_number).'.pdf'; $file_attachement['mime'] = 'application/pdf'; } else { $file_attachement = null; }
Y lo vamos a reemplazar por este otro código:
// Join PDF invoice if ((int)Configuration::get('PS_INVOICE') && $order_status->invoice && $order->invoice_number) { $order_invoice_list = $order->getInvoicesCollection(); Hook::exec('actionPDFInvoiceRender', array('order_invoice_list' => $order_invoice_list)); $pdf = new PDF($order_invoice_list, PDF::TEMPLATE_INVOICE, $this->context->smarty); $attachment = array(); $attachment['content'] = $pdf->render(false); $attachment['name'] = Configuration::get('PS_INVOICE_PREFIX', (int)$order->id_lang, null, $order->id_shop).sprintf('%06d', $order->invoice_number).'.pdf'; $attachment['mime'] = 'application/pdf'; $extra_pdf = array(); $extra_pdf['content'] = Tools::file_get_contents(_PS_ROOT_DIR_.'/extradocs/DOCUMENTO1.pdf'); $extra_pdf['name'] = 'DOCUMENTO1.pdf'; $extra_pdf['mime'] = 'application/pdf'; $extra_pdf2 = array(); $extra_pdf2['content'] = Tools::file_get_contents(_PS_ROOT_DIR_.'/extradocs/DOCUMENTO2.pdf'); $extra_pdf2['name'] = 'DOCUMENTO2.pdf'; $extra_pdf2['mime'] = 'application/pdf'; $file_attachement = array($attachment, $extra_pdf, $extra_pdf2); } else { $file_attachement = null; }
Lo que estamos haciendo es adjuntar al email dos documentos que están localizados en una nueva carpeta llamada /extradocs/ dentro de nuestra instalación. Allí hemos subido DOCUMENTO1.pdf y DOCUMENTO2.pdf.
En palabras sencillas, lo que hemos hecho es pasar los adjuntos a un Array para que podamos añadir tantos PDF como sean necesarios. De esta forma podemos adjuntar a nuestro email de confirmación de compra los PDF que se requieran.