diff --git a/app/Filament/Resources/ConfeccionResource.php b/app/Filament/Resources/ConfeccionResource.php index 3257020..9a2f0be 100644 --- a/app/Filament/Resources/ConfeccionResource.php +++ b/app/Filament/Resources/ConfeccionResource.php @@ -49,7 +49,11 @@ class ConfeccionResource extends Resource Select::make('orden_produccion_id') ->label('Orden de Producción') - ->relationship('ordenProduccion', 'numero_orden') + ->options(fn () => \App\Models\OrdenProduccion::whereRaw('( + cantidad_total - ( + select coalesce(sum(cantidad_enviada),0) from confeccions where confeccions.orden_produccion_id = orden_produccions.id and confeccions.fecha_recepcion is null + ) + ) > 0')->pluck('numero_orden', 'id')->toArray()) ->searchable() ->preload() ->reactive() @@ -57,10 +61,14 @@ class ConfeccionResource extends Resource ->afterStateUpdated(function ($state, $set) { if ($state) { $orden = \App\Models\OrdenProduccion::find($state); - if ($orden) { - $set('cantidad_enviada', $orden->cantidad_total); - $set('fecha_envio', now()->toDateString()); - } + $sentInProcess = \App\Models\Confeccion::where('orden_produccion_id', $state) + ->whereNull('fecha_recepcion') + ->sum('cantidad_enviada'); + + $pending = max(0, (int)($orden->cantidad_total ?? 0) - (int)$sentInProcess); + + $set('cantidad_enviada', $pending ?: 0); + $set('fecha_envio', now()->toDateString()); } }), @@ -159,7 +167,11 @@ class ConfeccionResource extends Resource ->money('COP'), ]) ->filters([ - // + Tables\Filters\SelectFilter::make('orden_produccion_id') + ->label('Orden de Producción') + ->relationship('ordenProduccion', 'numero_orden') + ->searchable() + ->preload(), ]) ->actions([ Tables\Actions\EditAction::make(), diff --git a/app/Filament/Resources/InventarioPrendaResource.php b/app/Filament/Resources/InventarioPrendaResource.php index 44f3e08..7fb8ac1 100644 --- a/app/Filament/Resources/InventarioPrendaResource.php +++ b/app/Filament/Resources/InventarioPrendaResource.php @@ -166,7 +166,11 @@ class InventarioPrendaResource extends Resource ]), ]) ->filters([ - // + Tables\Filters\SelectFilter::make('orden_produccion_id') + ->label('Orden de Producción') + ->relationship('ordenProduccion', 'numero_orden') + ->searchable() + ->preload(), ]) ->actions([ Tables\Actions\EditAction::make(), diff --git a/app/Filament/Resources/ProcesoAcabadoResource.php b/app/Filament/Resources/ProcesoAcabadoResource.php index a6c3f15..5376981 100644 --- a/app/Filament/Resources/ProcesoAcabadoResource.php +++ b/app/Filament/Resources/ProcesoAcabadoResource.php @@ -40,15 +40,28 @@ class ProcesoAcabadoResource extends Resource ->schema([ Select::make('orden_produccion_id') ->label('Orden de Producción') - ->relationship('ordenProduccion', 'numero_orden') + ->options(fn () => \App\Models\OrdenProduccion::whereRaw('( + (select coalesce(sum(cantidad_recibida),0) from tintorerias where tintorerias.orden_produccion_id = orden_produccions.id) + - ( + select coalesce(sum(cantidad_enviada),0) from proceso_acabados where proceso_acabados.orden_produccion_id = orden_produccions.id and proceso_acabados.fecha_recepcion is null + ) + ) > 0')->pluck('numero_orden', 'id')->toArray()) ->searchable() ->reactive() ->required() ->afterStateUpdated(function ($state, $set) { if ($state) { - // Sumar lo recibido en Tintorería para esta OP + // Sumar lo recibido en Tintorería $sumTint = \App\Models\Tintoreria::where('orden_produccion_id', $state)->sum('cantidad_recibida'); - $set('cantidad_enviada', $sumTint ?: 0); + + // Restar lo ya enviado a acabados y aún en proceso + $sentInProcess = \App\Models\ProcesoAcabado::where('orden_produccion_id', $state) + ->whereNull('fecha_recepcion') + ->sum('cantidad_enviada'); + + $pending = max(0, (int)$sumTint - (int)$sentInProcess); + + $set('cantidad_enviada', $pending ?: 0); $set('fecha_envio', now()->toDateString()); } }), @@ -132,7 +145,11 @@ class ProcesoAcabadoResource extends Resource ]), ]) ->filters([ - // + Tables\Filters\SelectFilter::make('orden_produccion_id') + ->label('Orden de Producción') + ->relationship('ordenProduccion', 'numero_orden') + ->searchable() + ->preload(), ]) ->actions([ Tables\Actions\EditAction::make(), diff --git a/app/Filament/Resources/TintoreriaResource.php b/app/Filament/Resources/TintoreriaResource.php index 87e6d31..f97dafe 100644 --- a/app/Filament/Resources/TintoreriaResource.php +++ b/app/Filament/Resources/TintoreriaResource.php @@ -150,7 +150,11 @@ class TintoreriaResource extends Resource ->date(), ]) ->filters([ - // + Tables\Filters\SelectFilter::make('orden_produccion_id') + ->label('Orden de Producción') + ->relationship('ordenProduccion', 'numero_orden') + ->searchable() + ->preload(), ]) ->actions([ Tables\Actions\EditAction::make(),