Warenwirtschaft: Dichte am Rohstoff selbsterklärend (Zweck, Umrechnung, Wirkung)
Die Dichte (g/ml) wirkte "unverbunden": Sie wird nur beim Einkauf in ml gebraucht (ml × Dichte = Gramm), der Bestand läuft immer in Gramm. Wer in Gramm erfasst, sah die Dichte nirgends wirken. Zudem verschwamm sie mit dem daneben stehenden Schwundfaktor. - Rohstoff-Formular: Hilfetexte trennen beide Faktoren eindeutig (Schwundfaktor = Rezeptur/Produktion, Dichte = nur ml-Einkauf) und die Dichte zeigt eine Live-Vorschau „1 ml = x g / 100 ml = y g". - Rohstoffbestand-Detailseite: Dichte als Stammdatum mit Kurzerklärung eingeblendet, damit der Wert dort sichtbar ist, wo der Bestand steht. Kein Mechanik-Wechsel; Umrechnung/Speicherung in Gramm bleiben unverändert. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
parent
d8417ed958
commit
2859b4339c
3 changed files with 30 additions and 4 deletions
|
|
@ -67,6 +67,23 @@
|
||||||
$('#delivery_time_days').val(option.data('days'));
|
$('#delivery_time_days').val(option.data('days'));
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
|
// AP-42: Live-Vorschau der Dichte — macht sofort sichtbar, wie ml in Gramm
|
||||||
|
// umgerechnet werden und dass das Feld beim Einkauf in ml zum Tragen kommt.
|
||||||
|
var $density = $('#density');
|
||||||
|
var $densityPreview = $('#density-preview');
|
||||||
|
function renderDensityPreview() {
|
||||||
|
var raw = String($density.val() || '').trim().replace(/\./g, '').replace(',', '.');
|
||||||
|
var d = parseFloat(raw);
|
||||||
|
if (!raw || isNaN(d) || d <= 0) {
|
||||||
|
$densityPreview.text('{{ __('leer = Erfassung immer in Gramm.') }}');
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
var g = d.toLocaleString('de-DE', {minimumFractionDigits: 2, maximumFractionDigits: 4, useGrouping: false});
|
||||||
|
$densityPreview.text('1 ml = ' + g + ' g · 100 ml = ' + (d * 100).toLocaleString('de-DE', {maximumFractionDigits: 1, useGrouping: false}) + ' g');
|
||||||
|
}
|
||||||
|
$density.on('input change', renderDensityPreview);
|
||||||
|
renderDensityPreview();
|
||||||
});
|
});
|
||||||
</script>
|
</script>
|
||||||
@endsection
|
@endsection
|
||||||
|
|
|
||||||
|
|
@ -177,16 +177,20 @@
|
||||||
<div class="form-group col-sm-3">
|
<div class="form-group col-sm-3">
|
||||||
<label class="form-label" for="default_factor">{{ __('Standard-Schwundfaktor') }}</label>
|
<label class="form-label" for="default_factor">{{ __('Standard-Schwundfaktor') }}</label>
|
||||||
{{ Form::text('default_factor', $model->default_factor !== null ? formatNumber($model->default_factor) : formatNumber(1.10), array('placeholder'=>'1,10', 'class'=>'form-control', 'id'=>'default_factor')) }}
|
{{ Form::text('default_factor', $model->default_factor !== null ? formatNumber($model->default_factor) : formatNumber(1.10), array('placeholder'=>'1,10', 'class'=>'form-control', 'id'=>'default_factor')) }}
|
||||||
|
<small class="form-text text-muted">{{ __('Überschuss/Schwund in der Rezeptur: Verbrauch = Rezeptur-Gramm × Faktor. 1,10 = 10 % Aufschlag. Wirkt in der Produktion, nicht im Einkauf.') }}</small>
|
||||||
</div>
|
</div>
|
||||||
<div class="form-group col-sm-3">
|
<div class="form-group col-sm-3">
|
||||||
<label class="form-label" for="min_stock_alert">{{ __('Meldebestand (g)') }}</label>
|
<label class="form-label" for="min_stock_alert">{{ __('Meldebestand (g)') }}</label>
|
||||||
{{ Form::text('min_stock_alert', $model->min_stock_alert !== null ? formatNumber($model->min_stock_alert) : '', array('placeholder'=>__('optional'), 'class'=>'form-control', 'id'=>'min_stock_alert')) }}
|
{{ Form::text('min_stock_alert', $model->min_stock_alert !== null ? formatNumber($model->min_stock_alert) : '', array('placeholder'=>__('optional'), 'class'=>'form-control', 'id'=>'min_stock_alert')) }}
|
||||||
</div>
|
</div>
|
||||||
<div class="form-group col-sm-3">
|
<div class="form-group col-sm-3">
|
||||||
{{-- AP-42: Dichte g/ml — erlaubt die Erfassung des Wareneingangs in ml (100 ml × 0,79 = 79 g). --}}
|
{{-- AP-42: Dichte g/ml — reiner Umrechnungsfaktor ml→g, greift NUR beim Wareneingang, wenn die Einheit auf „ml" gestellt wird. Bestand bleibt intern in Gramm. --}}
|
||||||
<label class="form-label" for="density">{{ __('Dichte (g/ml)') }}</label>
|
<label class="form-label" for="density">{{ __('Dichte (g/ml)') }}</label>
|
||||||
{{ Form::text('density', $model->density !== null ? formatNumber($model->density) : '', array('placeholder'=>__('z. B. 0,79 – optional'), 'class'=>'form-control', 'id'=>'density')) }}
|
{{ Form::text('density', $model->density !== null ? formatNumber($model->density) : '', array('placeholder'=>__('z. B. 0,91 – optional'), 'class'=>'form-control', 'id'=>'density')) }}
|
||||||
<small class="form-text text-muted">{{ __('Leer = Erfassung in Gramm.') }}</small>
|
<small class="form-text text-muted">
|
||||||
|
{{ __('Nur nötig, wenn du diesen Rohstoff in ml einkaufst (z. B. Öle/Tinkturen). Beim Wareneingang kannst du dann die Einheit auf „ml“ stellen; das System rechnet in Gramm um:') }}
|
||||||
|
<span id="density-preview" class="d-block font-weight-bold text-body mt-1">{{ __('leer = Erfassung immer in Gramm.') }}</span>
|
||||||
|
</small>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -80,10 +80,15 @@
|
||||||
</span>
|
</span>
|
||||||
@endif
|
@endif
|
||||||
@if($ingredient->storageLabel())
|
@if($ingredient->storageLabel())
|
||||||
<span class="text-muted small">
|
<span class="text-muted small mr-3">
|
||||||
{{ __('Lagerort') }}: <strong>{{ $ingredient->storageLabel() }}</strong>
|
{{ __('Lagerort') }}: <strong>{{ $ingredient->storageLabel() }}</strong>
|
||||||
</span>
|
</span>
|
||||||
@endif
|
@endif
|
||||||
|
@if($ingredient->density !== null)
|
||||||
|
<span class="text-muted small" title="{{ __('Nur für den Einkauf in ml — der Bestand wird immer in Gramm geführt (1 ml × Dichte = g).') }}">
|
||||||
|
{{ __('Dichte') }}: <strong>{{ \App\Services\Util::formatNumber($ingredient->density) }} g/ml</strong>
|
||||||
|
</span>
|
||||||
|
@endif
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue