Descuentos Smart dinámicos & programados: configuración y ayuda
Inicio rápido
- Sube e instala mprdynamicscheduleddiscounts, luego abre Descuentos programados > Configuración.
- Deja Activar módulo activado y revisa Respetar stock en Configuración general.
- Abre Campañas y configura Nombre de la campaña, Tipo de descuento y Valor del descuento para un producto de prueba.
- Configura Productos objetivo, Fecha de inicio, Fecha de fin y Activo; añade "Recurring Windows" si Tipo de campaña es recurrente.
- Configura Mostrar temporizador de cuenta atrás, Estilo de cuenta regresiva, Mostrar insignia y Texto de la insignia de la campaña, luego guarda.
- Abre el producto y añádelo al carrito; verifica el precio final y lo que muestran los hooks del tema.
- Valida un pedido de prueba, comprueba el uso en Panel de control y pausa la campaña para verificar que el descuento termina.
Requiere PrestaShop 1.6.1 o posterior y PHP 7.1 o posterior.
Manual de configuración
Instala y configura los precios
Sube e instala mprdynamicscheduleddiscounts, luego haz clic en "Configure". También puedes abrir Descuentos programados > Configuración. Abre Integridad si la instalación indica que falta infraestructura.
Empieza con un producto y una campaña. Confirma la fecha y hora del servidor antes de introducir las fechas de campaña. Las comprobaciones normales de inicio y fin usan la hora PHP del servidor. Las franjas recurrentes tienen su propio ajuste de zona horaria.
Ajustes generales
- Activar módulo. Interruptor principal de los precios de campaña y de su visualización en la tienda; valor por defecto:
1. Configúralo en Descuentos programados → Configuración → Configuración general. - Respetar stock. Excluye de los descuentos de campaña los productos cuya cantidad disponible sea cero o inferior. Valor por defecto:
1. Desactívalo solo si quieres que las campañas incluyan esos productos.
Ajustes de visualización
- Mostrar temporizador de cuenta atrás. Valor global por defecto almacenado para la visibilidad de la cuenta atrás; valor por defecto:
1. Configúralo en Descuentos programados → Configuración → Configuración de visualización. - Estilo de cuenta regresiva predeterminado. Valor global por defecto almacenado para el estilo de cuenta atrás; valor por defecto:
simple. Los valores disponibles sonsimple,flipycircle. - Mostrar insignia de campaña. Valor global por defecto almacenado para la visibilidad de la insignia; valor por defecto:
1. Configúralo en Descuentos programados → Configuración → Configuración de visualización. - Color de insignia predeterminado. Color global de fondo de la insignia; valor por defecto:
#ff0000. - Color de texto de insignia predeterminado. Color global del texto de la insignia; valor por defecto:
#ffffff. - Mostrar precio original. Define el valor global por defecto para mostrar el precio original tachado; valor por defecto:
1. - Mostrar ahorros. Almacena la preferencia global de visualización del ahorro; valor por defecto:
1. Los ahorros mostrados en la tienda siguen los ajustes de visualización de cada campaña.
Las nuevas campañas heredan los ajustes globales de cuenta atrás, insignia, colores, precio original y ahorro. Las campañas sin ajustes de visualización guardados también usan estos valores predeterminados. Al guardar una campaña se almacenan sus propios ajustes de visualización; los cambios globales posteriores no los sobrescriben. Mostrar precio original muestra el precio original tachado mediante el hook del precio cuando una campaña reduce el precio de venta.
Ajustes de comportamiento y urgencia
- Modo de visualización de precios. Controla la etiqueta adicional del precio de campaña en la página de producto; valor por defecto:
replace.replaceusa la visualización normal del precio del tema;overlayañade también una etiqueta del precio de campaña mediante el hookafter_price. Ambos modos usan el mismo precio de venta rebajado. - Combinar descuentos. Activa la acumulación de campañas. Valor por defecto:
0. Si está desactivado, se usa la campaña individual que ofrezca el mayor descuento. Si está activado, se acumulan las campañas marcadas como Acumulable en orden de prioridad y se compara su total con la mejor campaña no acumulable. - Prioridad sobre precios específicos. Usa el verdadero precio base cuando existe un precio específico nativo. Valor por defecto:
0. Si esta opción y Combinar descuentos están desactivadas, los precios específicos nativos impiden que el cálculo del precio de campaña aplique otro descuento. - Mostrar indicador de urgencia. Activa el texto de oferta próxima a terminar y el estilo urgente de la cuenta atrás; valor por defecto:
1. - Umbral de urgencia (horas). Define el umbral de tiempo restante para el texto y el estilo de urgencia; valor por defecto:
24. Usa un número entero de horas no negativo. El valor0desactiva el estado de urgencia.
La urgencia aparece cuando la campaña está activa y el tiempo restante es inferior al umbral configurado. Desactivar Mostrar indicador de urgencia elimina el mensaje y el estilo de urgencia. La urgencia puede aparecer en los bloques de campaña de la página de producto y del carrito aunque el temporizador de la campaña esté oculto.
Crea una campaña
Abre Descuentos programados > Campañas y añade una campaña. Rellena los campos de campaña, descuento, selección de productos y fechas, luego guarda.
- Nombre de la campaña. Nombre interno de campaña mostrado en la lista de campañas y en el bloque de campaña de la página de producto; valor por defecto: vacío.
- Descripción. Descripción de campaña en el back office; valor por defecto: vacío.
- Tipo de campaña. Etiqueta/tipo de campaña usado para organizar y como texto alternativo de la insignia; valor por defecto:
scheduled. Los valores disponibles sonflash_sale,scheduled,recurring,countdown,early_birdylast_chance. - Prioridad. Establece el orden de las campañas, con los valores más altos primero. Valor por defecto:
0. Esto importa al aplicar campañas acumulables en secuencia; no hace que una campaña individual menos favorable supere a un descuento mayor. - Activo. Activa o pausa una campaña sin eliminarla; valor por defecto:
1. - Tipo de descuento. Define cómo se calcula el descuento; valor por defecto:
percent. Los valores disponibles sonpercent,amountyfixed_price. - Valor del descuento. Valor numérico del descuento usado por el tipo seleccionado; valor por defecto:
0. - Acumulable. Permite que esta campaña participe en la acumulación cuando Combinar descuentos está activado. Valor por defecto:
0. - Productos objetivo. Selecciona productos, categorías o fabricantes para la campaña; valor por defecto: vacío, que significa todos los productos.
- Fecha de inicio. Primera fecha y hora en que puede aplicarse la campaña; valor por defecto: valor obligatorio establecido por el comerciante.
- Fecha de fin. Última fecha y hora en que puede aplicarse la campaña; valor por defecto: valor obligatorio establecido por el comerciante.
Una selección Productos objetivo vacía incluye todos los productos de la tienda actual. Limítala para la primera prueba. Los descuentos porcentuales usan el porcentaje indicado; los descuentos por importe restan un importe fijo; las campañas de precio fijo buscan alcanzar el precio objetivo introducido. Comprueba impuestos, moneda y combinaciones con un carrito real.
Franjas recurrentes
Para Tipo de campaña = recurring, configura "Recurring Windows" además de las fechas exteriores Fecha de inicio y Fecha de fin. Elige una Zona horaria PHP válida, luego activa y rellena las franjas "Daily", "Weekly" o "Monthly" que correspondan. Una campaña recurrente sin una franja activa guardada permanece inactiva incluso dentro de su intervalo exterior de fechas.
Visualización y límites de campaña
Las nuevas campañas heredan los valores globales predeterminados de visualización actuales. Los valores de visualización indicados abajo son los de fábrica; revísalos antes de guardar.
- Mostrar temporizador de cuenta atrás. Visibilidad de la cuenta atrás por campaña; valor por defecto:
1. - Estilo de cuenta regresiva. Estilo de cuenta atrás por campaña; valor por defecto:
simple. - Mostrar insignia. Visibilidad de la insignia por campaña; valor por defecto:
1. - Texto de la insignia. Texto personalizado de insignia por campaña; valor por defecto: vacío, lo que muestra el tipo de campaña.
- Color de la insignia. Color de fondo de la insignia por campaña; valor por defecto:
#ff0000. - Color del texto de la insignia. Color del texto de la insignia por campaña; valor por defecto:
#ffffff. - Mostrar precio original. Muestra el precio original tachado mediante el hook
after_pricecuando la campaña reduce el precio de venta; valor inicial de fábrica:1. - Mostrar ahorros. Visibilidad de la etiqueta de ahorro por campaña; valor por defecto:
1. - CSS personalizado. Aplica CSS dentro de los contenedores de esta campaña en la tienda; valor por defecto: vacío.
- Usos totales máximos. Número máximo de usos registrados de la campaña entre todos los clientes; valor por defecto:
0, que significa ilimitado. - Usos máx. por cliente. Número máximo de usos registrados de la campaña para un cliente; valor por defecto:
0, que significa ilimitado.
Deja Texto de la insignia vacío para usar el tipo de campaña como etiqueta. Las plantillas estándar usan los ajustes de cuenta atrás, insignia, precio original y ahorro de cada campaña. El CSS personalizado se aplica mediante el JavaScript de la tienda dentro de los contenedores de esa campaña. Requiere que el navegador admita hojas de estilo construidas y CSS @scope; usa la hoja de estilos del tema para las reglas de toda la tienda.
Los límites de uso se comprueban con los usos registrados y la cantidad solicitada. El uso se registra al validar un pedido. Prueba carritos con varias unidades y pedidos repetidos cuando uses límites.
Comprende los precios superpuestos
Con Combinar descuentos desactivado, el módulo elige la campaña apta que ofrece el mayor descuento. Si está activado, calcula una acumulación de las campañas Acumulable aptas en orden de prioridad descendente y compara ese resultado con la mejor campaña no acumulable. Usa el descuento mayor e impide un precio final negativo.
Los precios específicos nativos se respetan por defecto. Prioridad sobre precios específicos y Combinar descuentos cambian esa decisión. Prueba productos con precios específicos existentes antes de cambiar cualquiera de los dos interruptores. En versiones anteriores de PrestaShop, los descuentos de campaña usan precios temporales para el carrito actual. El módulo no cambia permanentemente el precio base del producto.
Las insignias identifican la campaña principal. Los ahorros mostrados comparan el precio original con el precio de venta final, incluidos los descuentos acumulados. Verifica el precio final del carrito cuando se acumulen varias campañas.
Configura las reglas de automatización
Abre Descuentos programados > "Automation Rules" si quieres seleccionar productos con stock sin ventas. Configura "Rule Name", Activo, Prioridad, opcionalmente Fecha de inicio y Fecha de fin, "No Sale Days", "Stock Threshold", Tipo de descuento, Valor del descuento, "Price Floor", "Floor Value", "Exclude Already Discounted Products" y Productos.
Las nuevas reglas empiezan activas, con prioridad 0, periodo sin ventas de 30 días, umbral de stock 0, descuento porcentual 10, sin precio mínimo, valor mínimo 0 y exclusión de productos ya rebajados activada. Revisa "Preview" antes de "Run now". Usa "Automation Log" para revisar resultados. "Rollback" elimina los objetivos generados activos de la regla.
El módulo registra una tarea cron compartida para evaluar las reglas de stock sin ventas cada 1800 segundos. Asegúrate de que tu ejecutor cron MPR esté configurado antes de esperar evaluaciones sin intervención. Las campañas normales con fechas se evalúan durante el cálculo del precio y no necesitan una ejecución cron solo para superar su fecha de inicio o fin.
Prueba la visualización de campaña
- Crea una campaña con un intervalo de fechas actual y un descuento del 15 por ciento en un producto de prueba con stock.
- Abre la página de producto. Comprueba el precio y la insignia/cuenta atrás opcional en
displayProductAdditionalInfoen PrestaShop 1.7 o posterior, odisplayFooterProducten PrestaShop 1.6. En versiones de PrestaShop anteriores a la 8, la visualización del precio original, el ahorro y la etiqueta adicional del precio de campaña requiere un carrito existente. - Abre un listado de productos. Comprueba la insignia en
displayProductListReviews. - Añade el producto al carrito. Comprueba la cantidad, los impuestos y el precio final. Comprueba el bloque de campaña del carrito en
displayShoppingCartFootery el ahorro endisplayProductPriceBlockcon tipoafter_price. - Valida un pedido de prueba. Comprueba el uso de la campaña y los totales de Panel de control, los usos recientes y las próximas campañas.
- Pausa la campaña con Activo. Comprueba que el descuento termina.
Si el precio no cambia, comprueba Activar módulo, fechas, franjas recurrentes, selección de productos, stock, límites y precios específicos nativos. Si el precio cambia pero falta una insignia, comprueba los campos de visualización de la campaña y si tu tema muestra ese hook. El tema puede necesitar un ajuste de plantilla.
El Panel de control muestra campañas activas, programadas, caducadas y totales, el descuento total concedido, pedidos con descuentos, uso en los últimos 30 días y próximas campañas. Sus totales de uso dependen de los registros de pedidos validados.
Usa ejemplos de campañas y temas
Valores de ejemplo para una campaña promocional de producto Black Friday:
campaign_type = flash_sale
discount_type = percent
discount_value = 15
date_start = 2026-11-27 00:00:00
date_end = 2026-11-30 23:59:59
display_show_countdown = 1
display_countdown_style = flip
display_show_badge = 1
display_badge_text = Black Friday
display_badge_color = #111111
display_badge_text_color = #ffffff
max_uses_total = 0
max_uses_per_customer = 1
Ejemplo de campaña de precio fijo:
campaign_type = scheduled
discount_type = fixed_price
discount_value = 49.99
display_badge_text = Special price
El CSS del tema puede seleccionar las clases de la tienda cargadas por views/css/front/campaigns.css:
.mprdsd-badge[data-mprdsd-type="flash_sale"] {
background: #111111 !important;
color: #ffffff !important;
}
.mprdsd-countdown--flip .mprdsd-countdown__value {
background: #111111;
border-radius: 2px;
}
.mprdsd-price__savings-inline {
background: #e8f5e9;
color: #2e7d32;
}
.mprdsd-cart-campaign {
border-color: #111111;
}
Al sobrescribir las plantillas de campaña, conserva los contenedores con data-mprdsd-campaign y data-mprdsd-css para aplicar el CSS personalizado de cada campaña.
Ruta de sobrescritura de plantilla para cambiar el marcado de la insignia del listado:
{* themes/your_theme/modules/mprdynamicscheduleddiscounts/views/templates/hook/campaign-badge.tpl *}
{if isset($mprdsd_campaign) && $mprdsd_campaign && isset($mprdsd_display)}
<span class="mprdsd-badge"
data-mprdsd-type="{$mprdsd_campaign->campaign_type}"
style="background:{$mprdsd_display.badge_color|default:'#ff0000'};color:{$mprdsd_display.badge_text_color|default:'#ffffff'}">
{if isset($mprdsd_display.badge_text) && $mprdsd_display.badge_text}
{$mprdsd_display.badge_text}
{else}
{$mprdsd_campaign->campaign_type|replace:'_':' '|capitalize}
{/if}
</span>
{/if}
Endpoints de controladores front disponibles para JavaScript personalizado del tema:
/module/mprdynamicscheduleddiscounts/ajax?action=getActiveCampaigns
/module/mprdynamicscheduleddiscounts/ajax?action=getProductCampaigns&id_product=123&id_product_attribute=0
/module/mprdynamicscheduleddiscounts/ajax?action=getCampaign&id_campaign=4
Estas rutas AJAX exponen información de campañas para la integración con el tema. Usa las URL de módulo generadas por tu tienda cuando tenga un prefijo de idioma o un subdirectorio. Verifica la respuesta del endpoint antes de conectar JavaScript personalizado.
Desinstala
Haz una copia de seguridad de los datos de campañas, automatización y uso antes de desinstalar. La rutina de desinstalación elimina los precios específicos temporales del módulo, su menú y las tareas cron registradas, y desinstala su esquema. Vuelve a comprobar los precios de productos y del carrito tras eliminarlo. No esperes que los informes de uso de campañas sobrevivan a la desinstalación.
Compatibilidad
Requiere PrestaShop 1.6.1 o posterior y PHP 7.1 o posterior.
Preguntas
1
¿Puedo limitar una campaña a un grupo de clientes desde su formulario?
El formulario actual de campaña no tiene un control para seleccionar grupos de clientes. El selector Target Products guarda productos, categorías y fabricantes. Una campaña creada con estos controles no es una oferta exclusiva para miembros. Una selección vacía se aplica a todo el catálogo de la tienda actual.
Problemas conocidos
10
Etiqueta de ahorro ausente
Textos traducidos del back office
Texto traducido dañado
Descuentos programados ausentes en los precios
Reglas de descuento no siempre respetadas
El módulo no se carga en PrestaShop 8 y 9
Refuerzo de la seguridad
Filtros de la lista de descuentos
El módulo no se carga
Fallos de formato de precios en versiones recientes de PrestaShop
Solicitudes de funcionalidades
7
Implementado
Franjas de descuento recurrentes con zona horaria configurable
Administración multilingüe
Gestión de licencia
Actualizaciones del módulo con un clic
Descuentos en existencias de baja rotación
Programaciones de descuentos recurrentes
Integración del historial de precios Omnibus
Registro de cambios
v1.3.02026-10-04
- Addedautomatic theme detection for Classic and Hummingbird style compatibility
- Addedadmin menu management via MenuInstaller for streamlined module setup
- Addedself-healing integrity checks for automatic diagnostics and repair
- AddedLicense management tab with key management and renewal options
- Addedcomplete FR/DE/ES/IT/PL translations
- Improvedadmin list columns with visual badge indicators and multiselect filters
- Fixedadmin list filters — sorting, searching, and filtering now work correctly on all columns
Versiones anteriores
v1.2.02026-06-29
- AddedPrestaShop 9 and Hummingbird theme compatibility
- Addedperformance-based trigger: apply discount when product sales velocity drops below a configurable threshold
- Improveddiscount scheduling UI with visual calendar displaying active promotion windows
- Fixedrecurring discount not resetting correctly when a promotion window spans a month boundary
- Addedstock-surplus trigger: automatically increase discount percentage when stock exceeds a set level
- Optimized scheduler query performance with compound index on product, date range, and trigger type
v1.0.62026-02-23
- Addedcomplete FR/DE/ES/IT/PL translations
- FixedApply scheduled discounts to product prices
- FixedPass module context to theme detector uninstall
- FixedReplace Tools::displayPrice with PriceFormatter compat wrapper
- FixedRename isEnabled() to avoid conflict with ModuleCore::isEnabled()
v1.0.02025-11-24
- Initialrelease of Smart Dynamic Scheduled Discounts
- InitialTime-based promotions: set start and end datetime for automatic discount activation and deactivation
- InitialStock-level triggers: discount activates when product stock falls below or rises above a threshold
- InitialPerformance triggers: discount fires when product records no sales within a configurable window
- InitialBack-office promotion calendar with upcoming, active, and expired promotion views
v1.1.02025-09-29
- Addedrecurring discount patterns: daily, weekly, and monthly repeat cycles with optional end date
- Addedtime-of-day discounts: configure active hours for flash pricing per timezone
- Improveddiscount conflict resolution with configurable priority when multiple rules match a product
- Fixedscheduled discount not deactivating on time when PS cron runs infrequently
Demo
Prueba el módulo completo antes de comprar
Compra la licencia más tarde y conserva tus ajustes.
- Tu demo de 30 días Pruébalo en tu propia tienda durante 30 días desde la primera instalación.
- Tienda demo lista Explora una tienda demo lista en tu navegador.
- Sin registro Sin cuenta, correo ni dominio de tienda.
Al descargar, aceptas las condiciones de la demo y la política de privacidad.
Al abrir esta demo, acepta los términos de la demo y la política de privacidad.