make(\Illuminate\Contracts\Console\Kernel::class)->bootstrap(); echo "=== Sincronización de Inventarios desde Recepciones ===\n\n"; // Buscar todas las confecciones que tienen recepciones pero cuya OP no tiene inventario $confecciones = \App\Models\Confeccion::whereNotNull('orden_produccion_id') ->whereHas('recepciones') ->with(['ordenProduccion', 'recepciones']) ->get(); echo "Total confecciones con recepciones: {$confecciones->count()}\n\n"; $creados = 0; $actualizados = 0; $sinCambios = 0; foreach ($confecciones as $confeccion) { $op_id = $confeccion->orden_produccion_id; $op = $confeccion->ordenProduccion; if (!$op) { echo "⚠️ Confección #{$confeccion->id} tiene orden_produccion_id={$op_id} pero la OP no existe\n"; continue; } // Sumar recepciones efectivas (cantidad - defectuosas) $totalRecibido = $confeccion->recepciones->sum(function($rec) { return $rec->cantidad - ($rec->prendas_defectuosas ?? 0); }); if ($totalRecibido <= 0) { continue; } // Buscar o crear inventario $inventario = \App\Models\InventarioPrenda::where('orden_produccion_id', $op_id)->first(); if (!$inventario) { // Crear inventario nuevo $inventario = \App\Models\InventarioPrenda::create([ 'orden_produccion_id' => $op_id, 'cantidad_terminada' => $totalRecibido, 'cantidad_disponible' => $totalRecibido, 'fecha_ingreso' => $confeccion->recepciones->first()->fecha_recepcion ?? now(), 'estado' => 'en_bodega', ]); echo "✅ Creado inventario para OP #{$op_id} con {$totalRecibido} prendas\n"; echo " → Confección #{$confeccion->id}\n"; $creados++; } else { // Verificar si necesita actualización if ($inventario->cantidad_terminada < $totalRecibido) { $diferencia = $totalRecibido - $inventario->cantidad_terminada; $inventario->cantidad_terminada = $totalRecibido; $inventario->cantidad_disponible += $diferencia; $inventario->save(); echo "✅ Actualizado inventario para OP #{$op_id}: +{$diferencia} prendas (total: {$totalRecibido})\n"; $actualizados++; } else { $sinCambios++; } } } echo "\n📊 Resumen:\n"; echo " Inventarios creados: {$creados}\n"; echo " Inventarios actualizados: {$actualizados}\n"; echo " Sin cambios: {$sinCambios}\n";