Warenwirtschaft: F-15 — ml-Einkauf bleibt beim Kopieren ml-Bestellung

Einheit, ml-Menge und Dichte-Snapshot werden übernommen; fehlt die
Rohstoff-Dichte inzwischen, greift der Snapshot der Vorlage.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
This commit is contained in:
Kevin Adametz 2026-09-08 11:07:22 +00:00
parent 8808ff538f
commit c2a17835ef
3 changed files with 59 additions and 1 deletions

View file

@ -50,6 +50,9 @@ class StockEntryRepository
protected function applyPurchaseUnit(array $data): array
{
$orderedUnit = $data['ordered_unit'] ?? 'gram';
// F-15: Dichte-Snapshot der Vorlage (Kopie) als Rückfall, falls die Rohstoff-Dichte
// inzwischen entfernt wurde — sonst würde die ml-Menge still als Gramm gebucht.
$fallbackDensity = isset($data['density_used']) && (float) $data['density_used'] > 0 ? (float) $data['density_used'] : null;
unset($data['ordered_unit']);
if (($data['entry_type'] ?? '') !== 'ingredient') {
@ -63,7 +66,7 @@ class StockEntryRepository
$data['density_used'] = null;
if ($orderedUnit === 'ml') {
$density = Ingredient::query()->whereKey($data['ingredient_id'] ?? null)->value('density');
$density = Ingredient::query()->whereKey($data['ingredient_id'] ?? null)->value('density') ?? $fallbackDensity;
if ($density !== null && (float) $density > 0) {
$data['purchase_unit'] = 'ml';
$data['density_used'] = (float) $density;