Miguel Posted June 27, 2019 Share Posted June 27, 2019 Hola, necesito obtener mediante una consulta SQL un listado de los productos pero deben aparecer con su precio final (como el que podemos ver en Catálogo > Productos y la columna 'Precio final'). Es decir, que obtenga el precio del producto con las reglas de descuento/precios específicos (si es que tiene) ya aplicadas. Hasta ahora he podido obtener el precio del producto con el IVA incluido, y también el precio final pero sólo para el caso de que únicamente se aplicase una regla general, como por ej. un 20% de descuento en todos los productos. El problema es que tengo unos cuantos productos que tienen un precio específico y éste debe predominar sobre la regla general, entonces para esos tengo el problema con el cálculo del mismo. Incluyo la consulta SQL que tengo hasta ahora, a ver si alguien me puede echar una mano: SELECT p.id_product as id, pl.name as title, p.price AS precio_base, ((p.price + (p.price * t.rate)/100) - ( ((p.price + (p.price * t.rate)/100) * spr.reduction) / 100)) AS precio_final FROM ps_product p JOIN ps_product_lang pl ON pl.id_product = p.id_product JOIN ps_tax t ON t.id_tax = p.id_tax_rules_group JOIN ps_specific_price_rule spr ON spr.id_shop = pl.id_shop WHERE p.active = 1 AND (NOW()>= spr.from AND NOW()<=spr.to) GROUP BY p.id_product En la columna 'precio_final' el cálculo que hace ahora mismo es: primero obtiene el precio + iva y al resultado le resta el cálculo de la reducción en porcentaje (por el momento sólo he probado con reducciones en porcentajes). El campo 'reduction' puede ser en porcentaje (reduction_type => percentage) o un importe concreto (reduction_type => amount). Hago el JOIN con ps_tax para obtener el tipo de impuesto y hago join con ps_specific_price_rule para obtener la reducción que se hace al producto. En el WHERE incluyo (NOW()>= spr.from AND NOW()<=spr.to) para comprobar que la fecha actual está entre el rango de fechas que dura la regla. La dificultad está en que aplique correctamente las reglas para obtener el precio final correcto, es decir, que si hay definida una regla general de descuento se calcule el precio final pero si además el producto tiene un precio específico se calcule el precio con esa regla de precio específico en lugar de la general. Gracias de antemano! Link to comment Share on other sites More sharing options...
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now