Final commit.
This commit is contained in:
45
lib/domain/entity/article.dart
Normal file
45
lib/domain/entity/article.dart
Normal file
@ -0,0 +1,45 @@
|
||||
/// 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,
|
||||
);
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user