84 lines
3.0 KiB
Dart
84 lines
3.0 KiB
Dart
/// Notiz an einer Lieferung. Text und/oder Bildanhang können gesetzt sein —
|
|
/// das Backend erzwingt nicht-leer für mindestens einen der beiden.
|
|
///
|
|
/// `imageAttachment` ist die UUID des hinterlegten Bildes; das eigentliche
|
|
/// Binary wird über einen separaten Endpoint geladen (in einer späteren
|
|
/// Phase modelliert).
|
|
class DeliveryNote {
|
|
const DeliveryNote({
|
|
required this.id,
|
|
required this.deliveryId,
|
|
required this.authorPersonalnummer,
|
|
required this.createdAt,
|
|
this.text,
|
|
this.imageAttachment,
|
|
this.authorCarId,
|
|
this.creditDeliveryItemId,
|
|
this.isAmountCreditNote = false,
|
|
this.imageAttachmentDeleted = false,
|
|
});
|
|
|
|
final String id;
|
|
final String deliveryId;
|
|
final String? text;
|
|
final String? imageAttachment;
|
|
|
|
/// Personalnummer des Fahrers (aus dem JWT zum Zeitpunkt der Erstellung).
|
|
/// `int` weil im JWT als numerischer Claim transportiert.
|
|
final int authorPersonalnummer;
|
|
|
|
/// Fahrzeug, mit dem die Notiz erstellt wurde (Audit-Spur, optional).
|
|
final String? authorCarId;
|
|
|
|
/// Gesetzt, wenn die Notiz als Gutschrift-Grund zu einer Belegzeile
|
|
/// angelegt wurde (deren `DeliveryItem`-Id). Erlaubt es, die Notiz beim
|
|
/// Zurücknehmen der Gutschrift (Unremove) gezielt wieder zu löschen.
|
|
final String? creditDeliveryItemId;
|
|
|
|
/// `true`, wenn die Notiz den Grund einer Betrags-Gutschrift dokumentiert
|
|
/// (Lieferungs-Ebene). Wird beim Entfernen der Gutschrift gezielt gelöscht.
|
|
final bool isAmountCreditNote;
|
|
|
|
/// `true`, wenn die lokale Bilddatei nach erfolgreichem Report-Upload
|
|
/// gelöscht wurde — das Bild steckt dann im Lieferbericht (DOCUframe).
|
|
/// Die UI zeigt statt der Vorschau einen Hinweis.
|
|
final bool imageAttachmentDeleted;
|
|
|
|
final DateTime createdAt;
|
|
|
|
DeliveryNote copyWith({
|
|
String? id,
|
|
String? deliveryId,
|
|
Object? text = _sentinel,
|
|
Object? imageAttachment = _sentinel,
|
|
int? authorPersonalnummer,
|
|
Object? authorCarId = _sentinel,
|
|
Object? creditDeliveryItemId = _sentinel,
|
|
bool? isAmountCreditNote,
|
|
bool? imageAttachmentDeleted,
|
|
DateTime? createdAt,
|
|
}) {
|
|
return DeliveryNote(
|
|
id: id ?? this.id,
|
|
deliveryId: deliveryId ?? this.deliveryId,
|
|
text: identical(text, _sentinel) ? this.text : text as String?,
|
|
imageAttachment: identical(imageAttachment, _sentinel)
|
|
? this.imageAttachment
|
|
: imageAttachment as String?,
|
|
authorPersonalnummer: authorPersonalnummer ?? this.authorPersonalnummer,
|
|
authorCarId: identical(authorCarId, _sentinel)
|
|
? this.authorCarId
|
|
: authorCarId as String?,
|
|
creditDeliveryItemId: identical(creditDeliveryItemId, _sentinel)
|
|
? this.creditDeliveryItemId
|
|
: creditDeliveryItemId as String?,
|
|
isAmountCreditNote: isAmountCreditNote ?? this.isAmountCreditNote,
|
|
imageAttachmentDeleted:
|
|
imageAttachmentDeleted ?? this.imageAttachmentDeleted,
|
|
createdAt: createdAt ?? this.createdAt,
|
|
);
|
|
}
|
|
}
|
|
|
|
const Object _sentinel = Object();
|