Ir al contenido

Gestionar Lotes

Controla lotes de producto con números únicos, fechas de fabricación/caducidad y trazabilidad completa.

  1. En la página de detalle del producto, ve a la sección “Lotes”.
  2. Clic en ”+ Agregar Lote”.
  3. Completa los campos obligatorios (ver tabla abajo).
  4. (Opcional) Añade fechas de fabricación y caducidad.
  5. Clic en “Guardar” — lote creado.

Uso típico: Productos perecederos (alimentos, medicamentos) o control de calidad por fecha de fabricación.

CampoDescripciónEjemplo
Número de loteIdentificador único del loteLOTE-2024-001
CantidadUnidades en el lote500
CampoDescripciónEjemplo
Fecha de fabricaciónFecha de producción2024-01-15
Fecha de caducidadFecha de vencimiento2025-01-15
Precio de compraCoste del lote4500.00 €
NotasInformación adicionalLote importado de proveedor X
  • El lote aparece en la tabla de lotes del producto.
  • Se muestra alerta si la fecha de caducidad está próxima.
  • Puedes filtrar productos por fecha de caducidad.
MensajeCausaSolución
”El número de lote es requerido”Campo vacíoIntroduce número único
”La cantidad debe ser mayor que 0”Cantidad inválidaIntroduce cantidad > 0
”Lote duplicado”Número ya existeUsa código único para el lote
🔧 Detalles Técnicos — Gestionar Lotes

Tablas involucradas:

TablaColumnas claveFK
product_batchesid, product_id, batch_number, quantity, manufacturing_date, expiration_date, purchase_price, notes, is_activeproducts

Tipo de dato:

interface Batch {
id: string;
batch_number: string;
quantity: number;
manufacturing_date: string | null;
expiration_date: string | null;
purchase_price: number | null;
notes: string | null;
is_active: boolean;
}

Componente:

  • ProductBatchManager.tsx
  • Alertas automáticas para lotes próximos a caducar
  • Tabla con indicador visual de estado

Queries de diagnóstico:

-- Lotes de un producto
SELECT id, batch_number, quantity, manufacturing_date, expiration_date
FROM product_batches
WHERE product_id = '<product_id>'
AND is_active = true
ORDER BY created_at DESC;
-- Lotes próximos a caducar (30 días)
SELECT p.name, pb.batch_number, pb.expiration_date, pb.quantity
FROM product_batches pb
INNER JOIN products p ON p.id = pb.product_id
WHERE pb.expiration_date IS NOT NULL
AND pb.expiration_date <= CURRENT_DATE + INTERVAL '30 days'
AND pb.is_active = true;