diff --git a/web/src/pages/ProductForm.jsx b/web/src/pages/ProductForm.jsx index 8fdf7aa..8c54614 100644 --- a/web/src/pages/ProductForm.jsx +++ b/web/src/pages/ProductForm.jsx @@ -590,6 +590,40 @@ export default function ProductForm() { const BASE_SHORT_OF_KIND = { count: "Stk", weight: "g", volume: "ml" }; // Basiseinheit je Art – die eigene Art fliegt aus der Zweiteinheit-Auswahl. const BASE_OF_KIND = { count: "piece", weight: "gram", volume: "milliliter" }; + // Die Umrechnung heißt nach dem, was sie liefert – „Zweiteinheit" musste man + // erst übersetzen. Ohne gewählte Zielart ein neutraler Titel. + const ZWEIT_TITEL = { gram: "Gewicht", milliliter: "Volumen", piece: "Stückzahl" }; + // Verb passend zur Zielart und zur Anzahl: „1 Stück wiegt" / „3 Stück wiegen". + const ZWEIT_VERB = { + gram: ["wiegt", "wiegen"], milliliter: ["fasst", "fassen"], piece: ["ist", "sind"], + }; + const zweitTitel = ZWEIT_TITEL[form.secondary_base] || "Umrechnung"; + const zweitVerb = (() => { + const paar = ZWEIT_VERB[form.secondary_base]; + if (!paar) return ""; + return Number(form.secondary_count) === 1 ? paar[0] : paar[1]; + })(); + // Das Gebinde beim Namen nennen: „1 Packung sind …". Ohne Auswahl der + // Standard, sonst stünde dort „1 sind 3 Stück". + const gebindeName = form.package_label.trim() || "Packung"; + + // Zielart wählen: die linke Zahl einmalig mit der Packungsgröße vorbelegen – + // im Normalfall ist sie genau das („1 Packung = 3 Stück, und die wiegen + // 250 g"). BEWUSST keine dauerhafte Kopplung: wer die Packung später auf 4 + // ändert, hat dieselbe Wurst, und ein mitgezogener Wert würde stillschweigend + // behaupten, sie sei leichter geworden. + function waehleZweitart(basis) { + if (basis && form.secondary_count === "") { + setForm((f) => ({ + ...f, + secondary_base: basis, + secondary_count: f.package_size !== "" ? f.package_size : "1", + })); + return; + } + set("secondary_base", basis); + } + // Ausgerechneter Wert als Kontrolle: „1 Stk ≈ 83,33 g". const zweitHinweis = (() => { const f = zweitFaktor({ @@ -600,6 +634,7 @@ export default function ProductForm() { if (!f) return ""; return `1 ${BASE_SHORT_OF_KIND[selectedUnit?.kind] || "Einheit"} \u2248 ` + `${fmt(f)} ${unitShort(form.secondary_base)}. ` + + "Damit zählt der Artikel auch in Gruppen, die in dieser Einheit rechnen. " + "Bestände bleiben beim Ändern unverändert – nur ihre Umrechnung verschiebt sich."; })(); const baseShort = selectedUnit @@ -799,9 +834,17 @@ export default function ProductForm() { {/* Lebensmittel ODER Verbrauchsgegenstand: Einheit, Packung, MHD, Mindestbestand (mit Einheit), Gruppe, Mindestbestand je Lagerort. */} {foodLike && (<> + {/* Alles rund um Einheit, Packung und Umrechnung steht zusammen und + liest sich als Satz. Vorher lagen die Felder verstreut, und die + Packungsgroesse stand als blanke Zahl neben einer zweiten, gleich + aussehenden Zahl aus der Umrechnung – das war nicht zu trennen. */} +
+ +

Einheit und Menge

+
- -
-
+ {/* Gebinde VOR der Packungsgröße: die Zeile darunter nennt es beim + Namen („1 Packung sind …"). */} +
+
+
+ + {/* Umrechnung in die ANDERE Art: „3 Stück wiegen 250 g". Solange + keine Zielart gewählt ist, steht hier nur eine Auswahl. */} +
+ +

{zweitTitel} (optional)

+
+
+
- {/* Zweiteinheit: dieselbe Ware in der ANDEREN Art lesbar machen. - Links steht die Basiseinheit des Artikels fest, rechts die - Gegenart. Ohne Eintrag bleibt alles wie bisher getrennt. */} -
-
+ )} {zweitHinweis &&

{zweitHinweis}

}
{/* Beim Anlegen gibt es den Artikel noch nicht, also auch keine @@ -904,6 +952,16 @@ export default function ProductForm() {
)} +