Programar cambios de precio en PrestaShop: productos, categorías y límites de la automatización

Última actualización: 1 de julio de 2026. Revisado frente al comportamiento nativo de precios de PrestaShop y los módulos publicados de mypresta.rocks mprdynamicscheduleddiscounts 1.1.0 y mprmasspriceupdate 1.1.0.
Autor: equipo editorial de mypresta.rocks. Creamos módulos para PrestaShop y gestionamos tiendas PrestaShop nosotros mismos, así que esta guía se basa en el comportamiento real del back office y en código de módulos publicados, no solo en teoría de precios.
"¿Puedo programar todos mis precios para que cambien el primer día del mes que viene?" A veces sí. A veces no. El error es tratar todos los cambios de precio como si fueran la misma tarea.
En PrestaShop, la programación de precios se divide en tres casos distintos: un descuento temporal, una modificación permanente del precio base y una regla activada por ventas o stock. Usa la herramienta nativa para el primer caso. Usa un editor masivo para cambios de precio permanentes. Usa automatización solo cuando la regla dependa de la antigüedad del stock, del historial de ventas o de una comprobación por cron.
Comparación rápida
| Tarea de precios | ¿Nativo en PrestaShop? | Usa esto | Límite que debes recordar |
|---|---|---|---|
| Un producto rebajado durante un intervalo de fechas | Sí | Producto > Precios > Precio específico | Es un descuento temporal, no una reescritura del precio base. |
| Descuento de categoría, marca o catálogo durante un intervalo de fechas | Sí | Regla de precios de catálogo | La regla crea una capa de descuento. Los precios base de tus productos no cambian. |
| Aumento o reducción permanente del precio base hoy | No de forma limpia en una sola pantalla nativa con vista previa | Mass Price Updater, importación o un script controlado | Estás editando precios de producto almacenados. La vista previa y los datos de rollback importan. |
| Cambio permanente de precio base programado para una fecha futura | No hay un programador nativo en una sola pantalla para precios base en masa | Trabajos programados de Mass Price Updater | El trabajo se ejecuta por cron y guarda snapshots de rollback antes de cambiar filas. |
| "Después de la unidad vendida número 100, cambiar el precio" | No | Automatización personalizada por contador de ventas | "A partir de cantidad" en PrestaShop significa la cantidad del carrito actual, no las unidades vendidas durante toda la vida del producto. |
| Sin ventas durante X días y stock superior a N | No | Smart Dynamic & Scheduled Discounts | Esto necesita historial de pedidos, comprobaciones de stock, precio mínimo, vista previa, cron y caducidad. |
| Ventana de descuento recurrente de fin de semana o diaria | No como regla de catálogo nativa recurrente | Smart Dynamic & Scheduled Discounts | Las ventanas recurrentes son diarias, semanales, mensuales o ventanas horarias personalizadas en el módulo. |
Empieza nombrando la tarea
- Promoción programada: una reducción temporal de precio con fecha de inicio y fin. El precio original vuelve cuando se cierra la ventana de fechas.
- Cambio permanente de precio base: el precio almacenado del producto cambia y se mantiene cambiado. Es habitual después de cambios en los costes del proveedor.
- Automatización por disparador: el precio reacciona a las ventas o al estado del stock, por ejemplo cuando no hay ventas recientes y el stock sigue en el almacén.
Gestionamos tiendas PrestaShop nosotros mismos. Los errores de precio que causan problemas suelen ser pequeños: una regla de catálogo que queda activa demasiado tiempo, un descuento por volumen interpretado como disparador de ventas acumuladas o una actualización del precio base hecha sin datos de rollback. Por eso esta guía separa las capas de descuento de las ediciones de precios almacenados.
Método nativo 1: programar un producto con precios específicos
Para un producto y una ventana de fechas, no instales nada. Usa la pantalla de precios del producto.
- Abre Catálogo > Productos.
- Edita el producto.
- Abre la pestaña Precios.
- Añade un Precio específico.
- Configura A partir de cantidad en
1, salvo que sea un descuento por volumen. - Elige un precio fijo o una reducción.
- Define las fechas Desde y Hasta.
- Guarda y prueba la página del producto durante la ventana de fechas.
Specific Price example
Product: Example Jacket
From quantity: 1
Available from: 2026-08-08 00:00:00
Available to: 2026-08-11 23:59:59
Reduction: 20 percent
Use this for:
"This product is 20 percent off next weekend."
¿Y qué implica? Es la ruta nativa de menor riesgo cuando el descuento pertenece a un solo producto. PrestaShop ya comprueba el intervalo de fechas durante el cálculo del precio.
Método nativo 2: programar un descuento de categoría con Reglas de precios de catálogo
Cuando el descuento cubre un grupo de productos, usa una regla de precios de catálogo. La redacción exacta del back office cambia entre PrestaShop 1.7, 8 y 9, pero la idea es la misma: defines la regla de precio y luego defines las condiciones.
- Abre Catálogo > Descuentos.
- Crea una Regla de precios de catálogo.
- Ponle un nombre claro, incluyendo la campaña o temporada.
- Configura A partir de cantidad en
1, salvo que quieras un descuento por volumen en el carrito. - Define el intervalo de fechas.
- Elige el tipo y el valor de la reducción.
- Añade condiciones como categoría, fabricante, atributo, característica, proveedor o rango de precios, según tu versión y pantalla de PrestaShop.
- Guarda la regla y comprueba un producto dentro y otro fuera del conjunto de condiciones.
Catalog Price Rule example
Name: Weekend Outdoor 15 percent
From quantity: 1
From: 2026-08-07 00:00:00
To: 2026-08-10 23:59:59
Reduction: 15 percent
Conditions:
Category = Outdoor
Use this for:
"Everything in Outdoor is 15 percent off this weekend."
La parte importante: una regla de precios de catálogo sigue siendo una capa de descuento. No reescribe los precios base almacenados de tus productos.
La trampa de "A partir de cantidad"
PrestaShop usa A partir de cantidad durante el cálculo del precio actual. En términos sencillos: cuántas unidades hay en el carrito actual o en la línea de pedido. No es un contador de ventas de por vida.
- "Compra 5 o más y ahorra un 10 por ciento": los precios específicos nativos pueden gestionarlo.
- "Después de vender 100 unidades en total, subir el precio": no es nativo.
No leas esto como una promesa de función para nuestros módulos actuales. Un disparador "después de la unidad acumulada vendida número 100" no está incluido en los módulos tratados aquí. Pertenece a una fase posterior de automatización, porque reembolsos, devoluciones, combinaciones y estado multitienda afectan al recuento.
-- Concept only: a cumulative sales trigger needs order history,
-- not the current cart quantity used by from_quantity.
SELECT
od.product_id,
SUM(
od.product_quantity
- COALESCE(od.product_quantity_refunded, 0)
- COALESCE(od.product_quantity_return, 0)
) AS net_units_sold
FROM ps_order_detail od
INNER JOIN ps_orders o ON o.id_order = od.id_order
WHERE o.valid = 1
AND o.id_shop = 1
AND od.product_id = 123
GROUP BY od.product_id;
Una automatización real debería comprobar qué columnas de cantidades reembolsadas o devueltas existen en tu versión de PrestaShop antes de ejecutar una consulta así. El evaluador de dead stock incluido hace ese tipo de comprobación de columnas consciente de la versión para su propia lógica de última venta.
Los cambios permanentes de precio base son otra tarea
Si tu proveedor sube los costes y quieres que todos los productos de una categoría aumenten un 8 por ciento desde el 1 de agosto, una regla de precios de catálogo es la herramienta equivocada. No quieres una capa de descuento temporal. Quieres que el precio base almacenado cambie según una programación.
Mass Price Updater 1.1.0 lo gestiona como un trabajo programado. En el código, el módulo crea una fila en mprmasspriceupdate_job, espera hasta run_at y luego actualiza por cron los campos de precio de product y product_shop. Antes de cambiar filas de precios, escribe datos de rollback en mprmasspriceupdate_job_snapshot.
- Elige el alcance: todos los productos, categoría, fabricante o proveedor.
- Elige el campo: precio base o precio de coste.
- Elige la fórmula: aumentar porcentaje, reducir porcentaje, aumentar cantidad fija o reducir cantidad fija.
- Previsualiza los productos y los nuevos precios.
- Define la fecha y hora de programación.
- Deja que cron ejecute el trabajo y luego usa la pantalla de Trabajos programados para ver el estado y hacer rollback.
Scheduled base-price job example
Module: mprmasspriceupdate 1.1.0
Scope: category
Scope ID: 12
Field: price
Formula action: increase_percent
Formula value: 8
Run at: 2026-08-01 00:05:00
Preview required before scheduling: yes
Rollback table: mprmasspriceupdate_job_snapshot

La automatización de dead stock necesita más que fechas
El dead stock no es simplemente "rebajar el producto X entre dos fechas". La regla que normalmente quieren los comerciantes es condicional:
IF product has no valid sale for 30 days
AND stock quantity is greater than 3
AND no active discount already applies
AND the final price stays above the floor
THEN apply a clearance discount
PrestaShop nativo no combina esas comprobaciones por ti. Smart Dynamic & Scheduled Discounts 1.1.0 añade automatización de dead stock con registros de reglas, registros de alcance, registros de aplicación, registros de ejecución y logs en estas tablas:
mprdsd_automation_rule
mprdsd_automation_rule_scope
mprdsd_automation_application
mprdsd_automation_run
mprdsd_automation_log
El módulo no escribe filas nativas en ps_specific_price para esta automatización y no sobrescribe precios base de producto. Genera objetivos internos de campaña y luego el descuento se aplica durante el cálculo de precios de PrestaShop mediante actionProductPriceCalculation. Eso mantiene el rollback más limpio: eliminar los objetivos generados detiene el descuento automático sin intentar reconstruir precios nativos.
Dead-stock rule example
Rule name: Warehouse clearance - slow movers
Active: yes
No Sale Days: 30
Stock Threshold: 3
Discount Type: Percentage
Discount Value: 15
Price Floor: Minimum margin percent
Floor Value: 20
Exclude Already Discounted Products: yes
Scope:
Include category: Clearance candidates
Exclude product: protected-margin SKU
Dry-run preview shows:
scanned
would discount
would expire
eligible
skipped
base price
discount
floor
final price
Dry-run writes: 0


Cómo se ve la parte de cron
La tarea de automatización de dead stock registrada por Smart Dynamic & Scheduled Discounts es evaluate_dead_stock_automation, programada como every:1800 en el módulo. El runner cron compartido de MPR ejecuta las tareas vencidas. Usa el punto de entrada cron generado en tu tienda y mantén privado el token.
# Example MPR cron runner. Use the cron entry point generated in your shop.
*/5 * * * * php /var/www/html/modules/YOUR_MPR_CRON_MODULE/cron.php --token=YOUR_CRON_TOKEN --context=cron --max-tasks=20
# Registered task checked by the runner:
module=mprdynamicscheduleddiscounts
task_key=evaluate_dead_stock_automation
schedule=every:1800
¿Qué camino deberías elegir?
- Descuento temporal en un producto: usa los precios específicos nativos.
- Descuento temporal en una categoría o segmento de catálogo: usa las reglas de precios de catálogo nativas.
- Cambio permanente masivo del precio base: usa Mass Price Updater u otro proceso controlado de edición masiva con vista previa y datos de rollback.
- Cambio permanente futuro del precio base: usa trabajos programados en Mass Price Updater.
- Liquidación de dead stock basada en ausencia de ventas recientes y nivel de stock: usa Smart Dynamic & Scheduled Discounts.
- Después de N unidades acumuladas vendidas: trátalo como automatización personalizada. No es nativo de PrestaShop y hoy no es un disparador incluido en estos módulos.
FAQ
¿Puede PrestaShop programar cambios de precio de forma nativa?
Sí, para descuentos temporales. Usa Precios específicos para un producto y Reglas de precios de catálogo para grupos de productos. PrestaShop nativo no te ofrece el mismo flujo en una sola pantalla para programar una edición masiva permanente futura de precios base.
¿"A partir de cantidad" significa unidades vendidas de por vida?
No. En Precios específicos y Reglas de precios de catálogo, "A partir de cantidad" está vinculado a la cantidad del carrito actual o de la línea de pedido. No es un contador histórico de ventas.
¿Puedo programar un descuento de categoría sin un módulo?
Sí. Usa una Regla de precios de catálogo con un intervalo de fechas y una condición de categoría. Es la ruta nativa para un descuento temporal de categoría.
¿Puede PrestaShop rebajar automáticamente el dead stock?
No de forma nativa. Una regla de dead stock necesita historial de pedidos, cantidad de stock, alcance, comprobaciones de precio mínimo, vista previa, cron y caducidad. Smart Dynamic & Scheduled Discounts añade esa automatización.
¿Smart Dynamic & Scheduled Discounts cambia mis precios base?
No para la automatización de dead stock descrita aquí. Aplica el descuento en tiempo de ejecución mediante el cálculo de precios de PrestaShop y objetivos internos de campaña generados. No escribe precios específicos nativos ni sobrescribe precios base de producto para esta automatización.
¿Qué módulo debería usar para cambios permanentes de precio base?
Usa Mass Price Updater cuando quieras cambiar precios base o precios de coste almacenados con una fórmula, previsualizar los productos afectados, programar el trabajo y conservar snapshots de rollback.
Comentarios
Aún no hay comentarios. ¡Sé el primero!
Sé el primero en hacer una pregunta o compartir una opinión útil.
Dejar un comentario
Comparte una pregunta, un detalle de instalación o una opinión que pueda ayudar a otro lector.