Saltar al contenido principal

Cancelación Automática de Pedidos Impagados

Mueve automáticamente los pedidos impagados al estado Cancelado tras un período de gracia configurable, restaurando el stock reservado sin ningún trabajo manual.

nota

Disponible desde v1.0.3

Descripción General

Cuando un cliente realiza un pedido y elige un método de pago offline — transferencia bancaria, pago por wire u otro método que hayas configurado — ese stock queda retenido pero no ha llegado ningún pago. Si el cliente nunca paga, esos artículos permanecen no disponibles para otros compradores y las cifras de tu inventario se vuelven inexactas.

La función de cancelación automática resuelve esto dando a cada pedido impagado un plazo límite. Una vez superado el plazo, el cron cambia el estado del pedido a Cancelado, lo que activa el proceso de cancelación estándar de PrestaShop: se restauran las cantidades de stock, se actualiza el historial del pedido y el cliente recibe el correo de confirmación de cancelación estándar de PrestaShop.

Hay dos formas independientes de activar una cancelación, y pueden coexistir:

  1. Plazo global — un único número de días que se aplica a todos los pedidos impagados de cualquier método de pago. Todos los pedidos que superen esa antigüedad se cancelan automáticamente, independientemente de los mensajes de recordatorio que hayas configurado.
  2. Cancelación por mensaje — un mensaje de recordatorio específico puede marcarse como "aviso final". Cuando el cron envía ese mensaje, cancela el pedido inmediatamente después de enviar el correo. Este método te da un control preciso sobre el momento exacto en que se cancela un pedido y te permite enviar primero un aviso final personalizado.

Puedes usar ambos métodos al mismo tiempo. Si la cancelación por mensaje se activa antes de que se alcance el plazo global, el pedido se cancela en ese momento y el plazo global no llega a aplicarse.

Configuración

Paso 1: Activar la función de cancelación global

  1. Ve a Módulos > Gestor de módulos, busca Order Payment Reminders Pro y haz clic en Configurar.
  2. Haz clic en la pestaña Configuración Global.
  3. Establece Activar función de cancelación de pedidos en .
  4. Introduce un número en Cancelar pedido después de (en días). Por ejemplo, introduce 10 para cancelar cualquier pedido impagado de más de 10 días de antigüedad.
  5. Haz clic en Guardar.

Si tu tienda usa el módulo Bank Wire de PrestaShop, la descripción del campo muestra el valor recomendado del ajuste Período de reserva de ese módulo para que puedas mantener ambos sincronizados.

Campos de la pestaña Configuración Global:

CampoValoresPredeterminadoDescripción
Activar función de cancelación de pedidosSí / NoNoInterruptor principal del sistema de cancelación automática. No se produce ninguna cancelación cuando está desactivado, aunque los indicadores de cancelación por mensaje estén habilitados.
Cancelar pedido después deNúmero (días)0Cuántos días después de la creación del pedido se cancela. Un valor de 0 desactiva el plazo global aunque la función esté activada.

Paso 2: (Opcional) Marcar un mensaje de recordatorio como disparador de cancelación

Si quieres enviar un correo personalizado de "última oportunidad" en el momento de la cancelación, en lugar de (o además de) usar el plazo global:

  1. En la pestaña Mensajes de Recordatorio, haz clic en Editar en el mensaje que quieres que sea el aviso final, o crea un nuevo mensaje en el momento adecuado (por ejemplo, 9 días después de la creación del pedido).
  2. Desplázate hasta la sección Opciones Avanzadas dentro del formulario de mensaje.
  3. Establece Cancelar el pedido tras este mensaje en .
  4. Guarda el mensaje.

Cuando el cron procesa un pedido que ha alcanzado el tiempo programado de este mensaje, envía el correo y luego cancela el pedido inmediatamente. El contador del plazo global sigue ejecutándose en paralelo — el umbral que se alcance primero es el que se aplica.

Formulario de mensaje de recordatorio — Opciones Avanzadas:

CampoValoresPredeterminadoDescripción
Cancelar el pedido tras este mensajeSí / NoNoCuando se establece en Sí, el cron cancela el pedido inmediatamente después de enviar este recordatorio. El estado del pedido cambia a Cancelado y se restaura el stock.

Paso 3: Verificar que el cron está activo

La lógica de cancelación automática solo se ejecuta cuando se llama al endpoint del cron. Si el cron no está configurado, no se producirá ninguna cancelación independientemente de tu configuración.

  1. Ve a la pestaña Configuración del Cron en el módulo.
  2. Copia la URL del cron que aparece allí (contiene tu token seguro).
  3. Añade un cron job diario en el servidor que llame a esa URL, por ejemplo a medianoche.

Consulta la guía de Configuración del Cron para instrucciones detalladas.

Paso 4: Probar antes de activar en producción

Antes de habilitar la cancelación automática en una tienda en producción:

  1. Ve a Configuración Global y activa el Modo de Prueba.
  2. Introduce una dirección de correo de prueba.
  3. Activa la URL del cron manualmente desde tu navegador.
  4. El módulo muestra un resumen de lo que haría — los pedidos que se cancelarían aparecen como "Direct Cancel Order [id]" sin cambiar realmente su estado.
  5. Una vez satisfecho con el resultado, desactiva el Modo de Prueba.

Cómo Funciona

El plazo global

Cada vez que se ejecuta el cron, el módulo obtiene todos los pedidos impagados de los métodos de pago para los que has configurado mensajes. Para cada pedido calcula cuántas horas han transcurrido desde que se creó.

Si Cancelar pedido después de está establecido en un valor mayor que 0, el módulo lo convierte a horas (días × 24). Cualquier pedido más antiguo que ese umbral se cancela inmediatamente — por este camino no se envía ningún correo previo, y no es necesario que exista ningún mensaje de recordatorio para que se produzca la cancelación.

El flujo de cancelación:

  1. El objeto OrderHistory de PrestaShop mueve el pedido al estado de pedido Cancelado.
  2. Se ejecuta el proceso de cancelación estándar de PrestaShop, que restaura las cantidades de stock de los productos y, si el estado del pedido está configurado para enviar un correo, envía al cliente el correo de cancelación predeterminado de PrestaShop.
  3. La entrada del historial del pedido se añade sin ningún empleado asociado — el módulo actúa de forma automática.
  4. Si el proceso de cancelación de PrestaShop falla por cualquier motivo (por ejemplo, un problema de compatibilidad en algunos entornos de PS 8), el módulo recurre a una actualización directa de estado por SQL para que el pedido quede marcado como cancelado aunque no puedan ejecutarse los correos de restauración de stock.

Cancelación por mensaje

Cuando el cron está procesando un pedido que ha alcanzado el tiempo programado de un mensaje y ese mensaje tiene Cancelar el pedido tras este mensaje establecido en Sí:

  1. El módulo envía primero el correo de recordatorio al cliente.
  2. Tras el envío del correo (o el intento de envío), cancela el pedido usando el mismo proceso descrito anteriormente.

Esto permite que el cliente reciba un último correo explicando lo que está ocurriendo antes de que la cancelación surta efecto.

Interacción con el modo de prueba

Cuando el Modo de Prueba está activado:

  • Los pedidos que se cancelarían mediante el plazo global aparecen como "Direct Cancel Order [id] (referencia)" en la salida del cron — no se cancelan realmente.
  • Los pedidos que se cancelarían mediante un disparador por mensaje aparecen como "Cancel Order [id] (referencia)" — tampoco se cancelan.

No se produce ninguna cancelación real mientras el modo de prueba está activo, por lo que puedes simular con seguridad una ejecución completa del cron en una tienda en producción.

Interacción con el correo de resumen al administrador

Si has habilitado el Correo de Resumen al Administrador en Configuración Global, el resumen se ejecuta al inicio de cada ejecución del cron, antes de que se procesen cancelaciones o recordatorios. Examina la misma lista de pedidos impagados y marca los pedidos que están dentro de la ventana de alerta configurada antes del plazo de cancelación. Esto te proporciona un aviso diario para que puedas intervenir manualmente si es necesario.

Por ejemplo, si tu plazo global es de 10 días y tu alerta de resumen es de 24 horas, recibes cada día un correo con la lista de pedidos impagados desde hace 9 o más días — dándote una última oportunidad de contactar con el cliente antes de que el sistema cancele automáticamente.

Consulta Correo de Resumen al Administrador para los detalles de configuración.

Ejemplos de Uso

Ejemplo: Plazo simple de 14 días

Aceptas pagos por transferencia bancaria y quieres cancelar cualquier pedido no pagado en 14 días para coincidir con el período de reserva de tu banco.

  • Establece Activar función de cancelación de pedidos en .
  • Establece Cancelar pedido después de en 14.
  • No se necesita cancelación por mensaje.

Cada día cuando se ejecuta el cron, cancela cualquier pedido impagado de más de 14 días de antigüedad. El stock se restaura automáticamente.

Ejemplo: Recordatorios escalonados con un correo de cancelación final

Quieres enviar tres recordatorios (día 3, día 7, día 10) y luego cancelar el día 10 con un correo final personalizado.

  1. Crea tres mensajes de recordatorio: a las 72 horas, 168 horas y 240 horas.
  2. En el mensaje del día 10 (240 horas), establece Cancelar el pedido tras este mensaje en .
  3. Deja Cancelar pedido después de en 0 (desactivado), o establécelo por encima de 10 como medida de seguridad.

Cuando el cron se ejecuta el día 10 para un pedido impagado, envía tu correo final personalizado y luego cancela el pedido. Si el cron no se ejecuta durante varios días y el pedido supera el día 10, el plazo global actúa como respaldo.

Ejemplo: Plazos distintos por método de pago

Los pedidos por transferencia bancaria deben cancelarse a los 7 días; un método offline más lento debe cancelarse a los 14 días. Como el plazo global es un único valor, usa la cancelación por mensaje para conseguirlo:

  • Crea un mensaje para transferencia bancaria a las 168 horas (7 días) con Cancelar el pedido tras este mensaje establecido en .
  • Crea un mensaje para el otro método de pago a las 336 horas (14 días) con Cancelar el pedido tras este mensaje establecido en .
  • Establece Cancelar pedido después de en 0 (desactivado globalmente).

Cada método de pago sigue su propio calendario.

Notas Importantes

  • La función de cancelación automática solo afecta a pedidos que siguen impagados. Los pedidos que han sido pagados — aunque sea parcialmente — no se modifican.
  • Los pedidos ya en estado Cancelado se omiten; el módulo comprueba el estado actual antes de aplicar una segunda cancelación.
  • El módulo no envía un correo de cancelación propio. El cliente recibe el correo de cancelación estándar de PrestaShop (configurado en Pedidos > Estados para el estado Cancelado), si ese estado está configurado para enviarlo.
  • Al usar la cancelación por mensaje en una tienda multilingüe, el correo de recordatorio se envía en el idioma del cliente antes de que se produzca la cancelación.
  • En una configuración multitiendo, Cancelar pedido después de (wr_cancel_days) y el interruptor de cancelación (wr_cancel_orders) son valores globales que se aplican a todas las tiendas. Los indicadores de cancelación por mensaje se almacenan por mensaje y pueden limitarse a un método de pago específico.
  • El valor de Cancelar pedido después de se interpreta solo en días enteros. No es posible establecer un plazo de, por ejemplo, 7,5 días.
  • No existe posibilidad de deshacer una cancelación automática. Si un pedido se cancela por error, debes restaurarlo manualmente en el Back Office.

Solución de Problemas

ProblemaSolución
Los pedidos no se cancelan aunque haya pasado el plazoComprueba que Activar función de cancelación de pedidos está en y que Cancelar pedido después de es mayor que 0. Luego confirma que el cron se está ejecutando — abre la URL del cron directamente en un navegador y comprueba la salida en busca de mensajes de cancelación.
Los pedidos se cancelan demasiado prontoLa antigüedad se calcula desde la fecha de creación del pedido, no desde el último recordatorio enviado. Si tu cron se ejecuta en intervalos impredecibles, un pedido creado cerca de medianoche puede parecer más antiguo de lo esperado. Verifica la hora de creación del pedido en el Back Office.
El stock no se restaura después de la cancelaciónLa restauración del stock la gestiona el proceso de cancelación de PrestaShop, no este módulo. Comprueba que el estado de pedido Cancelado está configurado en Pedidos > Estados con los ajustes de restauración de stock habilitados. En algunas versiones antiguas de PS, la restauración de stock depende de si el pedido fue validado.
El cliente no recibió el correo de cancelaciónEl módulo no envía su propio correo de cancelación. PrestaShop solo envía el correo si el estado de pedido Cancelado tiene habilitado Enviar correo al cliente en Pedidos > Estados. Comprueba ese ajuste.
La cancelación por mensaje se activa pero el pedido no se cancelaSi el modo de prueba está activado, las cancelaciones son solo simuladas. Desactiva el modo de prueba y vuelve a ejecutar el cron. Si el problema persiste, comprueba los registros de PrestaShop en Parámetros Avanzados > Registros buscando entradas de WireTransferReminder que describan un fallo de cancelación.
La salida del cron muestra "Direct Cancel Order" pero nada cambiaEsta es la salida del modo de prueba. Significa que el pedido se cancelaría pero el modo de prueba lo impide. Desactiva el modo de prueba en Configuración Global.
Se ejecutó el respaldo SQL de cancelación pero el stock no se restauróEl respaldo SQL directo solo actualiza la fila de estado del pedido — no ejecuta el proceso de cancelación completo de PrestaShop. Es un camino de último recurso. Para activar la restauración correcta del stock, cambia manualmente el estado del pedido en el Back Office, lo que activa el proceso completo.

Preguntas Frecuentes

¿La cancelación de un pedido a través de este módulo activará el correo de cancelación estándar de PrestaShop al cliente?

Sí, si tu estado de pedido Cancelado está configurado para enviar un correo en Pedidos > Estados. El módulo utiliza el propio proceso de historial de pedidos de PrestaShop, que respeta ese ajuste exactamente igual que lo haría una cancelación manual.

¿Puedo establecer plazos de cancelación distintos para diferentes métodos de pago?

El plazo global se aplica a todos los métodos de pago a la vez. Para obtener plazos por método de pago, desactiva el plazo global (establécelo en 0) y usa en su lugar la opción de cancelación por mensaje en un mensaje vinculado a ese método de pago específico con el horario que representa tu plazo.

¿Qué ocurre si el cron no se ejecuta durante varios días y muchos pedidos superan el plazo a la vez?

Todos los pedidos que cumplan los requisitos se cancelan en la siguiente ejecución del cron. No hay límite de procesamiento por lotes, así que si 50 pedidos han superado el plazo, los 50 se cancelan en esa única ejecución.

¿Funciona la cancelación automática en pedidos realizados con métodos de pago distintos a la transferencia bancaria?

Sí. Desde la versión 1.2.0, el módulo es compatible con cualquier método de pago offline. El cron obtiene los pedidos impagados en función de los módulos de pago para los que hayas creado mensajes de recordatorio. Si tienes un mensaje configurado para un módulo de pago determinado, sus pedidos se incluyen en la comprobación de cancelación.

Si uso tanto el plazo global como un indicador de cancelación por mensaje, ¿cuál se activa primero?

El que alcance primero el umbral. Si el horario del mensaje (por ejemplo, el día 9) llega antes que el plazo global (día 14), el mensaje se envía y el pedido se cancela el día 9. El plazo global nunca se activa para ese pedido porque ya está cancelado. Si el horario del mensaje nunca se alcanza (por ejemplo, porque el mensaje fue eliminado), el plazo global actúa como red de seguridad.

¿Puedo ver cuántos pedidos se han cancelado automáticamente en el panel de control?

El panel de Estadísticas de Recuperación muestra un recuento de "Total Cancelados" para los pedidos recordados que terminaron en estado Cancelado. Esto incluye tanto los pedidos cancelados automáticamente como los cancelados manualmente, siempre que se les haya enviado al menos un recordatorio.

¿El modo de prueba protege mis pedidos en producción de cancelaciones accidentales?

Sí. Cuando el modo de prueba está activo, no se modifica ningún pedido. La salida del cron describe lo que ocurriría — puedes revisarla con seguridad sin afectar a ningún pedido.

¿Hay alguna forma de excluir pedidos específicos de la cancelación automática?

No a través de la interfaz del módulo. Si necesitas conservar un pedido específico, procésalo manualmente (márcalo como en espera de pago o contacta directamente con el cliente) o desactiva temporalmente la función, gestiona el pedido y vuelve a activarla.

Funciones Relacionadas