46 lines
1.6 KiB
Dart
46 lines
1.6 KiB
Dart
/// Model for a parsed receipt item from the receipt import API.
|
|
class ParsedReceiptItem {
|
|
final String rawName;
|
|
final double? quantity;
|
|
final String? unit;
|
|
final double? price;
|
|
final String? brand;
|
|
final String? origin;
|
|
// alias-match (säker, ingen bekräftelse behövs)
|
|
final int? matchedProductId;
|
|
final String? matchedProductName;
|
|
// ordbaserad match (kräver bekräftelse)
|
|
final int? suggestedProductId;
|
|
final String? suggestedProductName;
|
|
// AI-kategorisuggestion (premium)
|
|
final String? categorySuggestionName;
|
|
|
|
ParsedReceiptItem({
|
|
required this.rawName,
|
|
this.quantity,
|
|
this.unit,
|
|
this.price,
|
|
this.brand,
|
|
this.origin,
|
|
this.matchedProductId,
|
|
this.matchedProductName,
|
|
this.suggestedProductId,
|
|
this.suggestedProductName,
|
|
this.categorySuggestionName,
|
|
});
|
|
|
|
factory ParsedReceiptItem.fromJson(Map<String, dynamic> json) => ParsedReceiptItem(
|
|
rawName: json['rawName'] as String? ?? '',
|
|
quantity: (json['quantity'] as num?)?.toDouble(),
|
|
unit: json['unit'] as String?,
|
|
price: (json['price'] as num?)?.toDouble(),
|
|
brand: json['brand'] as String?,
|
|
origin: json['origin'] as String?,
|
|
matchedProductId: (json['matchedProductId'] as num?)?.toInt(),
|
|
matchedProductName: json['matchedProductName'] as String?,
|
|
suggestedProductId: (json['suggestedProductId'] as num?)?.toInt(),
|
|
suggestedProductName: json['suggestedProductName'] as String?,
|
|
categorySuggestionName: (json['categorySuggestion'] as Map<String, dynamic>?)?['categoryName'] as String?,
|
|
);
|
|
}
|