Índice

Introducción

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

9. Limpieza de Datos Innecesarios

Conclusión

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:

TablaDescripción
ps_productAlmacena el precio base del producto.
ps_product_shopGuarda el precio por tienda (en modo multitienda).
ps_specific_priceRegistra 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étodoVentajasDesventajas
Modificar precios por SQLRápido, sin necesidad de módulos adicionales.Riesgo de errores si no se hace correctamente.
Usar un módulo de actualización de preciosInterfaz amigable, sin necesidad de conocimientos técnicos.Puede ralentizar el sistema, requiere inversión.
Modificar manualmente en el back-officeSeguro, 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

EscenarioTabla afectadaSe refleja como descuentoPrioridad en PrestaShop
Precio base del productops_product / ps_product_shopNoBaja
Precio con regla o promociónps_specific_priceAlta

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. 

Ir al contenido