Como añadir nombre manufacturer de un producto en la factura

publicado en: Prestashop, Tutoriales | 4

Cuantisimo tiempo sin compartir nada por aquí, pero la espera ha merecido la pena, os traigo una pequeña modificación para mejorar la gestión de vuestra tienda online hecha con Prestashop.

En el caso que nos trae hoy, vamos a hacer que en la factura generada tras realizar el pago aparezca por cada linea de producto el manufacturer asociado a ese producto.

Antes de nada recordad hacer copia de seguridad de vuestros archivos, porque si algo sale mal, teniendo nuestra copia de seguridad no tenemos nada que temer 🙂

La modificación que vamos a hacer está pensada para la versión 1.5 de Prestashop, en versiones anteriores el sistema por el cual se generaban las facturas cambiaba bastante, así que si intentáis hacerlo en una versión anterior no encontrareis nada de lo que os estoy contando.

Lo primero que tenemos que hacer es ir a

classes/order/OrderInvoice.php

Una vez que encontremos el archivo, lo abrimos con nuestro editor de código favorito y buscamos la siguiente función que es la que recupera las lineas del pedido

public function getProductsDetail()
{
return Db::getInstance(_PS_USE_SQL_SLAVE_)->executeS('
SELECT *
FROM `'._DB_PREFIX_.'order_detail` od
LEFT JOIN `'._DB_PREFIX_.'product` p
ON p.id_product = od.product_id
LEFT JOIN `'._DB_PREFIX_.'product_shop` ps ON (ps.id_product = p.id_product AND ps.id_shop = od.id_shop)
WHERE od.`id_order` = '.(int)$this->id_order.'
AND od.`id_order_invoice` = '.(int)$this->id);
}

Y la modificamos para que quede como sigue.

public function getProductsDetail()
{
return Db::getInstance(_PS_USE_SQL_SLAVE_)->executeS('
SELECT *, m.name
FROM `'._DB_PREFIX_.'order_detail` od
LEFT JOIN `'._DB_PREFIX_.'product` p
ON p.id_product = od.product_id
LEFT JOIN `'._DB_PREFIX_.'product_shop` ps ON (ps.id_product = p.id_product AND ps.id_shop = od.id_shop)
LEFT JOIN `'._DB_PREFIX_.'manufacturer` m on p.id_manufacturer = m.id_manufacturer
WHERE od.`id_order` = '.(int)$this->id_order.'
AND od.`id_order_invoice` = '.(int)$this->id);
}

Una vez hayáis hecho el cambio, actualizáis el archivo y nos vamos a editar el tpl que se encarga de mostrar esa parte de la factura

pdf/invoice.tpl

Una vez estemos editando invoice.tpl para añadir el nombre del manufacturer tenéis que buscar el foreach que recorre order_details y añadir donde queráis que aparezca la siguiente variable

{$order_detail.name}

Si generáis ahora una factura veréis que ya os aparece el nombre del manufacturer en el sitio que le habéis indicado. Como veréis no ha sido muy complicada de realizar esta modificación pero es bastante útil.

¡Como siempre espero vuestros comentarios y opiniones!

4 comentarios

    • dwalins

      Hola Elena, no te lo puedo asegurar al 100% porque en estos momentos me es imposible verificarlo pero me atrevo a decir que en lugar de modificar classes/order/OrderInvoice.php habría que hacer las modificaciones(muy similares a las que vemos aquí, modificando la consulta) en classes/order/OrderSlip.php. En cuanto pueda comprobarlo lo verifico, si lo haces antes háznoslo saber 🙂

  1. Oncle

    Hola, hace tiempo de este post, pero me ha salido buscando algo similar pero para que salga el nombre del fabricante en el resumen del carrito. Los pasos serían similares pero en shopping-cart.tpl?
    Gracias.

    • dwalins

      Hola Oncle, esta entrada tiene ya bastante tiempo. Seguramente la versión de PrestaShop que estés utilizando haya cambiado considerablemente, aunque puede ser un punto de partida para entender el concepto de lo que se quiere hacer. Lo bueno, al ser en el resumen del carrito tendrás disponible información del producto directamente por lo que no vas a necesitar modificar la consulta.
      Un saludo

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *