PS PrestaShop Principiante

Gestión de Caducidad y Lotes — Documentación

Instalar y usar la gestión de lotes por caducidad: FEFO, promociones automáticas, lotes caducados, cron y alertas.

Actualizado Versión del módulo 1.0.0

Instalación

El módulo se instala como cualquier otro módulo de PrestaShop, sin dependencias ni Composer.

  1. En su back office, abra Módulos → Gestor de módulos.
  2. Haga clic en Subir un módulo y suelte el archivo dfdlc-1.0.0.zip.
  3. Cuando termine la instalación, haga clic en Configurar.

Durante la instalación, el módulo crea dos tablas (lotes y movimientos de stock), añade la pestaña Catálogo → Lotes DLC/DLUO y registra cuatro hooks: displayHeader, displayProductAdditionalInfo, actionValidateOrder y actionProductDelete.

Si la pestaña Lotes DLC/DLUO no aparece de inmediato en el menú Catálogo, vacíe la caché de PrestaShop desde Parámetros avanzados → Rendimiento y vuelva a iniciar sesión en el back office.

Entender la caducidad y el consumo preferente

El módulo distingue dos tipos de fecha, y esa distinción no es cosmética: determina lo que el módulo se permite hacer de forma automática.

Fecha de caducidad (DLC)

Se expresa como «consumir antes de». Afecta a los alimentos microbiológicamente perecederos. Una vez superada, el producto se considera peligroso y no debe venderse. Por eso el módulo aplica a estos lotes las acciones automáticas sobre el stock y, si lo desea, la desactivación del producto.

Consumo preferente (DLUO / DDM)

Se expresa como «consumir preferentemente antes de». Indica una pérdida de calidad, no un riesgo sanitario. El producto sigue siendo legalmente vendible después de esa fecha, siempre que el cliente esté claramente informado. El módulo se limita entonces a desactivar el lote vencido: nunca retira stock ni desactiva el producto en un lote de consumo preferente.

Elija el tipo de fecha con atención al crear cada lote. Es ese campo, y solo ese, el que determina si se activan o no las acciones automáticas sobre el stock al vencer.

Configurar el módulo

La página de configuración reúne todos los ajustes, junto con la URL de la tarea cron y un estado rápido de sus lotes.

Visualización en el front office

  • Mostrar la fecha en la ficha de producto: muestra la fecha del lote disponible más próximo, con la mención adaptada al tipo de fecha.
  • Umbral del distintivo de fecha próxima (días): por debajo de este número de días restantes aparece un distintivo «Fecha próxima» junto a la fecha. Valor por defecto: 10 días.

Promociones automáticas

  • Activar las promociones automáticas: activa o desactiva por completo el mecanismo.
  • Aplicar el descuento a partir de (días): ventana antes de la fecha límite en la que un lote pasa a ser elegible. Valor por defecto: 15 días.
  • Porcentaje de descuento: tasa aplicada, entre 1 y 90 %. Valor por defecto: 30 %.

Tratamiento de los lotes caducados

Hay tres modos disponibles, del más prudente al más automático:

  1. Desactivar solo el lote — sin acción sobre el stock. Recomendable si prefiere decidir caso por caso.
  2. Desactivar el lote y retirar su cantidad restante del stock — alinea de inmediato el stock de PrestaShop con la realidad del almacén. Es el modo recomendado.
  3. Retirar el stock y desactivar el producto si no queda ningún lote válido — evita vender un artículo cuyo stock está totalmente caducado.

Alertas

  • Umbral de alerta (días antes del vencimiento): ventana de vigilancia para el correo resumen. Valor por defecto: 30 días.
  • Correo del destinatario: déjelo vacío para usar la dirección de la tienda.

Crear y gestionar los lotes

Vaya a Catálogo → Lotes DLC/DLUO. El listado muestra sus lotes ordenados por fecha de vencimiento ascendente, con código de color y días restantes. Dos indicadores en la parte superior recuerdan cuántos lotes caducados siguen activos y cuántos están próximos a vencer.

Añadir un lote

  1. Haga clic en Añadir un lote.
  2. Escriba al menos dos caracteres en el campo Producto: la búsqueda sugiere los productos correspondientes. Seleccione uno.
  3. Si el producto tiene combinaciones, aparece un segundo campo. Deje «Todas las combinaciones» para asociar el lote al producto completo, o elija una combinación concreta.
  4. Indique el número de lote, el tipo de fecha, la fecha límite y la cantidad recibida.
  5. La referencia de proveedor y la nota son opcionales, pero muy útiles en caso de retirada.

Puede combinar ambos niveles en un mismo producto: algunos lotes asociados a una combinación concreta y un lote genérico a nivel de producto. El descuento consume primero los lotes de la combinación pedida y después los del producto.

Modificar o eliminar un lote

La edición permite ajustar la cantidad (tras un inventario, por ejemplo) o corregir una fecha. Al eliminar un lote también se retira la regla de precio asociada si había una promoción automática en curso, junto con su historial de movimientos.

Exportar

El botón de exportación del listado genera un CSV de sus lotes, incluidos los filtros y el orden aplicados. Práctico para un control de calidad o un inventario.

El descuento de stock FEFO

FEFO significa First Expired, First Out: sale primero el lote cuya fecha está más próxima. No hace falta ningún ajuste, el mecanismo se aplica automáticamente.

Al validar un pedido, para cada línea de producto, el módulo:

  1. reúne los lotes activos del producto que aún tienen cantidad disponible;
  2. coloca primero los asociados a la combinación exacta pedida y después los asociados al producto;
  3. ordena ese subconjunto por fecha de vencimiento ascendente;
  4. descuenta la cantidad pedida recorriendo esa lista, lote tras lote.

Ejemplo: un pedido de 10 unidades frente a un lote de 4 (que vence el 12 de agosto) y un lote de 8 (que vence el 3 de octubre) consumirá las 4 unidades del primer lote y luego 6 unidades del segundo. Ambos movimientos se registran por separado, con el mismo pedido de origen.

El descuento FEFO es independiente del stock de PrestaShop, que sigue funcionando con normalidad. El módulo mantiene el desglose de ese stock en lotes con fecha; el stock de PrestaShop sigue siendo la referencia para la disponibilidad de venta.

Promociones automáticas en fechas próximas

Cuando un lote entra en la ventana configurada, el cron crea una regla de precio de catálogo (un specific price estándar de PrestaShop) sobre el producto:

  • descuento en porcentaje, con la tasa que haya definido;
  • fecha de inicio: el día de creación;
  • fecha de fin: la fecha de caducidad del lote, a las 23:59.

La promoción se apaga por sí sola al vencer, sin dejar reglas huérfanas en su catálogo. El módulo crea una sola promoción a la vez por producto, aunque varios lotes entren simultáneamente en la ventana.

Del lado del cliente, el descuento se muestra con normalidad en la ficha de producto y el distintivo «Fecha próxima» indica el porcentaje vigente.

La regla creada es una regla de precio de catálogo estándar, sujeta a los mismos mecanismos de prioridad que sus demás reglas. Si ya aplica descuentos de catálogo amplios, compruebe la coherencia de prioridades antes de activar las promociones automáticas.

Configurar la tarea cron

El descuento FEFO funciona sin cron, ya que se activa con los pedidos. En cambio, tres procesos requieren una llamada diaria: las promociones automáticas, el tratamiento de los lotes caducados y la alerta por correo.

La URL protegida por token se muestra en la página de configuración del módulo. Tiene esta forma:

https://su-tienda.com/index.php?fc=module&module=dfdlc&controller=cron&token=SU_TOKEN

Programe una llamada al día, preferiblemente a primera hora de la mañana. Dos métodos habituales:

  • Cron de su alojamiento: añada una tarea diaria que llame a la URL con wget o curl.
  • Servicio externo: cualquier servicio de cron en línea acepta esta URL.

La respuesta es un JSON con el detalle de la ejecución:

{
  "success": true,
  "promos_applied": 3,
  "expired": {
    "lots_deactivated": 2,
    "stock_deducted": 7,
    "products_disabled": 0
  },
  "alerts_sent": 5
}

Este formato se integra directamente en una herramienta de supervisión, de modo que la automatización no funciona a ciegas.

El token se genera aleatoriamente en la instalación. Si sospecha que se ha filtrado, reinstale el módulo para generar uno nuevo y recuerde actualizar su tarea programada.

Las alertas por correo

En cada ejecución del cron, el módulo busca los lotes cuya fecha entra en la ventana de alerta y que aún no se han señalado. Si encuentra alguno, envía un único correo resumen que enumera, por cada lote: el número, el producto, el tipo de fecha, el vencimiento y la cantidad restante.

Cada lote se señala una sola vez, gracias a un marcador en la base de datos. Así no recibe el mismo recordatorio todos los días.

Las plantillas de correo se incluyen en francés e inglés en la carpeta mails/ del módulo. Puede personalizarlas libremente o añadir otros idiomas duplicando una carpeta existente.

Visualización en la ficha de producto

El módulo utiliza el hook displayProductAdditionalInfo, presente en los temas Classic y Hummingbird y en la gran mayoría de temas de terceros. El bloque muestra:

  • la mención adaptada al tipo de fecha: «Consumir antes de» para una caducidad, «Consumir preferentemente antes de» para un consumo preferente;
  • la fecha del lote disponible más próximo;
  • el distintivo «Fecha próxima» si se supera el umbral, con el porcentaje de descuento si hay una promoción activa.

Si el producto no tiene ningún lote activo con stock y fecha válida, no se muestra nada: no aparece ningún recuadro vacío en la ficha.

Personalizar la visualización

El renderizado está aislado en la plantilla views/templates/hook/product-expiry.tpl y los estilos en views/css/front.css. Puede sobrescribir la plantilla desde su tema para ajustar la posición o el formato, sin modificar el módulo.

Trazabilidad y retirada de lote

Cada salida de stock se registra en la tabla de movimientos con el lote afectado, la cantidad y el pedido de origen. Partiendo de un número de lote puede recuperar la lista de pedidos que lo consumieron.

Esa es la base de un procedimiento de retirada. El módulo aporta el dato en bruto; el procedimiento en sí (información a los clientes, gestión de devoluciones, eventual declaración a las autoridades) corresponde a su organización de calidad.

Preguntas frecuentes

¿El módulo sustituye al stock de PrestaShop?

No, lo complementa. Las cantidades de PrestaShop siguen siendo la referencia para vender. El módulo mantiene en paralelo el desglose de ese stock en lotes con fecha. En modo de retirada de stock, ajusta la cantidad de PrestaShop cuando se retira un lote caducado, para que ambas vistas sigan siendo coherentes.

¿Qué ocurre si mis lotes no cubren todo mi stock?

Nada bloqueante. El descuento FEFO solo consume lo disponible en los lotes; si estos se agotan, el pedido continúa con normalidad y solo se descuenta la cantidad de PrestaShop. Le corresponde completar el registro de lotes a medida que recibe mercancía.

¿Puedo registrar un lote con una fecha ya pasada?

Sí, pero se tratará como caducado en la siguiente ejecución del cron. Para el historial es mejor registrarlo con su fecha real y dejar que el módulo haga su trabajo.

¿Es compatible con multitienda?

Sí. Cada lote queda asociado a la tienda en la que se creó, y las retiradas de stock se aplican sobre esa tienda.

¿Qué ocurre al desinstalar?

Se eliminan las dos tablas, se retira la pestaña de administración y se desregistran los hooks. Los lotes y su historial no se conservan: haga una copia de seguridad de su base de datos si prevé reinstalar.

¿Te ha resultado útil esta página?

¿Sigues atascado? Contacta con soporte