<?php

require __DIR__ . '/../vendor/autoload.php';

$app = require_once __DIR__ . '/../bootstrap/app.php';
$app->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";
