Índice
1. Comprender la Estructura de la Base de Datos de PrestaShop
2. Realizar una Copia de Seguridad Antes de Modificar Precios
3. Modificar Precios Masivamente
3.1. Aumentar o Reducir el Precio de Todos los Productos
3.2. Modificar Precios de Productos en una Categoría Específica
3.3. Cambiar Precios de Productos de un Proveedor Específico
3.4. Aplicar un Precio Fijo a un Conjunto de Productos
4. Modificar Precios con Descuentos Aplicados
Actualizar Descuentos Existentes
Eliminar Todos los Descuentos Actuales
5. Comprobaciones y Validaciones Tras la Modificación
Verificar los Precios Modificados
Forzar la Regeneración de la Caché
6. Comparación de Métodos: MySQL vs. Módulos de PrestaShop
7. Automatizar la Modificación de Precios con un Script PHP
Introduccion
Gestionar precios en una tienda PrestaShop con cientos o miles de productos puede ser una tarea abrumadora si se hace desde el panel de administración. Sin embargo, si tienes acceso a la base de datos, puedes realizar modificaciones masivas directamente desde MySQL con gran precisión y velocidad. Este artículo ofrece una guía completa sobre cómo hacerlo de forma segura, estructurada y eficiente.
1. Entendiendo dónde se almacenan los precios en PrestaShop
Antes de modificar nada, es importante conocer las tablas clave involucradas:
Tabla | Descripción |
---|---|
ps_product | Almacena el precio base del producto. |
ps_product_shop | Guarda el precio por tienda (en modo multitienda). |
ps_specific_price | Registra descuentos y reglas de precios especiales. |
Nota:
ps_
es el prefijo por defecto. Puede variar según tu instalación.
En la mayoría de casos, se modifican los precios directamente en ps_product
y ps_product_shop
. Pero si hay reglas activas en ps_specific_price
, pueden prevalecer sobre el precio base.
2. Realizar una Copia de Seguridad Antes de Modificar Precios
Antes de hacer cambios, es recomendable hacer un backup de la base de datos:
mysqldump -u usuario -p base_de_datos > backup_prestashop.sql
Esto permite restaurar los datos en caso de errores.
3. Modificar Precios Masivamente
3.1. Aumentar o Reducir el Precio de Todos los Productos
Si deseas aumentar los precios un 10%, puedes ejecutar:
UPDATE ps_product SET price = price * 1.10;
UPDATE ps_product_shop SET price = price * 1.10;
Para reducir los precios un 10%, usa:
UPDATE ps_product SET price = price * 0.90;
UPDATE ps_product_shop SET price = price * 0.90;
Esto multiplica los precios actuales por 1.10 (aumento) o 0.90 (reducción).
3.2. Modificar Precios de Productos en una Categoría Específica
Para modificar los precios de una categoría en particular:
UPDATE ps_product p
JOIN ps_category_product cp ON p.id_product = cp.id_product
SET p.price = p.price * 1.15
WHERE cp.id_category = 5;
Esto aumenta en un 15% los precios de los productos en la categoría con ID 5.
Si hay múltiples tiendas activas:
UPDATE ps_product_shop ps
JOIN ps_category_product cp ON ps.id_product = cp.id_product
SET ps.price = ps.price * 1.15
WHERE cp.id_category = 5;
3.3. Cambiar Precios de Productos de un Proveedor Específico
Si deseas modificar precios de un proveedor en particular:
UPDATE ps_product p
JOIN ps_product_supplier ps ON p.id_product = ps.id_product
SET p.price = p.price * 1.20
WHERE ps.id_supplier = 3;
Esto sube un 20% los precios de los productos del proveedor con ID 3.
3.4. Aplicar un Precio Fijo a un Conjunto de Productos
Si quieres fijar el precio de todos los productos de una categoría en 20 euros:
UPDATE ps_product p
JOIN ps_category_product cp ON p.id_product = cp.id_product
SET p.price = 20
WHERE cp.id_category = 10;
4. Modificar Precios con Descuentos Aplicados
Si PrestaShop usa ps_specific_price
para descuentos personalizados, también debemos actualizar esa tabla:
Actualizar Descuentos Existentes
Si deseas aumentar en un 10% todos los precios con descuentos aplicados:
UPDATE ps_specific_price SET price = price * 1.10 WHERE price > 0;
Eliminar Todos los Descuentos Actuales
Si deseas eliminar descuentos en masa:
DELETE FROM ps_specific_price;
5. Comprobaciones y Validaciones Tras la Modificación
Después de realizar cambios, es recomendable verificar que los precios han sido actualizados correctamente:
Verificar los Precios Modificados
SELECT id_product, price FROM ps_product ORDER BY price DESC LIMIT 10;
Esto muestra los 10 productos más caros después de la modificación.
Forzar la Regeneración de la Caché
Para que los cambios se reflejen en PrestaShop de inmediato:
Tools::clearSmartyCache();
Tools::clearXMLCache();
Tools::clearSf2Cache();
Si tienes activado el caché, vacíalo manualmente desde el back-office o con PHP.
6. Comparación de Métodos: MySQL vs. Módulos de PrestaShop
Método | Ventajas | Desventajas |
Modificar precios por SQL | Rápido, sin necesidad de módulos adicionales. | Riesgo de errores si no se hace correctamente. |
Usar un módulo de actualización de precios | Interfaz amigable, sin necesidad de conocimientos técnicos. | Puede ralentizar el sistema, requiere inversión. |
Modificar manualmente en el back-office | Seguro, sin riesgos de dañar la base de datos. | Ineficiente para grandes volúmenes de productos. |
Si manejas muchos productos, MySQL es la mejor opción por su rapidez y eficiencia.
4. Comparativa: modificar precio vs. specific_price
Escenario | Tabla afectada | Se refleja como descuento | Prioridad en PrestaShop |
Precio base del producto | ps_product / ps_product_shop | No | Baja |
Precio con regla o promoción | ps_specific_price | Sí | Alta |
Si hay una regla activa en
ps_specific_price
, el precio base no se mostrará en la tienda.
Si deseas eliminar todos los descuentos y mostrar solo el nuevo precio:
DELETE FROM ps_specific_price;
7. Automatizar la Modificación de Precios con un Script PHP
Puedes automatizar estos cambios con un script PHP:
<?php
require(dirname(__FILE__).'/config/config.inc.php');
Db::getInstance()->execute('UPDATE ps_product SET price = price * 1.10');
Db::getInstance()->execute('UPDATE ps_product_shop SET price = price * 1.10');
echo "Precios actualizados con éxito.";
?>
Guárdalo como actualizar_precios.php
y ejecúta:
php actualizar_precios.php
Esto reduce el número de consultas y mejora el rendimiento.
Conclusión
Modificar precios masivamente en PrestaShop usando MySQL es una estrategia efectiva para gestionar grandes volúmenes de productos sin depender del panel de administración. Con los métodos presentados en este artículo, puedes actualizar precios rápidamente, ya sea por porcentaje, por proveedor, por categoría o por reglas específicas.
Si implementas estas técnicas correctamente, mejorarás la eficiencia de tu tienda y podrás adaptarte rápidamente a cambios en el mercado.