Capítulo 2: Expedición y Picking (Cockpit)
A. Filosofía del Proceso (El Por Qué)
Picking Cockpit: Interfaz de tres columnas para gestionar el volumen diario de pedidos. El usuario selecciona un pedido, prepara cada línea con uno o varios lotes, y confirma antes de generar el albarán.
Staging (Pre-asignación): El usuario selecciona múltiples lotes (o trozos parciales) en una cesta temporal (currentPickList) antes de confirmar la línea. Evita errores: se puede revisar el total y quitar lotes con el icono papelera. Los lotes ya en pre-asignación se excluyen de la lista sugerida (excludedLotIds) para evitar duplicidades.
FIFO: Los lotes sugeridos se ordenan por fecha_caducidad ASC (primero en caducar, primero en salir). ProductoElaborado::getDisponibles() implementa este orden.
Validación: peso_real ≤ peso_restante del lote. Consumo parcial: si sobra producto, el lote mantiene DISPONIBLE y se genera Etiqueta de Resto para el trozo que vuelve a cámara.
B. Diagrama de Flujo
C. Guía Paso a Paso
Columna Izquierda: Pedidos pendientes. Buscador cliente. Tabs por Ruta. Barra de progreso por pedido.
Columna Central: Líneas del pedido. Solicitado vs Preparado kg. Fondo blanco/amarillo/verde según estado. PREPARAR LÍNEA. Botón GENERAR ALBARÁN (solo cuando todas completadas).
Columna Derecha (Zona Acción): Seleccionar lote (FIFO, excluye pre-asignados). SIMULAR PESO rellena con min(falta, disponible). AÑADIR LOTE a tabla pre-asignación. CONFIRMAR Y ETIQUETAR envía asignaciones[] en una transacción.
D. Resultados y Documentos
- picking_detalles: id_linea, id_lote_producto, peso_utilizado.
- productos_elaborados: peso_restante actualizado. Estado EXPEDIDO si agotado.
- albaranes + lineas_albaran: Creados desde picking_detalles. Pedido → EXPEDIDO.
- Etiquetas: Producto GS1-128 y Transporte (destinatario, SSCC) en albaranes/view.