60 Traslados de Inventario entre Sucursales en Laravel Transferencia de Stock y Control de Recepción

Duración: 12 min
Módulo: Módulo Inventario y sus acciones Lección 5 de 6

¡Contenido Exclusivo!

Adquiere este curso para tener acceso inmediato a esta y a **todas las lecciones Premium**.

Inscribirse Ahora por $10.00 Acceso instantáneo de por vida y código fuente incluido.

Descripción

🚀 Lección 60: Traslados de Inventario entre Sucursales en Laravel: Transferencia de Stock y Control de Recepción

En este capítulo consolidamos por completo la lógica del Módulo de Traslados de Inventario. Diseñamos la estructura de la base de datos a nivel relacional, programamos el modelo y los controladores con sus respectivas llaves foráneas, y validamos el ciclo de vida completo de un traslado: desde la solicitud en mostrador por insuficiencia de stock hasta la recepción física y su posterior venta inmediata en el POS.

🎯 El Objetivo Central

Crear la tabla inventario_traslados y su lógica de negocio para permitir el traspaso seguro de medicamentos entre sucursales, automatizando el descuento en origen, el rastreo en tránsito y la inserción reactiva del stock en el destino.

🗄️ 1. Arquitectura de la Tabla inventario_traslados

Para soportar la trazabilidad bidireccional del movimiento, la base de datos registra de forma obligatoria las siguientes relaciones:

  • inventario_origen_id e inventario_destino_id: Punteros exactos a los registros físicos afectados.
  • usuario_id (Emisor) y usuario_receptor_id (Receptor): Control de auditoría para saber qué empleados despacharon y quiénes firmaron la entrada.
  • sucursal_origen_id y sucursal_destino_id: Locaciones físicas que intervienen en la logística.
  • Métricas y Control: cantidad, motivo (ej. Exceso de inventario), fecha_traslado, fecha_recepcion y el estado de la orden (Pendiente, En tránsito, Recibido, Cancelado).

📈 2. Caso de Uso Práctico: Despacho y Descuento en Origen

Simulamos el flujo real de una farmacia: un cliente solicita un fármaco (ej. Proviolac 2g) que no tiene existencias en la Casa Matriz, pero descubrimos mediante el buscador multisucursal que la sucursal Gaitán y Ordóñez tiene 85 unidades:

  • Fase de Envío ("En Tránsito"): Generamos una orden para trasladar 45 unidades. En ese instante, el sistema descuenta inmediatamente el stock en la sucursal de origen (dejándola con 40 unidades) para congelarlo y evitar que se venda físicamente allá, cambiando el estado del traslado a En Tránsito.

📥 3. Control de Recepción e Inserción Dinámica en Destino

Cuando la mercancía llega físicamente a la sucursal de destino, el sistema ejecuta una validación de persistencia inteligente:

  • Inyección Condicional: Al presionar "Recibir Traslado", el backend verifica si el producto ya existía en la sucursal de destino. Como en este caso la Casa Matriz no tenía registros previos de ese fármaco, el controlador inserta automáticamente una nueva fila en la tabla inventarios marcando el campo estado como Traslado (y omitiendo el compra_id), elevando el catálogo local a 31 ítems.

📜 4. Línea de Tiempo (Timeline) y Venta en el POS

  • Trazabilidad Visual: La vista de detalles incorpora una línea de tiempo interactiva que expone con precisión cronológica cuándo se inició el traslado, cuándo se consolidó la recepción y las identidades de los operadores involucrados.
  • Cierre del Ciclo Comercial: Una vez recibido el traslado, el producto aparece instantáneamente disponible en el carrito de compras de la Casa Matriz (con las 45 unidades listas) permitiendo facturar de inmediato y registrar el egreso ordinario en la tabla de movimientos.

Al finalizar esta lección, los estudiantes sabrán cómo resolver escenarios complejos de logística multisucursal, manejar estados intermedios de stock y proteger la integridad relacional de la base de datos en Laravel. ¡Un módulo impecable listo para producción!