components([ Schemas\Components\Section::make('Coeficient') ->columns(2) ->schema([ Forms\Components\TextInput::make('name')->label('Denumire')->required() ->placeholder('ex: Mașină veche, Client VIP, Express')->columnSpanFull(), Forms\Components\TextInput::make('multiplier') ->label('Multiplicator') ->numeric() ->required() ->default(1.10) ->helperText('1.15 = +15% peste prețul de bază. 0.95 = -5%.'), Forms\Components\TextInput::make('priority')->label('Prioritate')->numeric()->default(100), Forms\Components\Toggle::make('stackable') ->label('Cumulabil') ->default(true) ->helperText('Cumulabil = se înmulțește cu alți coeficienți. Necumulabil = doar cel mai mare necumulabil se aplică.'), Forms\Components\Toggle::make('is_active')->label('Activ')->default(true), ]), Schemas\Components\Section::make('Condiții (toate trebuie îndeplinite)') ->description('Lasă gol = se aplică mereu. Combină condițiile pentru a ținti situații specifice.') ->columns(2) ->schema([ Forms\Components\CheckboxList::make('conditions.classes') ->label('Clase auto') ->options(PricingCoefficient::VEHICLE_CLASSES) ->columns(2) ->columnSpanFull(), Forms\Components\TextInput::make('conditions.age_min')->label('Vârstă min (ani)')->numeric(), Forms\Components\TextInput::make('conditions.age_max')->label('Vârstă max (ani)')->numeric(), Forms\Components\Toggle::make('conditions.client_vip')->label('Doar clienți VIP'), Forms\Components\CheckboxList::make('conditions.urgency') ->label('Urgență') ->options(PricingCoefficient::URGENCY) ->columns(3) ->columnSpanFull(), ]), ]); } public static function table(Table $table): Table { return $table ->columns([ Tables\Columns\TextColumn::make('priority')->label('Prio')->sortable()->alignRight(), Tables\Columns\TextColumn::make('name')->searchable()->sortable(), Tables\Columns\TextColumn::make('multiplier') ->label('Multiplicator') ->formatStateUsing(fn ($s) => '×' . rtrim(rtrim(number_format((float) $s, 3), '0'), '.')) ->alignRight() ->color(fn ($s) => (float) $s >= 1 ? 'success' : 'warning'), Tables\Columns\IconColumn::make('stackable')->label('Cumul.')->boolean(), Tables\Columns\IconColumn::make('is_active')->label('Activ')->boolean(), ]) ->filters([ Tables\Filters\TernaryFilter::make('is_active')->label('Active'), ]) ->actions([ Actions\EditAction::make(), Actions\DeleteAction::make(), ]) ->emptyStateHeading('Niciun coeficient') ->emptyStateDescription('Adaugă reguli care ajustează prețul în funcție de vârsta mașinii, clasă (SUV, comercial, hibrid), client VIP sau urgență. Se aplică peste markup-ul de bază pe fișele de lucru.') ->emptyStateIcon('heroicon-o-adjustments-horizontal') ->defaultSort('priority'); } public static function getNavigationLabel(): string { return __('Coeficienți preț'); } public static function getNavigationGroup(): ?string { return __('Depozit'); } public static function getModelLabel(): string { return __('coeficient'); } public static function getPluralModelLabel(): string { return __('coeficienți preț'); } public static function getPages(): array { return [ 'index' => Pages\ListPricingCoefficients::route('/'), 'create' => Pages\CreatePricingCoefficient::route('/create'), 'edit' => Pages\EditPricingCoefficient::route('/{record}/edit'), ]; } }