la_ostia Posted January 27, 2016 Share Posted January 27, 2016 (edited) Buenas tardes. Tenemos un cliente con un ERP y con una causística muy específica para el tema de precios de los clientes. Hemos hecho un conector entre el ERP y Prestashop que nos importa los clientes, direcciones y actualiza articulos; en unas tablas adicionales guardamos los datos de, por ejemplo, codigo de cliente, referencia, precio, precioOriginal, descuento. Haciendo un overrride de Product.php hemos modificado la función priceCalculation , que nos devuelve el precio con descuento de nuestros clientes, en caso de estar registrado y tener un modificador de precio en la referencia que está viendo. Hasta aquí funciona correcto. El problema lo tenemos al intentar sacar el precio anterior y descuento aplicado. Como para PS el precio actual es el bueno, no nos sirve el productPriceWithoutReduction. Para solventarlo añadimos a las tablas que generamos lso campos precioOriginal y descuento. El problema viene a la hora de hacer las consultas en estas funciones, porque siempre me coje el id_costumer a 0. En la plantilla smarty si me coge el id_costumer con el valor adecuado, pero en product.php siempre me devuelve 0. La llamada, en el product.tpl la hago asi: {Product::PrecioAnterior(Tools::getvalue('id_product'))} Y la función en product.php es la siguiente: public static function PrecioAnterior($id_product){ $sql = new DbQuery(); $sql->select('reference'); $sql->from('product', 'p'); $sql->where('p.`id_product` = '.(int)$id_product); $res = Db::getInstance(_PS_USE_SQL_SLAVE_)->executeS($sql); if (is_array($res) && count($res)) { foreach ($res as $row) { $reference = $row["reference"]; } } $sql = new DbQuery(); $sql->select('original_price'); $sql->from('e_prices', 'p'); $sql->where('p.`ref_product` = '.(int)$reference.' AND p.`customer` = '.(int)$id_customer); $original_price = Db::getInstance(_PS_USE_SQL_SLAVE_)->executeS($sql); return $original_price[0][original_price]; } El problema como digo es que al ser el id_costumer siempre igual a 0, la consulta obviamente no funciona; si pongo el id_costumer = 14, por ejemplo, si que obtiene el dato correctamente. ¿Alguna idea? He pensado en pasar por variable a la función el id_costumer desde el smarty, pero no he sabido hacerlo la verdad. Edited January 27, 2016 by la_ostia (see edit history) Link to comment Share on other sites More sharing options...
la_ostia Posted January 28, 2016 Author Share Posted January 28, 2016 Ya se com opasar el id_costumer, todo resuelto de momento {Product::PrecioAnterior(Tools::getvalue('id_product'),$cart->id_customer)} Link to comment Share on other sites More sharing options...
Recommended Posts