From 38bcf6077897fb29a368d27590c8f08645ce6c46 Mon Sep 17 00:00:00 2001 From: Malek Tellissi Date: Sun, 13 Sep 2026 01:06:54 +0200 Subject: [PATCH] Rohstofflieferung: unit suffix, enter kg stored as grams Co-Authored-By: Claude Sonnet 4.6 --- .../User/Resources/SpiceSupplierResource.php | 29 ++++++++++++++++--- 1 file changed, 25 insertions(+), 4 deletions(-) diff --git a/app/Filament/User/Resources/SpiceSupplierResource.php b/app/Filament/User/Resources/SpiceSupplierResource.php index 46da964..eefdf38 100644 --- a/app/Filament/User/Resources/SpiceSupplierResource.php +++ b/app/Filament/User/Resources/SpiceSupplierResource.php @@ -15,6 +15,7 @@ use Illuminate\Database\Eloquent\SoftDeletingScope; use Filament\Forms\Components\Select; use Filament\Forms\Components\TextInput; +use Filament\Forms\Get; use Filament\Forms\Components\DatePicker; @@ -41,6 +42,7 @@ class SpiceSupplierResource extends Resource ->required() ->preload() ->searchable() + ->live() ->createOptionForm([ TextInput::make('name')->label('Name')->required()->maxLength(255), Forms\Components\Select::make('unit') @@ -58,17 +60,36 @@ class SpiceSupplierResource extends Resource }), Select::make('supplier_id') ->label('Lieferant') - ->relationship('supplier', 'name') + ->relationship('supplier', 'name') ->required() - ->preload() + ->preload() ->searchable(), TextInput::make('amount') ->label('Liefermenge') ->numeric() ->required() - ->rules(['min:0.01']) - ->disabled(fn($record) => !is_null($record)), + ->rules(['min:0.001']) + ->disabled(fn($record) => !is_null($record)) + ->suffix(function (Get $get) { + $unit = \App\Models\Spice::find($get('spice_id'))?->unit; + return match($unit) { + 'grams' => 'kg', + 'pieces' => 'Stück', + 'liter' => 'Liter', + default => null, + }; + }) + ->formatStateUsing(function ($state, $record) { + if ($record?->spice?->unit === 'grams') { + return round($state / 1000, 3); + } + return $state; + }) + ->dehydrateStateUsing(function ($state, Get $get) { + $unit = \App\Models\Spice::find($get('spice_id'))?->unit; + return $unit === 'grams' ? (float) $state * 1000 : $state; + }), DatePicker::make('supplied_at') ->label('Lieferdatum')