hasAnyRole(['super-admin', 'admin']) && Schema::hasTable('fe_tributi_f24') && Schema::hasTable('fe_ritenute_previdenziali'); } public function mount(): void { $this->mountInteractsWithTable(); } protected function getTableQuery(): Builder { return FeTributoF24::query(); } public function table(Table $table): Table { return $table ->striped() ->defaultSort('codice') ->columns([ TextColumn::make('codice')->label('Codice')->searchable()->sortable(), TextColumn::make('descrizione')->label('Descrizione')->searchable()->sortable(), TextColumn::make('ritenuta_previdenziale_codice')->label('RT..')->toggleable(), IconColumn::make('attivo')->label('Attivo')->boolean()->sortable(), TextColumn::make('updated_at')->label('Aggiornato')->dateTime('d/m/Y H:i')->toggleable(isToggledHiddenByDefault: true), ]) ->headerActions([ Action::make('create') ->label('Nuovo') ->icon('heroicon-o-plus') ->form([ TextInput::make('codice')->label('Codice')->required()->maxLength(10), TextInput::make('descrizione')->label('Descrizione')->required()->maxLength(255), Select::make('ritenuta_previdenziale_codice') ->label('Ritenuta previdenziale (RT..)') ->options(fn() => FeRitenutaPrevidenziale::query() ->where('attivo', true) ->orderBy('codice') ->pluck('codice', 'codice') ->all()) ->searchable() ->nullable(), Toggle::make('attivo')->label('Attivo')->default(true), ]) ->action(function (array $data): void { FeTributoF24::query()->create([ 'codice' => trim((string) ($data['codice'] ?? '')), 'descrizione' => (string) ($data['descrizione'] ?? ''), 'ritenuta_previdenziale_codice' => $data['ritenuta_previdenziale_codice'] ?? null, 'attivo' => (bool) ($data['attivo'] ?? true), ]); }), ]) ->actions([ Action::make('edit') ->label('Modifica') ->icon('heroicon-o-pencil-square') ->form([ TextInput::make('descrizione')->label('Descrizione')->required()->maxLength(255), Select::make('ritenuta_previdenziale_codice') ->label('Ritenuta previdenziale (RT..)') ->options(fn() => FeRitenutaPrevidenziale::query() ->where('attivo', true) ->orderBy('codice') ->pluck('codice', 'codice') ->all()) ->searchable() ->nullable(), Toggle::make('attivo')->label('Attivo')->default(true), ]) ->fillForm(fn(FeTributoF24 $record): array => [ 'descrizione' => $record->descrizione, 'ritenuta_previdenziale_codice' => $record->ritenuta_previdenziale_codice, 'attivo' => (bool) $record->attivo, ]) ->action(function (FeTributoF24 $record, array $data): void { $record->fill([ 'descrizione' => (string) ($data['descrizione'] ?? ''), 'ritenuta_previdenziale_codice' => $data['ritenuta_previdenziale_codice'] ?? null, 'attivo' => (bool) ($data['attivo'] ?? true), ]); $record->save(); }), Action::make('delete') ->label('Elimina') ->icon('heroicon-o-trash') ->color('danger') ->requiresConfirmation() ->action(fn(FeTributoF24 $record) => $record->delete()), ]); } }