record = OrdenProduccion::findOrFail($record); } public function getFlujoData(): array { $op = $this->record; // Datos de Confección $cantidadRecibidaConfeccion = $op->confecciones() ->whereNotNull('fecha_recepcion') ->sum('cantidad_recibida'); // Datos de Ojales $ojales = $op->ojales; $ojalesData = $ojales->map(function ($ojal) { return [ 'cantidad' => $ojal->cantidad_enviada, 'proveedor' => $ojal->proveedor?->nombre ?? 'Sin proveedor', 'operario' => $ojal->usuarioAsignado?->name ?? '-', 'terminado' => $ojal->terminada, 'fecha' => $ojal->fecha_envio?->format('d/m/Y') ?? '-', ]; }); $ojalesTerminados = $ojales->where('terminada', true)->sum('cantidad_enviada'); $ojalesPendientes = $ojales->where('terminada', false)->sum('cantidad_enviada'); // Datos de Prensillas $prensillas = $op->prensillas; $prensillasData = $prensillas->map(function ($prensilla) { return [ 'cantidad' => $prensilla->cantidad_enviada, 'proveedor' => $prensilla->proveedor?->nombre ?? 'Sin proveedor', 'operario' => $prensilla->usuarioAsignado?->name ?? '-', 'terminado' => $prensilla->terminada, 'fecha' => $prensilla->fecha_envio?->format('d/m/Y') ?? '-', ]; }); $prensillasTerminadas = $prensillas->where('terminada', true)->sum('cantidad_enviada'); $prensillasPendientes = $prensillas->where('terminada', false)->sum('cantidad_enviada'); // Verificación de ambos procesos $verificacion = $op->verificarProcesosCompletos(); return [ 'confeccion_recibida' => $cantidadRecibidaConfeccion, 'ojales' => [ 'total' => $ojales->sum('cantidad_enviada'), 'terminados' => $ojalesTerminados, 'pendientes' => $ojalesPendientes, 'registros' => $ojalesData, ], 'prensillas' => [ 'total' => $prensillas->sum('cantidad_enviada'), 'terminadas' => $prensillasTerminadas, 'pendientes' => $prensillasPendientes, 'registros' => $prensillasData, ], 'verificacion' => $verificacion, 'disponible_tintoreria' => $op->getCantidadDisponibleParaTintoreria(), ]; } }