components([ Schemas\Components\Section::make(__('Profil')) ->columns(2) ->schema([ Forms\Components\Select::make('user_id') ->label(__('Utilizator')) ->options(fn () => User::orderBy('name')->pluck('name', 'id')) ->searchable() ->required() ->unique(ignoreRecord: true), Forms\Components\TextInput::make('position')->label(__('Funcție'))->maxLength(120), Forms\Components\DatePicker::make('hire_date')->label(__('Angajat din')), ]), Schemas\Components\Section::make(__('Salariu & comisioane')) ->columns(3) ->schema([ Forms\Components\TextInput::make('base_salary')->label(__('Salariu bază'))->numeric()->default(0), Forms\Components\TextInput::make('works_pct') ->label(__('% manopere')) ->numeric()->default(0) ->suffix('%') ->helperText(__('% din venitul manoperelor finalizate.')), Forms\Components\TextInput::make('parts_pct') ->label(__('% marja piese')) ->numeric()->default(0) ->suffix('%') ->helperText(__('% din marja (sell-buy) pieselor montate.')), ]), Forms\Components\Textarea::make('notes')->label(__('Notițe'))->columnSpanFull()->rows(2), ]); } public static function table(Table $table): Table { return $table ->columns([ Tables\Columns\TextColumn::make('user.name')->label(__('Nume'))->searchable()->sortable(), Tables\Columns\TextColumn::make('position')->label(__('Funcție'))->placeholder('—'), Tables\Columns\TextColumn::make('base_salary')->money('MDL')->alignRight(), Tables\Columns\TextColumn::make('works_pct')->label(__('% Manopere')) ->formatStateUsing(fn ($s) => $s . '%')->alignRight(), Tables\Columns\TextColumn::make('parts_pct')->label(__('% Piese')) ->formatStateUsing(fn ($s) => $s . '%')->alignRight(), Tables\Columns\TextColumn::make('hire_date')->date('d.m.Y')->placeholder('—'), ]) ->actions([ Actions\EditAction::make(), Actions\DeleteAction::make(), ]) ->defaultSort('user_id'); } public static function getPages(): array { return [ 'index' => Pages\ListEmployeeProfiles::route('/'), 'create' => Pages\CreateEmployeeProfile::route('/create'), 'edit' => Pages\EditEmployeeProfile::route('/{record}/edit'), ]; } }