Jump to content

Ayuda con consulta SQL - Productos con precios finales


Miguel

Recommended Posts

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

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 account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...