Descuentos Smart dinámicos & programados: configuración y ayuda

Inicio rápido

  1. Sube e instala mprdynamicscheduleddiscounts, luego abre Descuentos programados > Configuración.
  2. Deja Activar módulo activado y revisa Respetar stock en Configuración general.
  3. Abre Campañas y configura Nombre de la campaña, Tipo de descuento y Valor del descuento para un producto de prueba.
  4. Configura Productos objetivo, Fecha de inicio, Fecha de fin y Activo; añade "Recurring Windows" si Tipo de campaña es recurrente.
  5. Configura Mostrar temporizador de cuenta atrás, Estilo de cuenta regresiva, Mostrar insignia y Texto de la insignia de la campaña, luego guarda.
  6. Abre el producto y añádelo al carrito; verifica el precio final y lo que muestran los hooks del tema.
  7. 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 son simple, flip y circle.
  • 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. replace usa la visualización normal del precio del tema; overlay añade también una etiqueta del precio de campaña mediante el hook after_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 valor 0 desactiva 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 son flash_sale, scheduled, recurring, countdown, early_bird y last_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 son percent, amount y fixed_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_price cuando 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

  1. Crea una campaña con un intervalo de fechas actual y un descuento del 15 por ciento en un producto de prueba con stock.
  2. Abre la página de producto. Comprueba el precio y la insignia/cuenta atrás opcional en displayProductAdditionalInfo en PrestaShop 1.7 o posterior, o displayFooterProduct en 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.
  3. Abre un listado de productos. Comprueba la insignia en displayProductListReviews.
  4. Añade el producto al carrito. Comprueba la cantidad, los impuestos y el precio final. Comprueba el bloque de campaña del carrito en displayShoppingCartFooter y el ahorro en displayProductPriceBlock con tipo after_price.
  5. 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.
  6. 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

ResueltoActualizado:
Corregido en: 1.3.3
Los productos rebajados podían perder su etiqueta de ahorro en PrestaShop 1.7, 8 y 9. Ahora la etiqueta vuelve a mostrarse.

Textos traducidos del back office

ResueltoActualizado:
Corregido en: 1.3.3
Algunos textos del back office seguían en inglés incluso al seleccionar otro idioma. Ahora las etiquetas usan las traducciones disponibles.

Texto traducido dañado

ResueltoActualizado:
Corregido en: 1.2.1
Algunos textos traducidos de descuentos mostraban puntuación o escapes dañados. Se han reparado las traducciones afectadas.

Descuentos programados ausentes en los precios

ResueltoActualizado:
Corregido en: 1.2.0
Una campaña programada activa podía no cambiar los precios de productos o no llegar al carrito, especialmente en PrestaShop 1.6 y 1.7. Ahora los descuentos se aplican en las versiones compatibles.

Reglas de descuento no siempre respetadas

ResueltoActualizado:
Corregido en: 1.2.0
Las combinaciones de descuentos, la prioridad de campañas, las restricciones de existencias y los límites de uso por cantidad podían ignorarse. Ahora los precios respetan las reglas configuradas.

El módulo no se carga en PrestaShop 8 y 9

ResueltoActualizado:
Corregido en: 1.2.0
El módulo podía no cargarse en PrestaShop 8 o 9. Se han corregido los problemas de compatibilidad afectados.

Refuerzo de la seguridad

ResueltoActualizado:
Corregido en: 1.2.0
Refuerzo de seguridad para los ajustes de visualización de descuentos.

Filtros de la lista de descuentos

ResueltoActualizado:
Corregido en: 1.0.5
Algunos filtros de la lista de descuentos no coincidían con las columnas mostradas. Ahora las columnas afectadas se filtran correctamente.

El módulo no se carga

ResueltoActualizado:
Corregido en: 1.0.5
El módulo podía no cargarse por un conflicto con PrestaShop. Ahora se carga sin ese conflicto.

Fallos de formato de precios en versiones recientes de PrestaShop

ResueltoActualizado:
Corregido en: 1.0.5
La administración de descuentos podía fallar al dar formato a los precios en versiones recientes de PrestaShop. Ahora los precios se muestran correctamente.

Solicitudes de funcionalidades

7

Implementado

Franjas de descuento recurrentes con zona horaria configurable

Implementado
Las campañas de descuento admiten franjas horarias recurrentes en la zona horaria elegida, incluidas las que cruzan la medianoche. Puedes definir las horas de activación en la programación de la campaña.

Administración multilingüe

Implementado
Usa la administración de descuentos en alemán, francés, español, italiano y polaco.

Gestión de licencia

Implementado
Consulta y gestiona la licencia del módulo desde una página específica del back office.

Actualizaciones del módulo con un clic

Implementado
Busca e instala actualizaciones del módulo desde el back office.

Descuentos en existencias de baja rotación

Implementado
Aplica descuentos automáticamente a productos sin ventas que cumplan los criterios durante un número de días elegido y con existencias superiores a un umbral elegido. Define los productos, las exclusiones y los límites mínimos de precio o margen, previsualiza el resultado y revierte los cambios.

Programaciones de descuentos recurrentes

Implementado
Repite las campañas de descuentos con programaciones diarias, semanales, mensuales o personalizadas.

Integración del historial de precios Omnibus

Implementado
Comunica los cambios aplicados en los precios del catálogo para el seguimiento 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.
Iniciar tienda demo

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.

Cargando...
Volver arriba