En una actualización que realice a una tienda Prestashop de la versión 1.6 a 1.7, me preguntaron de qué manera podíamos saber que regla de impuesto tienen todos los productos de la tienda, esto debido a que no tenían claro como el sistema estaba realizando los cálculos y no querían entrar a cada producto e ir revisando uno a uno.
Para dar solución a este interrogante lo que realice fue hacer una consulta a la base de datos de Prestashop.
La herramienta que utilizo es Visual Studio Code y para la conexión a la base de datos uso la extensión SQLTools MySQL/MariaDB. Aunque esta información también se puede obtener desde el phpMyAdmin.
Las buenas prácticas dicen que es mejor crear un usuario con privilegios de consulta para realizar este tipo de peticiones a la base de datos.
El query utilizado es el siguiente:
SELECT Producto.id_product as Id_Producto,
Seo.name as Nombre_Producto,
Producto.id_tax_rules_group as Regla_Impuesto,
Task.name as Nombre_Regla_Impuesto,
Idioma.name as Idioma
FROM prstshp_product as Producto
LEFT JOIN prstshp_product_lang AS Seo ON Producto.id_product = Seo.id_product
LEFT JOIN prstshp_lang AS Idioma ON Seo.id_lang = Idioma.id_lang
LEFT JOIN prstshp_tax_rules_group as Task ON Producto.id_tax_rules_group = Task.id_tax_rules_group
Ahora explicare brevemente este script:
Utilizamos 4 tablas:
- prstshp_product que tiene la información con los identificadores (id) del producto.
- prstshp_product_lang aquí se obtiene el nombre del producto.
- prstshp_lang que esta el idioma en que está escrito el nombre del producto (esto es útil cuando la tienda es multi-idioma).
- prstshp_tax_rules_group para determinar el nombre de la regla del impuesto.
Primero utilizamos como base la tabla prstshp_product allí obtenemos el Id del producto y el id del impuesto aplicado, ahora hacemos el left join con prstshp_product_lang para obtener el nombre de la regla del impuesto, seguido hacemos otro left join con la tabla prstshp_lang para obtener el nombre del idioma y por ultimo hacemos un left join con la tabla prstshp_tax_rules_group para scar el nombre de la regla de impuesto aplicada al producto.
Nota: Para el campo Task.name as Nombre_Regla_Impuesto, si el campo es NULL es porque no tiene impuesto aplicado.
Si tienes alguna duda, puedes dejar un comentario. 👇