feat(item-form): Einheit als Dropdown mit Vordefiniert-Liste + Custom-Option #114
Labels
No labels
block-planning
bug
documentation
duplicate
enhancement
feature
good first issue
help wanted
infrastructure
invalid
planning
priority:high
priority:low
question
refactoring
status:backlog
status:done
status:in-progress
status:todo
tech-decision
test
wontfix
No milestone
No project
No assignees
1 participant
Notifications
Due date
No due date set.
Dependencies
No dependencies set.
Reference: bollwerkadmin/bollwerk#114
Loading…
Reference in a new issue
No description provided.
Delete branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Anforderung
Das Einheiten-Feld im Item-Formular soll von einem freien Textfeld zu einem Dropdown mit vordefinierten Optionen + Custom werden. Der Preis wird semantisch als
Preis pro [Einheit]dargestellt.Vordefinierte Einheiten (fest, in dieser Reihenfolge)
StückgkgmllPackungDoseFlascheBenutzerdefiniertDie Liste ist hardcoded als
object UnitOptionsmitval predefined: List<String>in einer neuen DateiUnitOption.kt.Verhalten
Dropdown
ExposedDropdownMenuBox(wie das Kategorie- und Lagerort-Dropdown im selben Formular)StückCustom-Option
Benutzerdefiniertgewählt wird: Ein zusätzlichesOutlinedTextFielderscheint direkt daruntermaxLength = 16Zeichen (Guard inonValueChange)"z.B. Karton"unit(nicht der String"Benutzerdefiniert")Preis-Label (dynamisch)
Das Preis-Feld-Label zeigt die gewählte Einheit:
"Preis pro Stück (€)""Preis pro kg (€)""Preis pro [custom] (€)"wenn Custom ausgefüllt, sonst"Preis pro Einheit (€)"Rückwärtskompatibilität
Bestehende Items beim Bearbeiten
Beim Laden eines Items in das Formular:
item.unitin der Vordefiniert-Liste enthalten ist → Dropdown auf diesen Wert setzenitem.unitnicht in der Liste enthalten ist → Dropdown aufBenutzerdefiniert, Custom-Textfeld mititem.unitvorausfüllenNormalisierung von "Stk" / "Stk."
Bestehende Einträge mit
unit == "Stk"oderunit == "Stk."sollen zu"Stück"normalisiert werden.Umsetzung als einmalige Update-Query beim App-Start (z.B. in
ItemRepositoryImpl.initoder als RoomRoomDatabase.Callback):Betroffene Dateien
domain/model/UnitOption.ktobject UnitOptionsmitpredefined: List<String>ItemFormScreen.ktOutlinedTextFieldEinheit →ExposedDropdownMenuBox+ optionales Custom-Feld; Preis-Label dynamischItemFormViewModel.ktupdateUnit()anpassen; Custom-Zweig (isCustomUnit,customUnitText); Lade-Logik für RückwärtskompatibilitätItemRepositoryImpl.ktAbnahme-Kriterien
Benutzerdefiniert→ Custom-Textfeld erscheint, max. 16 Zeichen"Preis pro kg (€)""Stk"/"Stk."-Einträge werden zu"Stück"normalisiert