From d7a0351c1efb35faa45c85c04e473a80222dab08 Mon Sep 17 00:00:00 2001 From: Lizandro Guarnizo <77708265+lizandrogd@users.noreply.github.com> Date: Wed, 4 Feb 2026 20:02:58 -0500 Subject: [PATCH] Update TintoreriaResource.php --- app/Filament/Resources/TintoreriaResource.php | 33 ++++++++++++------- 1 file changed, 22 insertions(+), 11 deletions(-) diff --git a/app/Filament/Resources/TintoreriaResource.php b/app/Filament/Resources/TintoreriaResource.php index 3911f07..e9cbc63 100644 --- a/app/Filament/Resources/TintoreriaResource.php +++ b/app/Filament/Resources/TintoreriaResource.php @@ -50,19 +50,30 @@ class TintoreriaResource extends Resource Select::make('orden_produccion_id') ->label('Orden de Producción') - ->options(fn () => \App\Models\OrdenProduccion::all()->mapWithKeys(function ($op) { - // Calcular cantidad disponible (mínimo entre ojales y prensillas terminados - ya enviadas) - $disponible = $op->getCantidadDisponibleParaTintoreria(); - - if ($disponible > 0) { - // Obtener información de procesos + ->options(function () { + // Buscar órdenes que tengan al menos un ojal Y una prensilla terminados + return \App\Models\OrdenProduccion::whereHas('ojales', function ($q) { + $q->where('terminada', true); + }) + ->whereHas('prensillas', function ($q) { + $q->where('terminada', true); + }) + ->with(['ojales', 'prensillas', 'tintorerias']) + ->get() + ->mapWithKeys(function ($op) { + // Calcular cantidad disponible $ojalesTerminados = $op->ojales()->where('terminada', true)->sum('cantidad_enviada'); $prensillasTerminadas = $op->prensillas()->where('terminada', true)->sum('cantidad_enviada'); + $minimoCompleto = min($ojalesTerminados, $prensillasTerminadas); + $enviadasTintoreria = $op->tintorerias()->sum('cantidad_enviada'); + $disponible = max(0, $minimoCompleto - $enviadasTintoreria); - return [$op->id => "{$op->numero_orden} - {$op->referencia} (Disponible: {$disponible}) [O:{$ojalesTerminados} P:{$prensillasTerminadas}]"]; - } - return []; - })->filter()) + if ($disponible > 0) { + return [$op->id => "{$op->numero_orden} - {$op->referencia} (Disponible: {$disponible}) [O:{$ojalesTerminados} P:{$prensillasTerminadas}]"]; + } + return []; + })->filter(); + }) ->searchable() ->preload() ->reactive() @@ -81,7 +92,7 @@ class TintoreriaResource extends Resource $set('prenda_nombre_info', $orden->prenda_modelo ?? 'Sin especificar'); // Información adicional sobre los procesos - $set('info_procesos', "Ojales: {$ojalesTerminados} | Prensillas: {$prensillasTerminadas}"); + $set('info_procesos', "Ojales: {$ojalesTerminados} | Prensillas: {$prensillasTerminadas} | Disponible: {$disponible}"); } } else { $set('prenda_nombre_info', null);