Artikel anlegen & bearbeiten (ViewModel + UI) #27

Closed
opened 2026-05-13 22:39:57 +00:00 by jreinemann-euris · 1 comment
jreinemann-euris commented 2026-05-13 22:39:57 +00:00 (Migrated from github.com)

Feature: Artikel anlegen & bearbeiten

Part of: #6
Depends on: #25, #26

Ziel

Benutzer können neue Artikel über ein Formular anlegen und bestehende Artikel bearbeiten. Alle Felder aus dem Datenmodell sind editierbar.

Scope

  • ItemFormViewModel:
    • Create-Modus (neuer Artikel) und Edit-Modus (bestehender Artikel laden)
    • Form-State mit allen Feldern als MutableStateFlow
    • Validierung (Name pflicht, Menge > 0, Kategorie und Lagerort pflicht)
    • Save-Funktion (insert oder update je nach Modus)
    • Lädt Kategorien und Lagerorte für Dropdown-Auswahl
  • ItemFormScreen:
    • OutlinedTextField für Name, Menge, Einheit, Preis, kcal/100g, Mindestbestand, Notizen
    • ExposedDropdownMenuBox für Kategorie und Lagerort
    • DatePicker für Ablaufdatum (MHD)
    • Validierungsfehler inline anzeigen
    • Save-Button in TopAppBar oder als Button am Ende
    • UUID-Generierung für neue Artikel (java.util.UUID)

Technische Hinweise

  • Bestehende Repositories: ItemRepository (insert, update, getById), CategoryRepository (getAll), LocationRepository (getAll)
  • ItemEntity-Felder: id (String/UUID), name, categoryId, quantity, unit, unitPrice, kcalPer100g, expiryDate, locationId, minStock, notes, lastUpdated
  • Edit-Modus: Item-ID als Navigation-Argument übergeben, ViewModel lädt Item per getById
  • Material 3: OutlinedTextField, ExposedDropdownMenuBox, DatePickerDialog

Akzeptanzkriterien

  • Neuer Artikel kann mit allen Pflichtfeldern angelegt werden
  • Bestehender Artikel kann bearbeitet und gespeichert werden
  • Validierung verhindert Speichern ungültiger Daten
  • Kategorie und Lagerort sind als Dropdown wählbar
  • Ablaufdatum kann über DatePicker gesetzt werden
  • Tests: Unit-Tests für ItemFormViewModel (Create + Edit + Validierung)
## Feature: Artikel anlegen & bearbeiten Part of: #6 Depends on: #25, #26 ### Ziel Benutzer können neue Artikel über ein Formular anlegen und bestehende Artikel bearbeiten. Alle Felder aus dem Datenmodell sind editierbar. ### Scope - ItemFormViewModel: - Create-Modus (neuer Artikel) und Edit-Modus (bestehender Artikel laden) - Form-State mit allen Feldern als MutableStateFlow - Validierung (Name pflicht, Menge > 0, Kategorie und Lagerort pflicht) - Save-Funktion (insert oder update je nach Modus) - Lädt Kategorien und Lagerorte für Dropdown-Auswahl - ItemFormScreen: - OutlinedTextField für Name, Menge, Einheit, Preis, kcal/100g, Mindestbestand, Notizen - ExposedDropdownMenuBox für Kategorie und Lagerort - DatePicker für Ablaufdatum (MHD) - Validierungsfehler inline anzeigen - Save-Button in TopAppBar oder als Button am Ende - UUID-Generierung für neue Artikel (java.util.UUID) ### Technische Hinweise - Bestehende Repositories: ItemRepository (insert, update, getById), CategoryRepository (getAll), LocationRepository (getAll) - ItemEntity-Felder: id (String/UUID), name, categoryId, quantity, unit, unitPrice, kcalPer100g, expiryDate, locationId, minStock, notes, lastUpdated - Edit-Modus: Item-ID als Navigation-Argument übergeben, ViewModel lädt Item per getById - Material 3: OutlinedTextField, ExposedDropdownMenuBox, DatePickerDialog ### Akzeptanzkriterien - [ ] Neuer Artikel kann mit allen Pflichtfeldern angelegt werden - [ ] Bestehender Artikel kann bearbeitet und gespeichert werden - [ ] Validierung verhindert Speichern ungültiger Daten - [ ] Kategorie und Lagerort sind als Dropdown wählbar - [ ] Ablaufdatum kann über DatePicker gesetzt werden - [ ] Tests: Unit-Tests für ItemFormViewModel (Create + Edit + Validierung)
jreinemann-euris commented 2026-05-13 23:11:54 +00:00 (Migrated from github.com)

Abgeschlossen (2026-05-14)

Zyklen: 1
Tests: 18 Tests, 0 Fehler

Implementierte Artefakte

  • ItemFormViewModel: Create/Edit-Modus, Form-State mit MutableStateFlow, Validierung (Name, Menge, Kategorie, Lagerort), Save (insert/update), lädt Kategorien und Lagerorte
  • ItemFormScreen: OutlinedTextField für alle Felder, ExposedDropdownMenuBox für Kategorie/Lagerort, DatePickerDialog für MHD, inline Validierungsfehler, Save-Button in TopAppBar
  • ItemFormViewModelTest: 18 Unit-Tests (Create-Modus, Edit-Modus, Feldaktualisierungen, Validierung aller Pflichtfelder, Save-Verhalten)

Abweichungen

keine

## Abgeschlossen (2026-05-14) **Zyklen:** 1 **Tests:** ✅ 18 Tests, 0 Fehler ### Implementierte Artefakte - ✅ **ItemFormViewModel**: Create/Edit-Modus, Form-State mit MutableStateFlow, Validierung (Name, Menge, Kategorie, Lagerort), Save (insert/update), lädt Kategorien und Lagerorte - ✅ **ItemFormScreen**: OutlinedTextField für alle Felder, ExposedDropdownMenuBox für Kategorie/Lagerort, DatePickerDialog für MHD, inline Validierungsfehler, Save-Button in TopAppBar - ✅ **ItemFormViewModelTest**: 18 Unit-Tests (Create-Modus, Edit-Modus, Feldaktualisierungen, Validierung aller Pflichtfelder, Save-Verhalten) ### Abweichungen keine
Sign in to join this conversation.
No description provided.