feat: Rechnungsfilter (offen/gesendet), Rabatt-Dialog, Adress-Labels mit voller Adresse und Duplikatsschutz im Adressbuch

- Rechnungen erstellen: Filter Alle/Offene/Gesendete pro Abrechnungsmonat; Versand wird in system_invoice_dispatch protokolliert
- Rabatt pro Kunde jetzt über Icon-Dialog mit Prozentwert und Grund; Grund erscheint auf der Rechnungsposition
- MessageController: stille catch-Blöcke durch Logging ersetzt, offene Pflicht-Tasks werden bei station_completed geloggt
- Auftragserstellung: Abhol- und Lieferadresslisten zeigen die komplette Adresse, Auftraggeber nur den Firmennamen; (2)-Zähler entfernt
- Adressbuch: komplett identische Einträge werden beim Anlegen übersprungen bzw. mit Hinweis abgelehnt
- App: Versionsanzeige liest zur Laufzeit aus dem Build (package_info_plus), pubspec auf 0.9.20+1; Versionspflege dokumentiert (pom.xml fürs Web, pubspec.yaml für die App)

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This commit is contained in:
2026-07-07 17:41:21 +02:00
parent ef019eecee
commit f4c2fa6ba3
25 changed files with 290 additions and 35 deletions

View File

@@ -353,6 +353,7 @@ addcustomer.title=Create New Address
addcustomer.button.submit=Create Address
addcustomer.notification.validation=Please fill in all required fields
addcustomer.notification.success=Customer created successfully
addcustomer.notification.duplicate=An identical address book entry already exists
addcustomer.notification.check=Please check your input
addcustomer.notification.error=Error: {0}
addcustomer.validation.required=This field is required
@@ -1131,6 +1132,10 @@ admincreateinvoices.notification.notemplate=No invoice template available. Pleas
admincreateinvoices.notification.error=Error creating the invoice: {0}
admincreateinvoices.button.createselected=Create invoices ({0})
admincreateinvoices.field.month=Billing month
admincreateinvoices.filter.label=Show
admincreateinvoices.filter.all=All invoices
admincreateinvoices.filter.open=Only open
admincreateinvoices.filter.sent=Only sent
admincreateinvoices.dialog.title=Review invoices
admincreateinvoices.dialog.position=Invoice {0} of {1}
admincreateinvoices.dialog.button.previous=Back