46 lines
1.4 KiB
Dart
46 lines
1.4 KiB
Dart
/// Stammdatensatz für einen Artikel (Ware).
|
|
///
|
|
/// Der Domain-Artikel kennt — anders als das alte ERPframe-Modell — keine
|
|
/// Eltern-Kind-Beziehungen mehr. Stücklisten (BOM/Komponenten) werden im
|
|
/// neuen Backend als gleichrangige `DeliveryItem`s mit gesetztem
|
|
/// `komponentenArtikelNr` modelliert; der Treiber scannt einfach jedes Item
|
|
/// separat. Hier deshalb absichtlich kein `components`/`parent`-Feld.
|
|
class Article {
|
|
const Article({
|
|
required this.id,
|
|
required this.articleNumber,
|
|
required this.name,
|
|
required this.scannable,
|
|
this.defaultWarehouseId,
|
|
});
|
|
|
|
final String id;
|
|
final String articleNumber;
|
|
final String name;
|
|
|
|
/// Nicht-scanbar = wird nicht über den Scanner durchgereicht (z. B.
|
|
/// Dienstleistung, Versandkosten). In der Loading-Phase ausgeblendet.
|
|
final bool scannable;
|
|
|
|
/// Lager-Default für diesen Artikel; das tatsächlich relevante Lager pro
|
|
/// Lieferung steht aber am `DeliveryItem.warehouseId`. Wird nur als
|
|
/// UX-Hinweis verwendet.
|
|
final String? defaultWarehouseId;
|
|
|
|
Article copyWith({
|
|
String? id,
|
|
String? articleNumber,
|
|
String? name,
|
|
bool? scannable,
|
|
String? defaultWarehouseId,
|
|
}) {
|
|
return Article(
|
|
id: id ?? this.id,
|
|
articleNumber: articleNumber ?? this.articleNumber,
|
|
name: name ?? this.name,
|
|
scannable: scannable ?? this.scannable,
|
|
defaultWarehouseId: defaultWarehouseId ?? this.defaultWarehouseId,
|
|
);
|
|
}
|
|
}
|