schema([ Forms\Components\Section::make('Charge')->schema([ Forms\Components\TextInput::make('lot_number') ->label('LOT-Nummer') ->required() ->unique(ignoreRecord: true) ->maxLength(255), Forms\Components\Select::make('product_id') ->label('Produkt') ->relationship('product', 'title') ->searchable() ->preload() ->required() ->live(), Forms\Components\Select::make('recipe_id') ->label('Rezeptur') ->relationship('recipe', 'name') ->searchable() ->preload() ->required() ->live(), Forms\Components\DatePicker::make('produced_at') ->label('Produktionsdatum'), Forms\Components\DatePicker::make('expires_at') ->label('Mindesthaltbarkeitsdatum'), ])->columns(2), Forms\Components\Section::make('Herkunft der Gewürze')->schema([ Forms\Components\Repeater::make('origins') ->label('') ->relationship() ->schema([ Forms\Components\Select::make('spice_id') ->label('Gewürz') ->relationship('spice', 'name') ->searchable() ->preload() ->required(), Forms\Components\Select::make('supplier_id') ->label('Lieferant') ->relationship('supplier', 'name') ->searchable() ->preload() ->nullable(), Forms\Components\TextInput::make('origin_country') ->label('Herkunftsland') ->maxLength(100), Forms\Components\TextInput::make('farmer') ->label('Landwirt / Betrieb') ->maxLength(255), Forms\Components\Textarea::make('notes') ->label('Infos zum Gewürz') ->rows(2) ->columnSpanFull(), ]) ->columns(2) ->addActionLabel('Gewürz hinzufügen') ->reorderable(false), ]), ]); } public static function table(Table $table): Table { return $table ->columns([ Tables\Columns\TextColumn::make('lot_number') ->label('LOT-Nummer') ->searchable() ->sortable(), Tables\Columns\TextColumn::make('product.title') ->label('Produkt') ->searchable(), Tables\Columns\TextColumn::make('recipe.name') ->label('Rezeptur'), Tables\Columns\TextColumn::make('produced_at') ->label('Produktion') ->date('d.m.Y') ->sortable(), Tables\Columns\TextColumn::make('expires_at') ->label('MHD') ->date('d.m.Y') ->sortable(), ]) ->defaultSort('produced_at', 'desc') ->filters([ Tables\Filters\SelectFilter::make('product') ->relationship('product', 'title') ->label('Produkt'), ]) ->actions([ Tables\Actions\EditAction::make(), Tables\Actions\DeleteAction::make(), ]); } public static function getPages(): array { return [ 'index' => Pages\ListBatches::route('/'), 'create' => Pages\CreateBatch::route('/create'), 'edit' => Pages\EditBatch::route('/{record}/edit'), ]; } }