From 49a96d7fdb6a11c3e2d75fad39e6084dc0e15bf2 Mon Sep 17 00:00:00 2001 From: Scarriffle Date: Tue, 28 Jul 2026 08:54:50 +0200 Subject: [PATCH] Web: Mindestbestand nur fuer Charge-Artikel (Lebensmittel + Verbrauchsgegenstand) Menge je Lagerort und Einzelstuecke haben keinen Mindestbestand mehr: die "Mindestbestand (Stueck)"-Felder und der je-Lagerort-Block fallen im Formular weg (Gruppe fuer Menge bleibt), Alt-Werte werden beim Speichern geleert. Die Mindestbestaende-Seite und der "+ hinzufuegen"-Dialog zeigen nur noch Charge-Artikel. Co-Authored-By: Claude Opus 4.8 --- web/src/pages/MinStock.jsx | 7 ++-- web/src/pages/ProductForm.jsx | 61 +++++++++++------------------------ 2 files changed, 23 insertions(+), 45 deletions(-) diff --git a/web/src/pages/MinStock.jsx b/web/src/pages/MinStock.jsx index e85c109..d51b732 100644 --- a/web/src/pages/MinStock.jsx +++ b/web/src/pages/MinStock.jsx @@ -14,6 +14,9 @@ import { fmt } from "../units"; // echte Einheit um. dispFactor = Basiseinheiten je Anzeigeeinheit. const dispFactor = (p) => (p.unit_factor && p.unit_factor > 0 ? p.unit_factor : 1); const dispLabel = (p) => (p.unit_name || "Stück"); +// Mindestbestand gibt es nur bei Charge-Artikeln: Lebensmittel und +// Verbrauchsgegenstände (bulk). „Menge je Lagerort" und Einzelstücke nicht. +const canHaveMin = (p) => p.tracking !== "object" || p.bulk === true; // Artikeleinheit (Packung, sonst Anzeigeeinheit): nur noch nötig, um die je-Lagerort- // Mindestbestände umzurechnen, die in Artikeleinheiten gespeichert sind. const articleUnit = (p) => (p.package_size && p.package_size > 0 ? p.package_size : (p.unit_factor || 1)); @@ -50,7 +53,7 @@ export default function MinStock() { const rows = useMemo(() => { const out = []; - for (const p of products) { + for (const p of products.filter(canHaveMin)) { out.push({ key: `p:${p.id}:global`, kind: "product", scope: "global", entity: p, name: p.name, catId: p.category_id, ort: "(Gesamt)", @@ -235,7 +238,7 @@ export default function MinStock() { set("min_stock", e.target.value)} disabled={readOnly} - placeholder="z.B. 3" /> + + Gruppe + + - {objMode === "count" && ( - - )} - - )} - {objMode !== "bulk" && !isNew && product && isAdmin && ( -
-
- -

Mindestbestand je Lagerort

-
-

- Bedarf je Lagerort (z.B. Ferienhaus, Zuhause), zusätzlich zum Gesamt-Mindestbestand. Menge in Stück. -

- toast(m, "warn")} - onSave={async (list) => { - const updated = await api.setProductLocationMinStock(product.id, list); - setProduct(updated); - toast("Bedarfe je Lagerort gespeichert."); - }} - />
)} {form.category_id !== "" && (