App: Einheiten-Felder als zusammenhaengender Block

Dieselbe Umstellung wie im Web. Der Abschnitt "Artikel" traegt nur noch Name
und Marke; alles zur Einheit steht unter "Einheit und Menge" und liest sich als
Satz ("1 Packung sind 3 Stueck"). Das Gebinde heisst jetzt auch so statt
"Bezeichnung" und steht vor der Packungsgroesse, weil die Zeile darunter es
beim Namen nennt.

Die Umrechnung heisst nach dem, was sie liefert (Gewicht / Volumen /
Stueckzahl), beginnt mit einer einzigen Auswahl und zeigt den Satz erst danach -
mit passendem Verb und Ein-/Mehrzahl. Die linke Zahl wird beim Waehlen der
Zielart einmalig mit der Packungsgroesse vorbelegt.

Das Anlege-Formular kannte die Umrechnung bisher gar nicht; wer in der App
einen Artikel anlegte, musste ihn erst speichern und wieder oeffnen. Es hat
jetzt denselben Abschnitt und uebernimmt den Vorschlag aus dem Barcode-Lookup
("3 x 80 g").

Reine Oberflaeche - 226 Backend-Tests unveraendert gruen.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
Scarriffle
2026-08-16 09:21:42 +02:00
parent 37bc7663af
commit 158175f693
3 changed files with 160 additions and 16 deletions

View File

@@ -277,6 +277,10 @@ struct LookupResult: Codable {
let baseUnit: String?
let packageSize: Double?
let quantityText: String?
/// Aus 3 x 80 g" vorgeschlagene Umrechnung nur ein Vorschlag.
let secondaryBase: String?
let secondaryCount: Double?
let secondaryAmount: Double?
enum CodingKeys: String, CodingKey {
case barcode, name, brand
@@ -284,6 +288,9 @@ struct LookupResult: Codable {
case baseUnit = "base_unit"
case packageSize = "package_size"
case quantityText = "quantity_text"
case secondaryBase = "secondary_base"
case secondaryCount = "secondary_count"
case secondaryAmount = "secondary_amount"
}
}
}
@@ -410,6 +417,10 @@ struct NewProductRequest: Codable {
var bulk: Bool? = nil
/// Selbst definierte Feldwerte der Kategorie: {feld_id (als Text): Wert}.
var fieldValues: [String: String?]? = nil
/// Umrechnung in die andere Art (3 Stück 250 g"), optional.
var secondaryBase: String? = nil
var secondaryCount: Double? = nil
var secondaryAmount: Double? = nil
enum CodingKeys: String, CodingKey {
case barcode, name, brand, individual, bulk
@@ -421,6 +432,9 @@ struct NewProductRequest: Codable {
case groupId = "group_id"
case categoryId = "category_id"
case fieldValues = "field_values"
case secondaryBase = "secondary_base"
case secondaryCount = "secondary_count"
case secondaryAmount = "secondary_amount"
}
}