From 1503e7f39a4c062a528ad88985e913a56c661d4f Mon Sep 17 00:00:00 2001 From: Lizandro Guarnizo <77708265+lizandrogd@users.noreply.github.com> Date: Thu, 29 Jan 2026 22:17:58 -0500 Subject: [PATCH] Update InventarioPrendaResource.php --- .../Resources/InventarioPrendaResource.php | 35 +++++++++++++++---- 1 file changed, 29 insertions(+), 6 deletions(-) diff --git a/app/Filament/Resources/InventarioPrendaResource.php b/app/Filament/Resources/InventarioPrendaResource.php index 30fc4d1..8177810 100644 --- a/app/Filament/Resources/InventarioPrendaResource.php +++ b/app/Filament/Resources/InventarioPrendaResource.php @@ -38,19 +38,42 @@ class InventarioPrendaResource extends Resource ->schema([ Select::make('orden_produccion_id') ->label('Orden de Producción') - ->relationship('ordenProduccion', 'numero_orden') + ->options(function () { + // Obtener todas las OPs con procesos terminados + $ops = \App\Models\OrdenProduccion::whereHas('procesosAcabados', function ($q) { + $q->where('terminada', true); + })->get(); + + // Filtrar solo las que tienen saldo disponible > 0 + $opsConSaldo = []; + foreach ($ops as $op) { + $total = \App\Models\ProcesoAcabado::where('orden_produccion_id', $op->id) + ->where('terminada', true) + ->sum('cantidad_enviada'); + + $usado = \App\Models\InventarioPrenda::where('orden_produccion_id', $op->id) + ->sum('cantidad_terminada'); + + $disponible = max(0, (int) $total - (int) $usado); + + if ($disponible > 0) { + $opsConSaldo[$op->id] = $op->numero_orden . ' (Disponible: ' . $disponible . ')'; + } + } + + return $opsConSaldo; + }) ->searchable() - ->preload() ->reactive() ->required() ->afterStateUpdated(function ($state, $set) { $remaining = 0; if ($state) { - // Total recibido desde procesos de acabados completados + // Total de cantidad enviada desde procesos de acabados terminados $total = \App\Models\ProcesoAcabado::where('orden_produccion_id', $state) - ->whereNotNull('fecha_recepcion') - ->sum('cantidad_recibida'); + ->where('terminada', true) + ->sum('cantidad_enviada'); // Ya asignado en otros inventarios $used = \App\Models\InventarioPrenda::where('orden_produccion_id', $state)->sum('cantidad_terminada'); @@ -67,7 +90,7 @@ class InventarioPrendaResource extends Resource $set('producto_id', $op->producto_id); } } - })->helperText('La Orden de Producción es la fuente de verdad para el producto; si la OP tiene producto asociado, se usará automáticamente.'), + })->helperText('Solo se muestran órdenes con procesos terminados y saldo disponible mayor a cero.'), TextInput::make('cantidad_terminada') ->numeric()