Warenwirtschaft: AP-09 bis AP-13 (Produktbestand, Set-Produkte, Ausschuss, Konzepte)

- AP-09 Produktbestand inkl. Bewegungshistorie (product_stock_movements, ProductStockService)
- AP-10 Rohstoffbestand-Ansicht je Lager (RawMaterialStockController)
- AP-11 Bestandsschwellen / Out-of-Stock-Handling fuer Produkte und Shop
- AP-12 Ausgang/Ausschuss (stock_disposals, StockDisposalController, InventoryService)
- Set-Produkte (product_set_items) inkl. Aufloesung
- Produktentwicklung & Hinweise-Verwaltung (Notices)
- AP-13 Entwicklungskonzept Shop-Bestandsabzug im Plan dokumentiert
- Feature-Tests fuer neue Module + aktualisierter Entwicklungsplan

Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
Kevin Adametz 2026-06-03 11:04:22 +00:00
parent 78679e0c55
commit 3ee2d756e9
63 changed files with 5968 additions and 901 deletions

View file

@ -81,6 +81,7 @@ test('production service stores ingredients and packaging snapshot', function ()
'pos' => 0,
'gram' => 10,
'factor' => 1.0,
'recipe_type' => 'manufacturer',
]);
$material = PackagingMaterial::factory()->create();
@ -168,6 +169,7 @@ test('production service rejects wrong gram sum', function () {
'pos' => 0,
'gram' => 10,
'factor' => 1.0,
'recipe_type' => 'manufacturer',
]);
$stock = StockEntry::query()->create([
@ -240,6 +242,7 @@ test('production api recipe json returns ingredients and packagings', function (
'pos' => 0,
'gram' => 2,
'factor' => 1.5,
'recipe_type' => 'manufacturer',
]);
StockEntry::query()->create([
@ -300,6 +303,7 @@ test('production mhd warning when stock expires before product end', function ()
'pos' => 0,
'gram' => 1,
'factor' => 1.0,
'recipe_type' => 'manufacturer',
]);
$stock = StockEntry::query()->create([