PS PrestaShop Principiante

Pedidos Recurrentes y Programados — Documentación PrestaShop 8 y 9

Instalar, planificar y explotar los pedidos recurrentes: del cron diario al enlace de carrito enviado al cliente.

Actualizado Versión del módulo 1.1.3

Qué hace el módulo

El módulo permite a sus clientes programar la repetición de un pedido desde su cuenta: cada semana, cada mes, cada trimestre, cada año, o según un intervalo libre expresado en días.

Antes de cada vencimiento, un planificador envía al cliente un email con un enlace seguro. Cuando el cliente hace clic, su carrito se reconstruye en ese preciso momento y se le redirige al proceso de compra habitual, donde paga con el método que prefiera.

Sin cargo automático. El módulo no almacena ningún medio de pago ni provoca ningún adeudo. No hay mandato recurrente que recoger, ni tarjeta que tokenizar, ni autenticación reforzada que repetir. El cliente confirma y paga él mismo cada pedido.

Instalación

  1. En el back office, abra Módulos — Gestor de módulos y luego Subir un módulo.
  2. Suelte el archivo ZIP suministrado, o copie la carpeta dfrecurringorder en el directorio modules/ de su tienda.
  3. Haga clic en Instalar. Las tablas, las pestañas de administración y los valores predeterminados se crean automáticamente.
  4. Configure la tarea programada descrita en la sección siguiente. Sin ella no saldrá ningún email de recordatorio.

El módulo añade un menú Pedidos — Pedidos recurrentes compuesto por tres pantallas: la lista de programaciones, el historial de envíos y la configuración.

Configurar el planificador

El módulo debe ejecutarse una vez al día. Una sola ejecución diaria basta: el planificador procesa en una pasada todas las programaciones que han llegado a su vencimiento.

Por URL

La página de configuración del módulo muestra la URL exacta, token incluido. Tiene este aspecto:

https://su-tienda.tld/module/dfrecurringorder/cron?token=SU_TOKEN

Esta URL funciona con el módulo oficial Tareas cron de PrestaShop, con un servicio de cron externo o desde una crontab de servidor:

0 6 * * * wget -q -O - "https://su-tienda.tld/module/dfrecurringorder/cron?token=SU_TOKEN"

Por línea de comandos

Es el método recomendado en un servidor dedicado: evita los tiempos de espera del servidor web.

0 6 * * * php /ruta/a/tienda/modules/dfrecurringorder/cli/run.php --token=SU_TOKEN

La opción --id_shop=N limita la ejecución a una sola tienda en contexto multitienda. Sin ella se procesan todas las tiendas.

Comprobar que funciona

La página de configuración ofrece un botón Ejecutar el planificador ahora. Lanza una pasada inmediata y muestra un informe: programaciones procesadas, emails enviados y fallos. La llamada por URL devuelve el mismo informe en formato JSON.

El token puede regenerarse en cualquier momento desde la configuración. Recuerde actualizar entonces su crontab, de lo contrario las llamadas siguientes serán rechazadas.

Configuración del módulo

Experiencia del cliente

  • Permitir a los clientes crear sus programaciones — muestra el botón «Programar este pedido» en el detalle del pedido y en la página de confirmación. Desactívelo si prefiere crear las programaciones usted mismo desde el back office.
  • Número máximo de programaciones por cliente — 0 para ilimitado. El valor predeterminado es 20.
  • Intervalo mínimo en días — impide crear programaciones demasiado próximas entre sí.
  • Juego de iconos del tema — los iconos que se muestran en la cuenta del cliente. El tema Classic de PrestaShop usa Material Icons, mientras que muchos temas comerciales cargan FontAwesome. Elija el que su tema carga realmente, o ningún icono. Si en la cuenta del cliente aparece una palabra suelta en lugar de un icono, simplemente significa que este ajuste no coincide con su tema.
  • Productos excluidos de los pedidos programados — una lista de identificadores de producto separados por comas. Estos productos nunca se copian en una programación ni se añaden a un carrito reconstruido. Consulte la sección sobre regalos y reglas de carrito.

Frecuencias disponibles

Cada frecuencia se activa o desactiva de forma independiente: diaria, semanal, quincenal, mensual, bimestral, trimestral, semestral, anual y personalizada en días. Solo aparecen en el formulario del cliente las frecuencias activadas.

De forma predeterminada están activas la semanal, quincenal, mensual, bimestral, trimestral, semestral y anual. La diaria y el intervalo personalizado están desactivados, ya que responden sobre todo a casos B2B específicos.

Emails y enlace de pago

  • Enviar el email X días antes del vencimiento — valor predeterminado aplicado a las nuevas programaciones. El cliente puede ajustarlo para la suya. Tres días es un buen punto de partida: lo bastante pronto para reaccionar, lo bastante tarde para seguir presente.
  • Duración de validez del enlace de pago — en días, 14 por defecto. Pasado ese plazo el enlace muestra un mensaje de caducidad e invita al cliente a regenerar uno desde su cuenta.
  • Ignorar los productos no disponibles — activado por defecto. Consulte la sección de casos particulares.
  • Enviar una copia al comerciante — útil durante el rodaje para comprobar cómo se ven realmente los emails.

Planificador

  • Programaciones procesadas por ejecución — 50 por defecto. Auméntelo si su volumen diario supera ese límite, o lance el cron varias veces al día.
  • Eliminar todos los datos al desinstalar — desactivado por defecto. Consulte la sección Desinstalación.

Ofrecer la recurrencia durante la compra

Por defecto el cliente programa su pedido a posteriori, a partir de un pedido ya realizado. Dos opciones facultativas permiten proponerle la recurrencia antes, en el momento de comprar. Ambas están desactivadas en la instalación: activarlas es una decisión, no un efecto secundario de una actualización.

Opción en el proceso de compra

Una casilla «Convertir esta compra en un pedido recurrente» aparece en el carrito y en la parte superior del paso de pago, seguida de un selector de frecuencia que solo muestra las frecuencias que usted haya activado. El cliente la marca, elige su ritmo y continúa con su pedido con normalidad.

La elección se guarda en el carrito, no en la sesión. Esto es importante con los medios de pago que redirigen al cliente a una página externa: el pedido se valida a menudo en un retorno de pago donde la sesión del cliente ya no existe, y una elección guardada en sesión se perdería sin ningún aviso.

La programación solo se crea una vez validado el pedido. Direcciones, transportista y moneda proceden por tanto de un pedido real, y un nuevo intento de pago no puede generar dos programaciones. El primer vencimiento se calcula a partir de la fecha del pedido, según la frecuencia elegida.

La opción solo se muestra a los clientes con sesión iniciada, ya que una programación pertenece a una cuenta de cliente. También respeta la cuota de programaciones por cliente y la lista de productos excluidos.

Aviso en la ficha de producto

Un breve aviso indica al visitante que el producto puede pedirse de forma recurrente y explica el principio en dos frases sencillas. Los productos de la lista de exclusión nunca lo muestran.

Si no aparece nada

Ambas visualizaciones se apoyan en puntos de anclaje estándar de PrestaShop. Algunos temas, y sobre todo los módulos de compra en una sola página, no los proporcionan todos. La página de configuración del módulo enumera esos puntos de anclaje con su estado y ofrece un botón para registrarlos de nuevo. Si alguno sigue inactivo después de ese intento, es que su tema o su módulo de compra no lo expone.

Lado cliente: programar un pedido

El recorrido parte siempre de un pedido ya realizado, lo que garantiza que productos, dirección y transportista sean coherentes.

  1. El cliente abre uno de sus pedidos desde su historial, o permanece en la página de confirmación justo después de una compra.
  2. Hace clic en Programar este pedido.
  3. Ajusta las cantidades si es necesario. Una cantidad fijada a 0 retira el producto de la programación.
  4. Elige su frecuencia, la fecha de su próximo pedido y, si lo desea, una fecha de fin o un número máximo de pedidos.
  5. Guarda. Un email de confirmación resume la programación.

La programación aparece después en Mi cuenta — Mis pedidos programados. Desde esa pantalla el cliente puede en todo momento:

  • modificar la frecuencia, la fecha o las cantidades;
  • pausar y luego reactivar, recalculándose entonces el próximo vencimiento hacia el futuro;
  • eliminar definitivamente la programación;
  • hacer clic en Pedir ahora para lanzar su carrito de inmediato sin esperar al vencimiento.

Lado comerciante: seguir las programaciones

Lista de pedidos recurrentes

Muestra para cada programación el cliente, la frecuencia, el número de productos, el próximo vencimiento, cuántos emails se han enviado, cuántos pedidos se han realizado realmente y el estado. La columna de pedidos es la medida más útil: indica cuántas programaciones se convierten efectivamente en facturación.

La ficha detallada de una programación permite enviar el enlace de pago al cliente de inmediato, algo práctico en soporte cuando un cliente indica no haber recibido su email.

Historial de envíos

Cada enlace generado da lugar a una línea de historial cuyo estado evoluciona a lo largo del recorrido:

  • Enviado — el email ha salido, el enlace aún no se ha abierto.
  • Enlace abierto — el cliente ha hecho clic y se ha construido un carrito.
  • Convertido en pedido — el carrito se ha convertido en pedido. La referencia queda vinculada automáticamente.
  • Caducado — la validez ha expirado sin pedido.
  • Error — el envío del email ha fallado. Revise la configuración de correo de la tienda.

En la ficha de pedido

Un panel al pie de la ficha de pedido lista las programaciones creadas a partir de ese pedido, con acceso directo a su detalle.

Cómo funciona el enlace de pago

Entender este mecanismo ayuda a responder a las preguntas de sus clientes.

  1. Al enviar el email, el módulo no crea ningún carrito. Solo genera un token aleatorio de 48 caracteres, de un solo uso y con marca temporal.
  2. Cuando el cliente hace clic, el módulo verifica el token y su fecha de caducidad.
  3. Si el cliente no ha iniciado sesión, se le redirige a la página de acceso estándar y después se le devuelve automáticamente a su enlace. El enlace nunca autentica al visitante por sí mismo.
  4. Una vez identificado, el carrito se construye a partir de la programación, con los precios, promociones, reglas de carrito y existencias del momento.
  5. Se le redirige al proceso de compra. Un segundo clic en el mismo enlace reutiliza el carrito ya creado mientras no se haya convertido en pedido.

Precisamente porque el carrito se construye al hacer clic, y no al enviar, siempre es correcto. Un carrito pregenerado en el momento del email sería erróneo en cuanto un precio, una promoción o una existencia cambiara entretanto.

Casos particulares

Producto no disponible en el vencimiento

Con la opción Ignorar los productos no disponibles activada, el producto afectado simplemente se descarta y el resto de artículos siguen siendo pedibles. El carrito solo se rechaza si no hay ningún producto disponible: el cliente ve entonces un mensaje que le invita a contactar con usted o a modificar su programación.

Si desactiva esta opción, una rotura bloquea la reconstitución del carrito. Este comportamiento conviene a las tiendas cuyos pedidos deben salir completos o no salir.

Dirección eliminada entre dos vencimientos

Si el cliente ha eliminado la dirección de entrega registrada en la programación, el módulo cambia automáticamente a su primera dirección disponible. La dirección de facturación sigue la misma lógica. El cliente siempre puede cambiar de dirección en el proceso de compra.

Regalos y reglas de carrito

Un producto regalado por una regla de carrito nunca se copia en la programación. Es intencionado: el regalo no lo eligió el cliente, y la regla de carrito lo añade por sí sola cada vez que se reconstruye el carrito y se cumplen las condiciones. Mantenerlo en la programación haría que apareciera dos veces.

El regalo se sigue entregando con normalidad en cada vencimiento y se ajusta al estado actual de su regla: si cambia el umbral o el producto regalado, los pedidos programados lo reflejan de inmediato.

Si un regalo lo añade un módulo de terceros en lugar de una regla de carrito nativa, la detección automática no puede reconocerlo. Añada entonces su identificador de producto en el ajuste Productos excluidos de los pedidos programados. Esa exclusión se aplica también a las programaciones existentes, sin que sus clientes tengan que volver a crearlas.

Finales de mes

Una programación mensual iniciada un 31 de enero no se desvía. El módulo ajusta la fecha al último día del mes cuando este es más corto: el 28 o 29 de febrero, luego el 31 de marzo. El día de origen queda memorizado, por lo que nunca se pierde.

Multitienda

Cada programación está vinculada a la tienda en la que se creó. Los emails salen con la identidad de esa tienda y el enlace de pago apunta a su dominio.

Fin de una programación

Una programación termina automáticamente cuando se supera la fecha de fin o cuando se alcanza el número máximo de pedidos. Pasa entonces al estado Terminada y deja de enviar emails, permaneciendo consultable en el historial.

Personalizar los emails

El módulo incluye dos plantillas, cada una en versión HTML y texto, en siete idiomas: francés, inglés, español, italiano, portugués, alemán y polaco:

  • dfro_reminder — el recordatorio enviado antes de cada vencimiento, con el enlace de pago.
  • dfro_created — la confirmación enviada al crear una programación.

Se pueden editar desde Diseño — Tema y logotipo — Emails, o directamente en la carpeta mails/ del módulo. Las variables disponibles en el recordatorio son: nombre y apellidos del cliente, etiqueta y frecuencia de la programación, fecha del próximo pedido, tabla de productos, total estimado, enlace de pago, enlace de gestión, duración de validez del enlace y nombre de la tienda.

El total mostrado en el email es una estimación calculada en el momento del envío, a título orientativo. El importe realmente facturado es el del carrito reconstruido al hacer clic. No presente nunca ese total como un compromiso de precio.

Resolución de problemas

No se envía ningún email

Compruebe por este orden: que la tarea programada se ejecuta, que el token de la crontab coincide con el mostrado en la configuración, que al menos una programación activa ha alcanzado su vencimiento, y que la tienda puede enviar emails. El botón Ejecutar el planificador ahora aísla rápidamente el problema: si envía los emails, la culpable es la tarea programada.

El enlace muestra «Enlace no válido»

El token no existe o ha sido truncado por el cliente de correo. Regenere un enlace desde la ficha de la programación en el back office.

El cliente entra en bucle en la página de acceso

Esto ocurre cuando el enlace se abre con una cuenta distinta a la del destinatario. El cliente debe cerrar sesión y volver a abrir el enlace.

El carrito reconstruido está vacío

Todos los productos de la programación están desactivados o agotados. Revise su estado en el catálogo, o desactive temporalmente la opción de exclusión de productos no disponibles para hacer explícito el diagnóstico.

Desinstalación

De forma predeterminada, la desinstalación conserva las tablas y las programaciones. Una reinstalación posterior recupera por tanto todos los datos. Para eliminarlo todo, active la opción Eliminar todos los datos al desinstalar antes de desinstalar el módulo.

Esta eliminación es definitiva y afecta a las programaciones, sus líneas de productos y el historial completo de envíos. Haga una copia de seguridad de su base de datos antes de activarla.

¿Te ha resultado útil esta página?

¿Sigues atascado? Contacta con soporte