MHD nur mit Monat und Jahr in Web-UI und iOS-App
Setzt den Backend-Umbau in beiden Oberflaechen um. Die Genauigkeit gilt jeweils fuer den ganzen Einlager-Vorgang und nicht je Charge: Auf einer Packung steht entweder ein Tagesdatum oder nur Monat/Jahr, gemischt kommt das nicht vor. Vorbelegt wird sie aus dem Produkt, laesst sich aber im Vorgang umstellen. Web-UI: Umschalter im Kopf der Chargenliste; das Eingabefeld wechselt zwischen type="date" und type="month". Im Produktformular gibt es das neue Feld "MHD-Angabe" neben der Gebinde-Bezeichnung. Anzeige laeuft ueber den Settings-Context, damit das eingestellte Datumsformat erhalten bleibt und Monatsangaben ueberall als "09/2026" erscheinen (Auslagern, Uebersicht, Chargentabelle). Die Abgelaufen-Warnung prueft bei Monatsangaben gegen den Monatsletzten - sonst haette eine Packung schon am Monatsersten als abgelaufen gegolten. iOS: Auswahl "Tagesdatum / nur Monat/Jahr" im Einlagern-Formular und beim Anlegen eines Artikels. SwiftUI hat keinen DatePicker ohne Tag, deshalb ein eigener MonthYearPicker aus zwei Auswahlfeldern; die Jahresliste reicht zwei Jahre zurueck (bereits abgelaufene Ware) und fuenfzehn nach vorn (Konserven). Die Chargenauswahl beim Auslagern zeigt Monatsangaben ebenfalls ohne Tag. Getestet: Web-Build (vite) und iOS-Geraetebuild laufen fehlerfrei durch, die App ist auf dem iPhone installiert. Das Verhalten in der Oberflaeche ist noch nicht von Hand durchgeklickt. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
@@ -190,8 +190,16 @@ struct CheckOutFormView: View {
|
||||
|
||||
private func label(for lot: Lot) -> String {
|
||||
let amount = format(lot.quantity / product.articleUnitFactor)
|
||||
let date = lot.bestBefore ?? "ohne MHD"
|
||||
return "\(date) · \(amount) \(product.articleUnitLabel)"
|
||||
return "\(bestBeforeText(lot)) · \(amount) \(product.articleUnitLabel)"
|
||||
}
|
||||
|
||||
/// Monatsangaben ohne Tag zeigen: "09/2026" statt "2026-09-30".
|
||||
private func bestBeforeText(_ lot: Lot) -> String {
|
||||
guard let raw = lot.bestBefore else { return "ohne MHD" }
|
||||
guard lot.bestBeforePrecision == "month" else { return raw }
|
||||
let parts = raw.split(separator: "-")
|
||||
guard parts.count >= 2 else { return raw }
|
||||
return "\(parts[1])/\(parts[0])"
|
||||
}
|
||||
|
||||
private func format(_ value: Double) -> String {
|
||||
|
||||
Reference in New Issue
Block a user