Javier Campos Posted October 26, 2016 Share Posted October 26, 2016 (edited) Muy buenas, Necesitaría poder controlar el orden en el que los productos salen en la factura generada por Prestashop. He encontrado en el foro este tema: https://www.prestashop.com/forums/topic/186155-solucionadoordenar-productos-de-la-factura/ pero es antiguo y parece que las nuevas versiones de prestashop no hacen una única consulta, sino varias. ¿Alguien sabe como modificar el orden de las productos en la factura? Edited November 7, 2016 by Javier Campos (see edit history) Link to comment Share on other sites More sharing options...
ventura Posted October 26, 2016 Share Posted October 26, 2016 Que tipo de orden seria ¿? Link to comment Share on other sites More sharing options...
Javier Campos Posted October 31, 2016 Author Share Posted October 31, 2016 Pues necesitaría que se incluyeran en la factura en el mismo orden que se agregan al carrito. Si consiguiera hacerlo así, sería genial. Si no, al menos por ID de poroducto. Link to comment Share on other sites More sharing options...
ventura Posted October 31, 2016 Share Posted October 31, 2016 Realizando un override de la funcion getProductsDetail() classes\order\OrderInvoice.php en el que se aplique un orden especifico en la query, por defecto se aplica el nombre del producto. Para establecerlo por el id solo haria falta cambiarlo por ORDER BY od.`product_id` Link to comment Share on other sites More sharing options...
Javier Campos Posted November 3, 2016 Author Share Posted November 3, 2016 Ventura, ¿podrías decirme que fichero modificar exactamente y el código? No soy experto en PHP y aunque he entendido la teoría de lo que me has dicho, no se como llevarlo a la práctica. Link to comment Share on other sites More sharing options...
tuk66 Posted November 7, 2016 Share Posted November 7, 2016 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); } Puede cambiar esa parte después de WHERE para ordenar artículos de orden de una manera diferente. You can change that part after WHERE to sort order items in a different way. Link to comment Share on other sites More sharing options...
Javier Campos Posted November 7, 2016 Author Share Posted November 7, 2016 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.' '.($this->id && $this->number ? ' AND od.`id_order_invoice` = '.(int)$this->id : '').' ORDER BY od.`product_name`'); } tuk66, Esta es la forma en la que yo tengo declarada dicha funcion. Voy a probar a ponerlo tal y como tu me propones y ver que pasa. Link to comment Share on other sites More sharing options...
Javier Campos Posted November 7, 2016 Author Share Posted November 7, 2016 tuk66 pues no me ha funcionado. Me aparece una linea de un pedido que no se corresponde con el que estoy sacando la factura. Algo muy muy raro. Link to comment Share on other sites More sharing options...
Javier Campos Posted November 7, 2016 Author Share Posted November 7, 2016 Finalmente he conseguido que los productos aparezcan en la factura en el mismo orden en el que se agregan al carrito. 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.' '.($this->id && $this->number ? ' AND od.`id_order_invoice` = '.(int)$this->id : '')); } Link to comment Share on other sites More sharing options...
Recommended Posts