Kategorie- und Lagerortverwaltung: Anlegen/Umbenennen/Löschen + Lagerort vorausfüllen #51

Closed
opened 2026-05-16 11:13:04 +00:00 by jreinemann-euris · 1 comment
jreinemann-euris commented 2026-05-16 11:13:04 +00:00 (Migrated from github.com)

Bug

Es können keine neuen Einträge angelegt werden, weil keine Kategorien und Lagerorte zur Auswahl stehen. Ohne Kategorie und Lagerort lässt sich das Pflichtfeld im Formular nicht befüllen → die App ist für neue User faktisch unbenutzbar.

Anforderungen

1. Kategorieverwaltung (UI)

  • Anlegen: Neue Kategorie mit Namen erstellen
  • Umbenennen: Bestehende Kategorie umbenennen
  • Löschen:
    • Falls Kategorie nicht verwendet → direkt löschen
    • Falls Kategorie verwendet → Dialog: "Diese Kategorie wird von X Artikeln verwendet. Zu welcher Kategorie sollen sie verschoben werden?" → Dropdown mit verbleibenden Kategorien → nach Umzuweisung löschen

2. Lagerortverwaltung (UI)

  • Gleiche Funktionalität wie Kategorieverwaltung:
    • Anlegen, Umbenennen, Löschen (mit Umzuweisungs-Dialog bei verwendeten Lagerorten)

3. Letzten Lagerort vorausfüllen

  • Beim Anlegen/Erfassen eines neuen Artikels wird der zuletzt verwendete Lagerort automatisch vorausgewählt
  • "Zuletzt verwendet" = Lagerort des zuletzt angelegten oder bearbeiteten Artikels
  • User kann den Vorschlag jederzeit ändern

UI-Zugang

  • Erreichbar über Einstellungen oder direkt im Formular (z.B. "+"-Button neben dem Dropdown)
  • Alternativ: eigener Menüpunkt unter Einstellungen → "Kategorien verwalten" / "Lagerorte verwalten"

Akzeptanzkriterien

  • Kategorien können angelegt, umbenannt und gelöscht werden
  • Beim Löschen einer verwendeten Kategorie erscheint Umzuweisungs-Dialog
  • Lagerorte können angelegt, umbenannt und gelöscht werden
  • Beim Löschen eines verwendeten Lagerorts erscheint Umzuweisungs-Dialog
  • Beim Neuanlegen eines Artikels ist der zuletzt verwendete Lagerort vorausgewählt
  • Nach Erstinstallation kann der User sofort Kategorien und Lagerorte anlegen und dann Artikel erfassen
## Bug Es können keine neuen Einträge angelegt werden, weil keine Kategorien und Lagerorte zur Auswahl stehen. Ohne Kategorie und Lagerort lässt sich das Pflichtfeld im Formular nicht befüllen → die App ist für neue User faktisch unbenutzbar. ## Anforderungen ### 1. Kategorieverwaltung (UI) - **Anlegen**: Neue Kategorie mit Namen erstellen - **Umbenennen**: Bestehende Kategorie umbenennen - **Löschen**: - Falls Kategorie **nicht verwendet** → direkt löschen - Falls Kategorie **verwendet** → Dialog: "Diese Kategorie wird von X Artikeln verwendet. Zu welcher Kategorie sollen sie verschoben werden?" → Dropdown mit verbleibenden Kategorien → nach Umzuweisung löschen ### 2. Lagerortverwaltung (UI) - Gleiche Funktionalität wie Kategorieverwaltung: - **Anlegen**, **Umbenennen**, **Löschen** (mit Umzuweisungs-Dialog bei verwendeten Lagerorten) ### 3. Letzten Lagerort vorausfüllen - Beim Anlegen/Erfassen eines neuen Artikels wird der **zuletzt verwendete Lagerort** automatisch vorausgewählt - "Zuletzt verwendet" = Lagerort des zuletzt angelegten oder bearbeiteten Artikels - User kann den Vorschlag jederzeit ändern ## UI-Zugang - Erreichbar über Einstellungen oder direkt im Formular (z.B. "+"-Button neben dem Dropdown) - Alternativ: eigener Menüpunkt unter Einstellungen → "Kategorien verwalten" / "Lagerorte verwalten" ## Akzeptanzkriterien - [ ] Kategorien können angelegt, umbenannt und gelöscht werden - [ ] Beim Löschen einer verwendeten Kategorie erscheint Umzuweisungs-Dialog - [ ] Lagerorte können angelegt, umbenannt und gelöscht werden - [ ] Beim Löschen eines verwendeten Lagerorts erscheint Umzuweisungs-Dialog - [ ] Beim Neuanlegen eines Artikels ist der zuletzt verwendete Lagerort vorausgewählt - [ ] Nach Erstinstallation kann der User sofort Kategorien und Lagerorte anlegen und dann Artikel erfassen
jreinemann-euris commented 2026-05-16 12:06:02 +00:00 (Migrated from github.com)

Abgeschlossen (2026-05-16)

Zyklen: 1 Implementierungszyklus + 1 Review-Korrektur-Zyklus
Tests: BUILD SUCCESSFUL, alle Tests grün

Implementierte Artefakte

  • ItemDao: 5 neue Queries (countByCategoryId, updateCategoryId, countByLocationId, updateLocationId, getLastUsedLocationId)
  • ItemRepository + Impl: 5 neue Methoden (reassignCategory, reassignLocation, getLastUsedLocationId, ...)
  • CategoryListViewModel: Umbenennen (showEditDialog/saveEditCategory) + Löschen mit Umzuweisungs-Dialog (showDeleteDialog prüft Item-Anzahl)
  • LocationListViewModel: analog
  • CategoryListScreen: Edit-Icon (Bleistift), EditCategoryDialog, ReassignAndDeleteCategoryDialog mit ExposedDropdownMenu
  • LocationListScreen: analog
  • ItemFormViewModel: letzter verwendeter Lagerort wird bei neuen Artikeln vorausgewählt (mit Validierung gegen aktuelle Liste)
  • 20 neue Unit-Tests (Rename, Reassign, dismissReassignDialog, staleLastLocationId)
## Abgeschlossen (2026-05-16) **Zyklen:** 1 Implementierungszyklus + 1 Review-Korrektur-Zyklus **Tests:** ✅ BUILD SUCCESSFUL, alle Tests grün ### Implementierte Artefakte - ✅ ItemDao: 5 neue Queries (countByCategoryId, updateCategoryId, countByLocationId, updateLocationId, getLastUsedLocationId) - ✅ ItemRepository + Impl: 5 neue Methoden (reassignCategory, reassignLocation, getLastUsedLocationId, ...) - ✅ CategoryListViewModel: Umbenennen (showEditDialog/saveEditCategory) + Löschen mit Umzuweisungs-Dialog (showDeleteDialog prüft Item-Anzahl) - ✅ LocationListViewModel: analog - ✅ CategoryListScreen: Edit-Icon (Bleistift), EditCategoryDialog, ReassignAndDeleteCategoryDialog mit ExposedDropdownMenu - ✅ LocationListScreen: analog - ✅ ItemFormViewModel: letzter verwendeter Lagerort wird bei neuen Artikeln vorausgewählt (mit Validierung gegen aktuelle Liste) - ✅ 20 neue Unit-Tests (Rename, Reassign, dismissReassignDialog, staleLastLocationId)
Sign in to join this conversation.
No description provided.