diff --git a/tests/Feature/ProductFillWeightTest.php b/tests/Feature/ProductFillWeightTest.php
index 07831cf..8e91126 100644
--- a/tests/Feature/ProductFillWeightTest.php
+++ b/tests/Feature/ProductFillWeightTest.php
@@ -111,3 +111,28 @@ test('AP-52: verpackungsvorschau liefert bestand und lagerort je verpackungsarti
->and(substr_count($html, '
Lagerort | '))->toBe(2)
->and($html)->not->toContain('Ablage | ');
});
+
+test('AP-47: checkbox „produktionsrelevant" im produktformular wird gespeichert und steuert die produktions-auswahl', function () {
+ $this->actingAs(fwUser(), 'user');
+
+ // Neuanlage ohne Häkchen (Hidden-Fallback 0) => Zukaufartikel wie Aloe verschwindet aus der Planung.
+ $this->post(route('admin_product_store'), ['id' => 'new', 'name' => 'AP47-Aloe-Zukauf', 'active' => 1, 'production_relevant' => '0'])
+ ->assertRedirect()->assertSessionHasNoErrors();
+ $product = Product::query()->where('name', 'AP47-Aloe-Zukauf')->firstOrFail();
+ expect($product->production_relevant)->toBeFalse();
+
+ $html = $this->get(route('admin.inventory.productions.create'))->assertSuccessful()->getContent();
+ $planningSelect = substr($html, strpos($html, 'id="product_id"'));
+ $planningSelect = substr($planningSelect, 0, strpos($planningSelect, ''));
+ expect($planningSelect)->not->toContain('AP47-Aloe-Zukauf');
+
+ // Häkchen wieder setzen => wieder wählbar.
+ $this->post(route('admin_product_store'), ['id' => $product->id, 'name' => 'AP47-Aloe-Zukauf', 'active' => 1, 'production_relevant' => '1'])
+ ->assertSessionHasNoErrors();
+ expect($product->fresh()->production_relevant)->toBeTrue();
+
+ $html = $this->get(route('admin.inventory.productions.create'))->assertSuccessful()->getContent();
+ $planningSelect = substr($html, strpos($html, 'id="product_id"'));
+ $planningSelect = substr($planningSelect, 0, strpos($planningSelect, ''));
+ expect($planningSelect)->toContain('AP47-Aloe-Zukauf');
+});