Simplemente mostrar el transporte contratado por parte del cliente puede ser de ayuda para la gestión de los pedidos y de la logística de una tienda online PrestaShop
En PrestaShop se pueden configurar distintos transportes con diferentes características y en ocasiones puede ser necesario añadir el transporte contratado por parte del cliente en el albarán de entrega o en la factura de PrestaShop para facilitar la logística y la gestión de los pedidos. Añadir el nombre del transporte en la factura o en el albarán es muy fácil y solo se debe hacer lo siguiente:
Editar los ficheros PHP de classes/pdf/HTMLTemplateInvoice.php para la factura o classes/pdf/HTMLTemplateDeliverySlip.php para el albarán. Al inspeccionar estos archivos PHP es necesario encontrar la función getContent() en torno a la línea 52.
public function getContent() {
Dentro de la función buscar la asignación de variables a SMARTY, tal que:
$this->smarty->assign(array( ...
Antes de la linea de asignación, se debe llamar a la clase Carrier para obtener los datos del transporte del pedido, por lo tanto se debe color previa a la asignación
$carrier = new Carrier((int)$this->order->id_carrier); $this->smarty->assign(array( ...
Por último se añade la variable $carrier dentro de la asignación de variables de Smarty, junto con el resto de variables que ya tenga, y que no se deben tocar. Para ello simplemente se añade una coma al final del último elemento y después la variable $carrier.
$carrier = new Carrier((int)$this->order->id_carrier); $this->smarty->assign(array( 'order' => $this->order, ... NO TOCAR EL RESTO 'carrier' => $carrier ));
Con estos cambios en el código fuente, ya están las variables asignadas a las plantillas de smarty, ahora solo queda mostrarlo en el PDF, para ello se edita pdf/invoice.tpl para la factura o pdf/delivery-slip.tpl para el albarán y colocaremos {$carrier->name} donde se deba mostrar el transporte contratado, por ejemplo se puede buscar el comentario <!– / CUSTOMER INFORMATION –> y añadir tras el:
<!-- / CUSTOMER INFORMATION --> <b>{l s='Transporte' pdf='true'}</b><br /> <table style="width: 100%;"> <tr> <td>{$carrier->name} </td> </tr> </table>
Esta es la forma fácil para añadir el nombre del transporte en la factura o en el albarán de una tienda PrestaShop, pero no la correcta. Para programadores avanzados, y para que esta método sea mucho mejor, en lugar de modificar los ficheros en classes/pdf/, se debe sobre escribir el método, para ello hay que crear un fichero con el nombre HTMLTemplateInvoice.php para la factura o HTMLTemplateDeliverySlip.php para el albarán dentro de la carpeta override/classes/pdf y por ejemplo, para el caso de la factura de Prestashop, se deben implementar los cambios anteriores correspondientes en un fichero con un contenido similar a este:
class HTMLTemplateInvoice extends HTMLTemplateInvoiceCoreclass HTMLTemplateInvoice extends HTMLTemplateInvoiceCore { /** * HTMLTemplateInvoice::getContent() * @return string **/ public function getContent() { parent::getContent(); } }