diff --git a/app/Filament/User/Resources/BatchResource.php b/app/Filament/User/Resources/BatchResource.php index bd0e996..7ac9c91 100644 --- a/app/Filament/User/Resources/BatchResource.php +++ b/app/Filament/User/Resources/BatchResource.php @@ -83,17 +83,18 @@ class BatchResource extends Resource ) ->required() ->live() - ->afterStateUpdated(function ($state, $set) { + ->afterStateUpdated(function ($state, $set, $get) { if (! $state) { $set('origins', []); return; } $recipe = Recipe::with('spices')->find($state); if ($recipe) { - $set('origins', $recipe->spices->map(fn ($s) => [ - 'spice_id' => $s->id, - 'entries' => [['supplier_id' => null, 'origin_country' => null, 'farmer_id' => null, 'notes' => null]], - ])->toArray()); + $existing = collect($get('origins') ?? [])->keyBy('spice_id'); + $set('origins', $recipe->spices->map(fn ($s) => $existing->has($s->id) + ? $existing[$s->id] + : ['spice_id' => $s->id, 'entries' => [['supplier_id' => null, 'origin_country' => null, 'farmer_id' => null, 'notes' => null]]] + )->toArray()); } }), diff --git a/app/Filament/User/Resources/ProductResource/RelationManagers/BatchesRelationManager.php b/app/Filament/User/Resources/ProductResource/RelationManagers/BatchesRelationManager.php index 72a00ea..62d8263 100644 --- a/app/Filament/User/Resources/ProductResource/RelationManagers/BatchesRelationManager.php +++ b/app/Filament/User/Resources/ProductResource/RelationManagers/BatchesRelationManager.php @@ -50,7 +50,7 @@ class BatchesRelationManager extends RelationManager ->default(fn () => $this->getOwnerRecord()->recipes_id) ->required() ->live() - ->afterStateUpdated(function ($state, $set) { + ->afterStateUpdated(function ($state, $set, $get) { if (! $state) { $set('origins', []); return; @@ -59,10 +59,11 @@ class BatchesRelationManager extends RelationManager if (! $recipe) { return; } - $set('origins', $recipe->spices->map(fn ($s) => [ - 'spice_id' => $s->id, - 'entries' => [['supplier_id' => null, 'origin_country' => null, 'farmer_id' => null, 'notes' => null]], - ])->toArray()); + $existing = collect($get('origins') ?? [])->keyBy('spice_id'); + $set('origins', $recipe->spices->map(fn ($s) => $existing->has($s->id) + ? $existing[$s->id] + : ['spice_id' => $s->id, 'entries' => [['supplier_id' => null, 'origin_country' => null, 'farmer_id' => null, 'notes' => null]]] + )->toArray()); }), Forms\Components\TextInput::make('units_produced')