From cde5e3a36409d30f6753ced2b49c0e748c2722be Mon Sep 17 00:00:00 2001 From: Lizandro Guarnizo <77708265+lizandrogd@users.noreply.github.com> Date: Fri, 30 Jan 2026 00:03:48 -0500 Subject: [PATCH] Update ProcesoAcabadoResource.php --- .../Resources/ProcesoAcabadoResource.php | 28 +++++++++++++++---- 1 file changed, 22 insertions(+), 6 deletions(-) diff --git a/app/Filament/Resources/ProcesoAcabadoResource.php b/app/Filament/Resources/ProcesoAcabadoResource.php index 901796b..f22caf5 100644 --- a/app/Filament/Resources/ProcesoAcabadoResource.php +++ b/app/Filament/Resources/ProcesoAcabadoResource.php @@ -46,11 +46,17 @@ class ProcesoAcabadoResource extends Resource ->required() ->afterStateUpdated(function ($state, $set) { if ($state) { - // Calcular cantidad disponible desde Tintorería - $disponible = \App\Models\Tintoreria::where('orden_produccion_id', $state) - ->sum('cantidad_recibida'); + // Calcular cantidad disponible desde Tintorería (neto: recepciones - reprocesos - cobros) + $tintoreriaRecords = \App\Models\Tintoreria::where('orden_produccion_id', $state)->get(); + $disponible = 0; + foreach ($tintoreriaRecords as $tintoreria) { + $recepciones = (int) $tintoreria->recepciones()->sum(\DB::raw('cantidad - COALESCE(prendas_defectuosas, 0)')); + $reprocesos = (int) $tintoreria->ajustes()->where('tipo', 'reproceso')->sum('cantidad'); + $cobros = (int) $tintoreria->cobros()->sum('cantidad'); + $disponible += ($recepciones - $reprocesos - $cobros); + } - $set('cantidad_enviada', $disponible ?: 0); + $set('cantidad_enviada', max(0, $disponible)); } }), @@ -68,8 +74,18 @@ class ProcesoAcabadoResource extends Resource ->helperText(function ($get) { $op_id = $get('orden_produccion_id'); if (!$op_id) return 'Selecciona una orden de producción primero'; - $disponible = \App\Models\Tintoreria::where('orden_produccion_id', $op_id)->sum('cantidad_recibida'); - return 'Disponible desde Tintorería: ' . $disponible; + + // Calcular disponible neto desde Tintorería + $tintoreriaRecords = \App\Models\Tintoreria::where('orden_produccion_id', $op_id)->get(); + $disponible = 0; + foreach ($tintoreriaRecords as $tintoreria) { + $recepciones = (int) $tintoreria->recepciones()->sum(\DB::raw('cantidad - COALESCE(prendas_defectuosas, 0)')); + $reprocesos = (int) $tintoreria->ajustes()->where('tipo', 'reproceso')->sum('cantidad'); + $cobros = (int) $tintoreria->cobros()->sum('cantidad'); + $disponible += ($recepciones - $reprocesos - $cobros); + } + + return 'Disponible desde Tintorería: ' . max(0, $disponible); }), DatePicker::make('fecha_envio')