feat: Adressbuch mit Kundennummer, Update-Flow und interne Einträge

- Menüpunkt "Kunden" in "Adressbuch" umbenannt und App-Label
  "Verfügbare Jobs" zu "Auftragsliste" geändert (alle 10 Sprachen)
- Fortlaufende Kundennummer (usrId) ab 10000 über neuen
  SequenceGeneratorService und Counter-Dokument in misc-Collection
- Abholung/Lieferstation-Dialog: Änderungen an verknüpften
  Stammdaten aktualisieren den bestehenden Adressbuch-Eintrag
  statt einen neuen zu erzeugen; Checkbox-Label wechselt zu
  "Adresse im Adressbuch aktualisieren"
- Geänderte Adressen ohne Checkbox werden als interner Customer
  (internal=true) gesichert und im Adressbuch ausgeblendet
- E-Mail in AddCustomer und in Stations-Dialogen kein Pflichtfeld
  mehr; "(Login)" aus profile.email entfernt
- Manuelles Beenden eines Auftrags öffnet neue Seite
  JobManualCompleteView statt eines Dialogs
This commit is contained in:
2026-04-20 12:42:56 +02:00
parent 6e8bedd9b4
commit 704d1e7378
42 changed files with 720 additions and 196 deletions

View File

@@ -2,6 +2,8 @@ import '../task.dart';
// Signature Task
class SignatureTask extends Task {
final String? note;
SignatureTask({
required super.id,
required super.jobId,
@@ -14,11 +16,19 @@ class SignatureTask extends Task {
super.title,
super.description,
super.displayName,
this.note,
});
factory SignatureTask.fromJson(Map<String, dynamic> json) {
final commonProps = Task.parseCommonProperties(json);
String? note;
final taskSpecificData = json['taskSpecificData'];
if (taskSpecificData is Map<String, dynamic>) {
final n = taskSpecificData['note'];
if (n is String) note = n;
}
return SignatureTask(
id: commonProps['id'],
jobId: commonProps['jobId'],
@@ -31,6 +41,7 @@ class SignatureTask extends Task {
title: commonProps['title'],
description: commonProps['description'],
displayName: commonProps['displayName'],
note: note,
);
}
@@ -47,7 +58,11 @@ class SignatureTask extends Task {
'taskOrder': taskOrder,
'description': description,
'displayName': displayName,
'taskSpecificData': {'taskType': 'SIGNATURE', 'title': title},
'taskSpecificData': {
'taskType': 'SIGNATURE',
'title': title,
'note': note,
},
};
}
@@ -64,6 +79,7 @@ class SignatureTask extends Task {
String? title,
String? description,
String? displayName,
String? note,
}) {
return SignatureTask(
id: id ?? this.id,
@@ -77,6 +93,7 @@ class SignatureTask extends Task {
title: title ?? this.title,
description: description ?? this.description,
displayName: displayName ?? this.displayName,
note: note ?? this.note,
);
}
}