user()?->canDo(\App\Auth\Permissions::SALARIES_VIEW_ALL) ?? false; } public static function canCreate(): bool { return auth()->user()?->canDo(\App\Auth\Permissions::SALARIES_CALCULATE) ?? false; } public static function form(Schema $schema): Schema { return $schema->components([ Schemas\Components\Section::make('Detalii') ->columns(2) ->schema([ Forms\Components\Select::make('user_id') ->label('Utilizator') ->options(fn () => User::orderBy('name')->pluck('name', 'id')) ->searchable() ->required(), Forms\Components\Select::make('type') ->options(PayrollAdjustment::TYPES) ->default('bonus') ->required(), Forms\Components\TextInput::make('amount')->label('Sumă')->numeric()->required(), Forms\Components\TextInput::make('period') ->label('Perioadă (YYYY-MM)') ->placeholder(now()->format('Y-m')) ->regex('/^\d{4}-\d{2}$/') ->required(), Forms\Components\DatePicker::make('date')->default(today())->required(), Forms\Components\TextInput::make('reason')->label('Motiv')->maxLength(160), ]), ]); } public static function table(Table $table): Table { return $table ->columns([ Tables\Columns\TextColumn::make('date')->date('d.m.Y')->sortable(), Tables\Columns\TextColumn::make('user.name')->label('Utilizator')->searchable(), Tables\Columns\TextColumn::make('type') ->formatStateUsing(fn ($s) => PayrollAdjustment::TYPES[$s] ?? $s) ->badge() ->colors([ 'success' => ['bonus'], 'danger' => ['fine'], 'warning' => ['advance'], ]), Tables\Columns\TextColumn::make('period'), Tables\Columns\TextColumn::make('amount')->money('MDL')->alignRight(), Tables\Columns\TextColumn::make('reason')->limit(40), Tables\Columns\IconColumn::make('applied')->boolean()->label('Aplicat'), ]) ->filters([ Tables\Filters\SelectFilter::make('type')->options(PayrollAdjustment::TYPES), Tables\Filters\SelectFilter::make('user_id') ->label('Utilizator') ->options(fn () => User::pluck('name', 'id')), ]) ->actions([ Actions\EditAction::make(), Actions\DeleteAction::make(), ]) ->defaultSort('date', 'desc'); } public static function getPages(): array { return [ 'index' => Pages\ListPayrollAdjustments::route('/'), 'create' => Pages\CreatePayrollAdjustment::route('/create'), 'edit' => Pages\EditPayrollAdjustment::route('/{record}/edit'), ]; } }