Pre-order Manager — Guía completa
Instalación, configuración de preventas con depósito, conversión automática, recordatorios y API REST.
Presentación
DataFirefly Pre-order Manager convierte cualquier producto WooCommerce (simple o variable) en una preventa profesional. El cliente paga un depósito o el importe total al hacer el pedido; en la fecha de disponibilidad (ETA), el plugin convierte automáticamente la preventa: los pagos completos pasan a procesamiento, los depósitos generan un pedido de saldo con enlace de pago. Recordatorios automáticos, límite de stock futuro, badge personalizable y una API REST completa cierran el flujo.
Instalación
- Descarga el archivo
dfpreorder.zipdesde tu cuenta DataFirefly. - En tu administración WordPress, ve a Plugins → Añadir nuevo → Subir plugin.
- Selecciona el ZIP, haz clic en Instalar ahora y activa el plugin.
- Aparece un nuevo submenú WooCommerce → Pré-commandes: es el centro de control del plugin.
Requisitos: WordPress 6.0+, WooCommerce 7.0+ y PHP 7.4 mínimo. El plugin declara compatibilidad HPOS y bloques Cart & Checkout — no se necesita configuración adicional.
Ajustes globales
Abre WooCommerce → Pré-commandes → pestaña Ajustes. Las opciones se agrupan en bloques:
- Activación — interruptor global del módulo y política de carrito mixto (permitir o bloquear la mezcla de preventas y productos estándar en el mismo carrito).
- Conversión automática — activa la conversión diaria en la ETA, define un periodo de gracia (0 a 90 días) tras la ETA, y el restock de unidades reservadas al cancelar.
- Visualización del badge — texto, color de fondo, color del texto y ubicaciones (listados de tienda y/o página de producto).
- Etiquetas — texto del botón de añadir al carrito y etiqueta que precede a la ETA.
- Correos al cliente — activación de los correos de disponibilidad y de saldo a pagar.
- Recordatorios de saldo impagado — activación de recordatorios y umbrales en días separados por comas (por defecto
7,14,30). - Gastos de envío — opción de trasladar los gastos de envío al pedido de saldo (ver sección dedicada más abajo).
Configurar un producto en preventa
- Abre el producto en el editor WooCommerce y localiza la pestaña Pré-commande en los datos del producto.
- Marca Activar preventa.
- Elige el modo de pago: «Pago completo» (el cliente paga todo al hacer el pedido) o «Depósito» (porcentaje o importe fijo, el saldo se factura a la disponibilidad).
- Indica la fecha ETA (fecha de disponibilidad prevista). Un campo de texto opcional muestra una etiqueta libre en lugar de la fecha (ej. «Disponible a principios de julio»).
- Define opcionalmente un límite de stock futuro: el número máximo de unidades en preventa. El contador de unidades reservadas se muestra junto al campo.
- Personaliza si lo deseas el texto del badge para este producto y el comportamiento de conversión automática (heredar del ajuste global, forzar sí, forzar no).
- Guarda: el badge y el aviso ETA aparecen inmediatamente en la ficha de producto.
Para los productos variables, cada variación puede tener su propia fecha ETA y su propio límite de stock (en las opciones de la variación). La fecha de la variación prevalece sobre la del padre.
Ciclo de vida de una preventa
Este es el flujo completo, paso a paso:
- Pedido inicial — el cliente añade el producto al carrito. En modo depósito, el precio mostrado en el carrito y el checkout es el importe del depósito, con mención del saldo restante. Paga mediante la pasarela habitual.
- Registro — al pagar, el pedido pasa al estado
wc-preorder, se crea una fila en la tabla interna del plugin, y el cliente recibe el correo de confirmación de preventa. - Espera — la preventa aparece en WooCommerce → Pré-commandes → pestaña Lista con su estado, fecha ETA e importes.
- Conversión en la ETA — el cron diario (03:00, hora del sitio) detecta las preventas vencidas (ETA + periodo de gracia opcional):
- Modo pago completo: el pedido pasa a «Procesando» y el cliente recibe el correo de disponibilidad.
- Modo depósito: se genera automáticamente un pedido de saldo (estado «Pendiente de pago») y el cliente recibe el correo «Saldo a pagar» con un botón de pago directo.
- Pago del saldo — el cliente paga mediante el enlace del correo (URL de pago nativa de WooCommerce, protegida por order key, sin login) o desde Mi cuenta. Al pagar, la preventa se marca como completada y el pedido original pasa a «Procesando» en cuanto todas sus líneas de preventa están resueltas.
Gestión desde la administración
La pestaña Lista muestra todas las preventas con filtro por estado, búsqueda por ID de pedido o producto y paginación. Existen cuatro estados: Pendiente (azul), Saldo pendiente (ámbar), Completada (verde) y Cancelada (gris). Cada fila tiene dos acciones:
- Convertir — fuerza la conversión inmediata sin esperar la ETA (útil cuando el stock llega antes de tiempo).
- Cancelar — cancela la preventa, libera las unidades reservadas (si el restock está activado) y pasa el pedido a «Cancelado» si todavía estaba en estado preventa.
El botón «Ejecutar la conversión ahora» en la parte superior dispara inmediatamente la comprobación diaria sin esperar al cron de las 03:00.
Lado cliente: Mi cuenta
En la página Mi cuenta → Detalle del pedido:
- El pedido original muestra un panel «Saldo de tu preventa» con los pedidos de saldo enlazados, su importe, su estado y un botón «Pagar el saldo» para los aún impagados.
- El pedido de saldo muestra a su vez un panel «Preventa original» con enlace al pedido inicial.
Correos al cliente
Se incluyen cuatro correos transaccionales, cada uno en versión HTML y texto plano, editables desde WooCommerce → Ajustes → Correos electrónicos:
- Confirmación de preventa — enviado al registrar la preventa, con aviso de depósito cuando aplica.
- Preventa disponible — enviado en la conversión en modo pago completo.
- Saldo a pagar — enviado al generar el pedido de saldo, con el importe destacado y botón de pago directo.
- Recordatorio de saldo — recordatorios enviados en los umbrales configurados si el saldo sigue impagado.
Recordatorios automáticos
Cuando la opción está activa, el cron diario escanea los pedidos de saldo aún impagados (estados pendiente, en espera o fallido) y envía un recordatorio en cada umbral configurado. El campo acepta una lista de días separados por comas — por ejemplo 7,14,30 para recordar 7, 14 y 30 días después de la creación del pedido de saldo. Cada umbral se dispara una sola vez por pedido; el seguimiento se guarda en la meta del pedido de saldo.
Gastos de envío en el pedido de saldo
Por defecto, el pedido de saldo no lleva gastos de envío (se pagaron en el pedido original). Si tu depósito solo cubre la reserva del producto y facturas el envío al momento de expedir, activa la opción «Trasladar los gastos de envío al saldo»: las líneas de envío del pedido original se duplican en el pedido de saldo, con método e impuestos intactos.
Esta opción duplica los gastos. Actívala solo si el pedido de depósito se factura sin gastos de envío — por ejemplo mediante un método «Envío gratuito» condicionado a la presencia de productos en preventa en el carrito. Si no, el cliente pagará el envío dos veces.
Shortcodes
[dfpo_badge product_id="123"]— muestra el badge de preventa del producto indicado (o del producto actual si se omite).[dfpo_eta product_id="123"]— muestra la fecha de disponibilidad formateada con su etiqueta.[dfpo_remaining product_id="123"]— muestra el número de unidades aún reservables cuando hay un límite definido.
API REST
Todas las rutas están bajo el namespace dfpo/v1 y requieren la capacidad manage_woocommerce (autenticación por clave API WooCommerce o application password):
GET /wp-json/dfpo/v1/preorders— lista paginada (parámetrosstatus,page,per_page).GET /wp-json/dfpo/v1/preorders/{id}— detalle de una preventa.POST /wp-json/dfpo/v1/preorders/{id}/convert— fuerza la conversión (parámetro booleanoforce).POST /wp-json/dfpo/v1/preorders/{id}/cancel— cancela y libera el stock reservado.POST /wp-json/dfpo/v1/run-conversion— dispara la comprobación de conversión inmediatamente.
Hooks para desarrolladores
dfpo_preorder_registered(acción) — tras crear una línea de preventa.dfpo_preorder_converted_full(acción) — tras la conversión de un pago completo.dfpo_preorder_converted_deposit(acción) — tras generar el pedido de saldo.dfpo_preorder_balance_paid(acción) — tras cobrar el saldo.dfpo_email_preorder_balance_reminder(acción) — al dispararse un recordatorio (permite conectar un SMS u otro canal).dfpo_badge_html(filtro) — para modificar el HTML del badge.
Solución de problemas
- La conversión no se dispara — comprueba que WP-Cron funciona en tu hosting (algunos lo desactivan; usa entonces un cron de sistema llamando a
wp-cron.php). Siempre puedes convertir manualmente desde la pestaña Lista. - El precio del carrito parece incorrecto tras modificar el producto — vacía el carrito de prueba y las cachés (objeto y página). El plugin lee el precio original directamente de la base de datos para evitar efectos de caché.
- El correo de saldo no llega — comprueba que el correo «Saldo a pagar» está activado en WooCommerce → Ajustes → Correos electrónicos, y prueba la entregabilidad general de tu sitio (SMTP recomendado).
- El badge no aparece — comprueba el interruptor global del módulo, las ubicaciones del badge en los ajustes, y que el tema llama a los hooks WooCommerce estándar (
woocommerce_single_product_summary,woocommerce_after_shop_loop_item_title).
Desinstalación
Desactivar el plugin conserva todos los datos. Eliminar el plugin desde Plugins borra definitivamente las tablas internas, las opciones y las metas de producto. Los pedidos WooCommerce (original y de saldo) nunca se eliminan.