76 lines
2.6 KiB
PHP
76 lines
2.6 KiB
PHP
<?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";
|