components([ Forms\Components\DatePicker::make('paid_at')->label(__('Data'))->default(today())->required(), Forms\Components\TextInput::make('amount')->label(__('Sumă'))->numeric()->required(), Forms\Components\Select::make('method') ->options(\App\Support\I18n::opts(Payment::METHODS)) ->default('cash') ->required(), Forms\Components\TextInput::make('reference')->label(__('Referință'))->maxLength(64), Forms\Components\Textarea::make('notes')->label(__('Notițe'))->columnSpanFull()->rows(2), ]); } public function table(Table $table): Table { return $table ->recordTitleAttribute('amount') ->columns([ Tables\Columns\TextColumn::make('paid_at')->label(__('Data'))->date('d.m.Y'), Tables\Columns\TextColumn::make('amount')->money('MDL')->alignRight() ->summarize(Tables\Columns\Summarizers\Sum::make()->money('MDL')->label(__('Plătit'))), Tables\Columns\TextColumn::make('method') ->formatStateUsing(fn ($s) => __(Payment::METHODS[$s] ?? $s)) ->badge(), Tables\Columns\TextColumn::make('reference')->placeholder('—'), ]) ->headerActions([ Actions\CreateAction::make()->mutateFormDataUsing(function (array $data, RelationManager $livewire): array { $wo = $livewire->getOwnerRecord(); $data['client_id'] = $wo->client_id; $data['user_id'] = auth()->id(); return $data; }), ]) ->actions([ Actions\EditAction::make(), Actions\DeleteAction::make(), ]) ->defaultSort('paid_at', 'desc'); } }