iOS: Verbrauchsgegenstand als dritte Gegenstands-Art (wie ein Lebensmittel)
Neuer Artikel: 3-Wege-Verwaltung fuer Gegenstaende (Menge je Lagerort / Einzelstuecke / Verbrauchsgegenstand). Verbrauchsgegenstaende laufen wie Lebensmittel als Charge (Einheit, Packung, MHD, Gruppe, Chargen-Ansicht, Mindestbestand mit Einheit) - foodLike = kein Gegenstand ODER bulk. Menge- Gegenstaende koennen jetzt ebenfalls einer Gruppe zugeordnet werden. ProductDetailView entsprechend auf foodLike umgestellt; NewProductRequest und ProductUpdateRequest um bulk/individual/base_unit erweitert. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
@@ -72,8 +72,9 @@ struct ProductFormView: View {
|
||||
@State private var selectedCategoryId: Int?
|
||||
// Umschalter Lebensmittel/Gegenstand: filtert die Kategorieauswahl.
|
||||
@State private var modus = "object"
|
||||
// Gegenstand als Einzelstücke (UID/QR je Stück) führen?
|
||||
@State private var individual = false
|
||||
// Verwaltungsart eines Gegenstands: "count" (Menge je Lagerort),
|
||||
// "individual" (Einzelstücke) oder "bulk" (Verbrauchsgegenstand wie Lebensmittel).
|
||||
@State private var objMode = "count"
|
||||
@State private var groups: [GroupItem] = []
|
||||
@State private var categories: [CategoryItem] = []
|
||||
@State private var units: [Unit] = []
|
||||
@@ -85,6 +86,13 @@ struct ProductFormView: View {
|
||||
// Beschriftungen kommen sonst aus DisplaySettings.baseUnitLabel.
|
||||
private let labels = ["", "Glas", "Tüte", "Flasche", "Dose", "Tube", "Becher", "Beutel", "Karton"]
|
||||
|
||||
/// Nutzt die Lebensmittel-Pfade (Einheit, MHD, Charge): Lebensmittel ODER
|
||||
/// Verbrauchsgegenstand.
|
||||
private var foodLike: Bool { modus == "food" || objMode == "bulk" }
|
||||
/// Gruppe anbieten: Lebensmittel, Verbrauchsgegenstand oder Menge je Lagerort
|
||||
/// (nicht bei Einzelstücken).
|
||||
private var showGroup: Bool { modus == "food" || (modus == "object" && objMode != "individual") }
|
||||
|
||||
var body: some View {
|
||||
Form {
|
||||
Section("Artikel") {
|
||||
@@ -100,13 +108,19 @@ struct ProductFormView: View {
|
||||
.pickerStyle(.segmented)
|
||||
CategoryPicker(categories: categories, selection: $selectedCategoryId, tracking: modus)
|
||||
if modus == "object" {
|
||||
Toggle("Einzelstücke (UID/QR je Stück)", isOn: $individual)
|
||||
Picker("Verwaltung", selection: $objMode) {
|
||||
Text("Menge je Lagerort").tag("count")
|
||||
Text("Einzelstücke").tag("individual")
|
||||
Text("Verbrauchsgegenstand").tag("bulk")
|
||||
}
|
||||
}
|
||||
} footer: {
|
||||
Text(modus == "object"
|
||||
? (individual
|
||||
? (objMode == "individual"
|
||||
? "Einzelstücke: jedes Stück mit eigener UID/QR, Kaufdatum, Garantie."
|
||||
: "Gegenstand: Menge je Lagerort und eigene Felder.")
|
||||
: objMode == "bulk"
|
||||
? "Verbrauchsgegenstand: wie ein Lebensmittel als Charge mit Menge und Einheit (z.B. Sonnencreme in ml) – nur ohne eindeutigen Code."
|
||||
: "Gegenstand: Menge je Lagerort und eigene Felder.")
|
||||
: "Lebensmittel: Chargen mit Mindesthaltbarkeit.")
|
||||
}
|
||||
.onChange(of: modus) { neu in
|
||||
@@ -116,9 +130,9 @@ struct ProductFormView: View {
|
||||
selectedCategoryId = nil
|
||||
}
|
||||
}
|
||||
// Lebensmittel-Felder (Gruppe, Einheit, MHD) nur im Lebensmittel-Modus.
|
||||
// Fuer Gegenstaende irrelevant - sie zaehlen in Stueck je Lagerort.
|
||||
if modus == "food" {
|
||||
// Gruppe: Lebensmittel, Verbrauchsgegenstand und Menge je Lagerort
|
||||
// (nur Einzelstücke bleiben außen vor).
|
||||
if showGroup {
|
||||
Section {
|
||||
Picker("Gruppe", selection: $selectedGroupId) {
|
||||
Text("– keine –").tag(Int?.none)
|
||||
@@ -134,9 +148,12 @@ struct ProductFormView: View {
|
||||
}
|
||||
}
|
||||
} footer: {
|
||||
Text("Gruppe: zählt Bestände mehrerer Marken zusammen. Der EAN-Code "
|
||||
Text("Gruppe: zählt Bestände mehrerer Artikel zusammen. Der EAN-Code "
|
||||
+ "dieses Artikels erscheint danach automatisch bei der Gruppe.")
|
||||
}
|
||||
}
|
||||
// Einheit + MHD nur für Lebensmittel und Verbrauchsgegenstände (Charge).
|
||||
if foodLike {
|
||||
Section("Einheit") {
|
||||
Picker("Basiseinheit", selection: $baseUnit) {
|
||||
ForEach(baseUnits, id: \.0) { Text($0.1).tag($0.0) }
|
||||
@@ -217,7 +234,8 @@ struct ProductFormView: View {
|
||||
datePrecision: datePrecision,
|
||||
groupId: selectedGroupId,
|
||||
categoryId: selectedCategoryId,
|
||||
individual: modus == "object" ? individual : nil
|
||||
individual: modus == "object" ? (objMode == "individual") : nil,
|
||||
bulk: modus == "object" ? (objMode == "bulk") : nil
|
||||
)
|
||||
)
|
||||
onCreated(product)
|
||||
|
||||
Reference in New Issue
Block a user