Jump to content

Precios Especiales Por Cliente (Viene De Un Erp)


Recommended Posts

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 by la_ostia (see edit history)
Link to comment
Share on other sites

  • nadie locked this topic
Guest
This topic is now closed to further replies.
×
×
  • Create New...