Documentación del módulo de Preventa PrestaShop (dfpreorder)
Instala y configura dfpreorder: reglas de preventa, visualización en la ficha, asignación del stock recibido, gestión de retrasos y tarea cron.
<p>El módulo <strong>DataFirefly Pre-Orders</strong> (dfpreorder) permite vender productos antes de que lleguen al almacén en PrestaShop 8 y 9. Esta página cubre la instalación, la configuración, las reglas, los arribos de stock y la resolución de problemas.</p>
<h2>Instalación</h2>
<ol>
<li>Descarga el ZIP desde tu cuenta de cliente DataFirefly.</li>
<li>En el back office, ve a <em>Módulos > Gestor de módulos > Subir un módulo</em> y envía el ZIP.</li>
<li>Al instalarse, el módulo crea sus tablas, sus dos estados de pedido y dos pestañas de menú: <em>Catálogo > Preventas</em> para las reglas y <em>Pedidos > Preventas</em> para el seguimiento.</li>
<li>Abre la configuración del módulo para revisar los ajustes generales y copiar la URL del cron.</li>
</ol>
<p>El módulo funciona de PrestaShop 8.0 a 9.x con el mismo ZIP, en multitienda y multiidioma. Las cadenas se entregan en español, inglés, francés, alemán, italiano, neerlandés, polaco y portugués.</p>
<h2>Ajustes generales</h2>
<ul>
<li><strong>Texto del botón por defecto</strong> y <strong>texto de la etiqueta</strong>, por idioma. Cada regla puede sustituirlos.</li>
<li><strong>Carritos que mezclan preventa y artículos en stock</strong>: permitir sin mensaje, permitir con un aviso que indica que el pedido se enviará de una sola vez, o prohibir la mezcla.</li>
<li><strong>Casilla de consentimiento en el pago</strong>: añade una casilla obligatoria cuando el carrito contiene una reserva. El texto acepta el token <code>%date%</code>, sustituido por la fecha de envío estimada más tardía del carrito. La fecha del consentimiento se guarda en cada línea de preventa.</li>
<li><strong>Correos</strong> de confirmación y de disponibilidad, activables por separado.</li>
<li><strong>Asignación automática</strong> del stock recibido y <strong>estado de pedido</strong> a aplicar cuando todas las líneas estén asignadas.</li>
<li><strong>Formulario Avisarme</strong> en los productos que no se pueden pedir.</li>
<li><strong>Datos estructurados PreOrder</strong>, desactivados por defecto: actívalos solo si tu tema o tu módulo SEO no genera ya el JSON-LD del producto.</li>
</ul>
<h2>Crear una regla de preventa</h2>
<p>Ve a <em>Catálogo > Preventas</em> y luego a <em>Añadir una regla</em>. Una regla apunta a un producto o a una combinación concreta.</p>
<h3>Los tres modos</h3>
<ul>
<li><strong>Sin stock</strong>: la preventa empieza cuando el stock llega a cero y se detiene al reponer. Es el modo para las roturas de stock del proveedor.</li>
<li><strong>Forzada</strong>: el producto sigue en preventa mientras la regla esté activa, incluso con stock. Es el modo de un lanzamiento.</li>
<li><strong>Ventana de fechas</strong>: la preventa se abre y se cierra en las fechas indicadas. El cierre lo aplica la tarea cron y, como refuerzo, cada visita a la ficha de producto.</li>
</ul>
<h3>Los demás campos</h3>
<ul>
<li><strong>Fecha de envío estimada</strong>: se muestra en la ficha, el carrito, la cuenta del cliente, la factura y los correos.</li>
<li><strong>Cantidad máxima</strong> y <strong>máximo por cliente</strong>: 0 significa ilimitado. Los límites se comprueban en el servidor en cada guardado del carrito.</li>
<li><strong>Descuento de preventa</strong> en porcentaje o importe: disponible en los modos forzada y ventana de fechas, donde el periodo se conoce de antemano. Crea un precio específico que se elimina al terminar la regla.</li>
<li><strong>Texto del botón</strong> y <strong>mensaje</strong> por idioma, propios de la regla.</li>
<li><strong>Cuenta atrás</strong> (hasta el cierre o hasta el lanzamiento) y <strong>barra de unidades reservadas</strong>, que necesita una cantidad máxima.</li>
</ul>
<h3>Crear muchas reglas a la vez</h3>
<p>El botón <em>Asignación masiva e importación CSV</em> abre dos formularios. El primero crea una regla por producto que coincida con una categoría, una marca o un proveedor, combinando los criterios. El segundo importa un CSV con las columnas <code>product</code> (ID o referencia), <code>combination</code> (opcional), <code>mode</code>, <code>release_date</code>, <code>max_qty</code>, <code>max_per_customer</code>, <code>date_start</code>, <code>date_end</code>. Las reglas existentes se actualizan.</p>
<h2>Lo que ve el cliente</h2>
<p>En un producto en preventa, el botón de añadir al carrito toma el texto elegido, aparece una etiqueta en las imágenes de listado y de ficha, y un recuadro muestra la fecha estimada, tu mensaje, la cuenta atrás y la barra de unidades reservadas. El bloque se actualiza al cambiar de combinación.</p>
<p>En el carrito, cada línea afectada se señala con la fecha estimada. En el pago, la casilla de consentimiento recuerda la fecha. Tras el pedido, el cliente sigue sus reservas en <em>Mi cuenta > Mis reservas</em> y puede solicitar la cancelación de las líneas aún pendientes.</p>
<h2>Seguimiento y asignación del stock</h2>
<p><em>Pedidos > Preventas</em> reúne el seguimiento.</p>
<h3>Panel</h3>
<p>Los indicadores muestran las unidades pendientes, el número de pedidos implicados, los ingresos reservados con IVA, las unidades ya asignadas y las solicitudes de cancelación. La tabla por producto indica, para cada producto o combinación, las unidades pendientes, el stock de PrestaShop, las unidades asignables ahora mismo y la cantidad que hay que pedir al proveedor. El botón de exportación CSV usa las mismas columnas.</p>
<h3>Asignar una entrega</h3>
<p>Una reserva descuenta el stock al realizarse el pedido, lo que lo deja en negativo. Las unidades físicamente disponibles para las reservas son, por tanto: unidades pendientes + stock actual. Tras una reposición, el botón <em>Asignar (las más antiguas primero)</em> sirve los pedidos por antigüedad, o <em>Elegir pedidos</em> abre la pantalla de asignación, donde las líneas propuestas están marcadas y se pueden modificar.</p>
<p>Cuando todas las líneas en preventa de un pedido están asignadas, el pedido pasa al estado configurado (por defecto <em>Preventa: lista para enviar</em>) y el cliente recibe un correo. Después preparas el pedido con normalidad.</p>
<div class=»df-callout note»><p>La asignación automática sirve las reservas sin validación manual, pero nunca antes de la fecha anunciada en una regla forzada o de ventana de fechas.</p></div>
<h2>Gestionar un retraso</h2>
<p>Abre la regla, cambia la fecha de envío estimada y deja activada la opción <em>Avisar a los clientes si cambia la fecha</em>. Las reservas pendientes se actualizan y cada cliente afectado recibe un correo con la nueva fecha y un enlace para solicitar la cancelación. El número de clientes avisados aparece tras guardar, y el historial de fechas anunciadas se muestra bajo el formulario.</p>
<p>Las solicitudes de cancelación llegan al panel. <em>Confirmar la cancelación</em> libera las unidades reservadas; el reembolso se hace desde la página del pedido con tu método de pago. <em>Mantener la reserva</em> devuelve las líneas a pendiente.</p>
<h2>Tarea cron</h2>
<p>La configuración del módulo muestra una URL con token. Prográmala cada 15 minutos en tu alojamiento. Abre y cierra las ventanas de fechas a la hora prevista y, si la asignación automática está activa, sirve las reservas cuyo stock ha llegado.</p>
<h2>Preguntas frecuentes</h2>
<h3>¿El cliente paga el importe completo?</h3>
<p>Sí, en la versión 1.0. La señal con pago posterior del resto al estar disponible está prevista para la versión 1.1.</p>
<h3>¿Por qué un pedido pasa a Preventa: pendiente de stock?</h3>
<p>El módulo lleva el pedido a ese estado en cuanto está pagado y contiene al menos una línea en preventa. El estado está pagado y no es enviable, lo que evita que un pedido incompleto entre en preparación.</p>
<h3>¿Una regla sobre una combinación afecta a las demás?</h3>
<p>PrestaShop solo gestiona el ajuste de permitir pedidos sin stock a nivel de producto. El módulo lo aplica en el producto y luego bloquea en el front y en el carrito las combinaciones agotadas que no tienen regla, para conservar el comportamiento original de la tienda.</p>
<h3>La cuenta atrás no aparece</h3>
<p>Solo se muestra si la fecha de cierre (modo ventana) o la fecha de envío estimada está en el futuro, y si la opción está activada en la regla.</p>
<h3>El botón mantiene su texto original</h3>
<p>El módulo sustituye el texto del botón de añadir al carrito en los temas estándar. En un tema muy personalizado, contacta con el soporte indicando la URL de la ficha: se puede adaptar el selector del botón.</p>