From 2f22fc77365e564534269968fbdaf66efc719dd4 Mon Sep 17 00:00:00 2001 From: lizandrogd <77708265+lizandrogd@users.noreply.github.com> Date: Mon, 19 Jan 2026 22:40:46 -0500 Subject: [PATCH] up --- app/Filament/Resources/InventarioPrendaResource.php | 8 ++++---- app/Models/InventarioPrenda.php | 5 +++-- app/Models/OrdenProduccion.php | 6 +++--- tests/Feature/InventarioPrendaAutoCantidadTest.php | 6 +++--- 4 files changed, 13 insertions(+), 12 deletions(-) diff --git a/app/Filament/Resources/InventarioPrendaResource.php b/app/Filament/Resources/InventarioPrendaResource.php index 18b70fc..3afd92f 100644 --- a/app/Filament/Resources/InventarioPrendaResource.php +++ b/app/Filament/Resources/InventarioPrendaResource.php @@ -47,9 +47,9 @@ class InventarioPrendaResource extends Resource $remaining = 0; if ($state) { - // Total recibido hacia bodega desde acabados/traslados - $total = \App\Models\TrasladoPrenda::where('orden_produccion_id', $state) - ->where('destino', 'bodega') + // Total recibido desde procesos de acabados completados + $total = \App\Models\ProcesoAcabado::where('orden_produccion_id', $state) + ->whereNotNull('fecha_recepcion') ->sum('cantidad_recibida'); // Ya asignado en otros inventarios @@ -73,7 +73,7 @@ class InventarioPrendaResource extends Resource ->numeric() ->required() ->disabled() - ->helperText('Se calcula automáticamente desde los traslados a bodega asociados a la Orden de Producción.'), + ->helperText('Se calcula automáticamente desde los procesos de acabados completados asociados a la Orden de Producción.'), Select::make('producto_id') ->label('Producto (opcional)') diff --git a/app/Models/InventarioPrenda.php b/app/Models/InventarioPrenda.php index d5460a8..b2fe8b5 100644 --- a/app/Models/InventarioPrenda.php +++ b/app/Models/InventarioPrenda.php @@ -53,8 +53,9 @@ class InventarioPrenda extends Model // Validación y auto-filling: la cantidad terminada se calcula automáticamente desde lo recibido para esta OP (traslados a bodega) if ($inventario->orden_produccion_id) { - $totalRecibido = \App\Models\TrasladoPrenda::where('orden_produccion_id', $inventario->orden_produccion_id) - ->where('destino', 'bodega') + // Total recibido considerando procesos de acabados que se han recibido + $totalRecibido = \App\Models\ProcesoAcabado::where('orden_produccion_id', $inventario->orden_produccion_id) + ->whereNotNull('fecha_recepcion') ->sum('cantidad_recibida'); $assigned = \App\Models\InventarioPrenda::where('orden_produccion_id', $inventario->orden_produccion_id)->sum('cantidad_terminada'); diff --git a/app/Models/OrdenProduccion.php b/app/Models/OrdenProduccion.php index fbdec11..4519822 100644 --- a/app/Models/OrdenProduccion.php +++ b/app/Models/OrdenProduccion.php @@ -77,9 +77,9 @@ class OrdenProduccion extends Model // Si la orden llega a finalizada, crear entrada en inventario con lo que haya ingresado if ($this->estado === 'finalizada') { - // Sumar traslados cuyo destino sea 'bodega' - $cantidad = \App\Models\TrasladoPrenda::where('orden_produccion_id', $this->id) - ->where('destino', 'bodega') + // Sumar procesos de acabados recibidos para determinar cantidad terminada + $cantidad = \App\Models\ProcesoAcabado::where('orden_produccion_id', $this->id) + ->whereNotNull('fecha_recepcion') ->sum('cantidad_recibida'); // Crear inventario solo si hay traslados a bodega con cantidad diff --git a/tests/Feature/InventarioPrendaAutoCantidadTest.php b/tests/Feature/InventarioPrendaAutoCantidadTest.php index b90ffac..124582d 100644 --- a/tests/Feature/InventarioPrendaAutoCantidadTest.php +++ b/tests/Feature/InventarioPrendaAutoCantidadTest.php @@ -16,9 +16,9 @@ class InventarioPrendaAutoCantidadTest extends TestCase { $op = OrdenProduccion::create(['numero_orden' => 'OP-500', 'prenda_modelo' => 'AutoCantidad', 'cantidad_total' => 100, 'metros_requeridos' => 0, 'fecha_inicio' => now(), 'fecha_entrega_estimada' => now()->addDays(7)]); - // Crear dos traslados hacia bodega (simulando recibidos) - TrasladoPrenda::create(['orden_produccion_id' => $op->id, 'origen' => 'acabados', 'destino' => 'bodega', 'cantidad_enviada' => 0, 'cantidad_recibida' => 20, 'fecha_recepcion' => now()]); - TrasladoPrenda::create(['orden_produccion_id' => $op->id, 'origen' => 'acabados', 'destino' => 'bodega', 'cantidad_enviada' => 0, 'cantidad_recibida' => 10, 'fecha_recepcion' => now()]); + // Crear dos procesos de acabados (simulando recibidos) + \App\Models\ProcesoAcabado::create(['orden_produccion_id' => $op->id, 'tipo_proceso' => 'Acabado', 'proveedor_id' => \App\Models\Proveedor::factory()->create(['categoria' => 'proveedor'])->id, 'cantidad_enviada' => 0, 'cantidad_recibida' => 20, 'fecha_envio' => now(), 'fecha_recepcion' => now()]); + \App\Models\ProcesoAcabado::create(['orden_produccion_id' => $op->id, 'tipo_proceso' => 'Acabado', 'proveedor_id' => \App\Models\Proveedor::factory()->create(['categoria' => 'proveedor'])->id, 'cantidad_enviada' => 0, 'cantidad_recibida' => 10, 'fecha_envio' => now(), 'fecha_recepcion' => now()]); // Crear un inventario sin especificar cantidad_terminada $inv = InventarioPrenda::create(['orden_produccion_id' => $op->id, 'cantidad_terminada' => null, 'fecha_ingreso' => now(), 'estado' => 'en_bodega']);