label('Agregar recepción') ->modalHeading('Agregar Recepción') ->disabled(fn (): bool => ($this->getRecord()->faltantes ?? 0) <= 0) ->form([ Forms\Components\DatePicker::make('fecha_recepcion')->default(now())->required(), Forms\Components\TextInput::make('cantidad') ->numeric() ->required() ->minValue(1) ->maxValue(fn () => $this->getRecord()->faltantes ?? 0) ->helperText(fn () => 'Máximo: ' . ($this->getRecord()->faltantes ?? 0)) ->default(fn () => $this->getRecord()->faltantes ?? 0), Forms\Components\TextInput::make('prendas_defectuosas') ->numeric() ->minValue(0) ->maxValue(fn ($get) => (int) ($get('cantidad') ?? 0)) ->helperText('Opcional. Se restará del total recibido.'), Forms\Components\Textarea::make('notas'), ]) ->action(function (array $data): void { $record = $this->getRecord(); try { \App\Models\Recepcion::create([ 'referencia_type' => \App\Models\Confeccion::class, 'referencia_id' => $record->id, 'cantidad' => (int) $data['cantidad'], 'fecha_recepcion' => $data['fecha_recepcion'], 'notas' => $data['notas'] ?? null, ]); \Filament\Notifications\Notification::make() ->success() ->title('Recepción registrada') ->body('La recepción se creó correctamente.') ->send(); } catch (\Illuminate\Validation\ValidationException $e) { \Filament\Notifications\Notification::make() ->danger() ->title('Error') ->body($e->validator->errors()->first() ?? 'Error al crear la recepción.') ->send(); } catch (\Throwable $e) { \Filament\Notifications\Notification::make() ->danger() ->title('Error') ->body($e->getMessage()) ->send(); } // Refrescar la página para ver cambios (redirigir explicitando el record para evitar error de ruta) $this->redirect(route('filament.admin.resources.confeccions.edit', ['record' => $record->id])); }), ]; } }