fix(receipt-import): infer size from raw name when unit is missing
This commit is contained in:
@@ -63,7 +63,23 @@ bool _isPackageLikeUnit(String? unit) {
|
|||||||
required double? quantity,
|
required double? quantity,
|
||||||
required String? unit,
|
required String? unit,
|
||||||
}) {
|
}) {
|
||||||
if (quantity == null || unit == null) {
|
final normalizedUnit = unit?.trim().toLowerCase();
|
||||||
|
final safeCount = (quantity != null && quantity > 0) ? quantity : 1.0;
|
||||||
|
final extracted = _extractPackageSizeFromRawName(rawName);
|
||||||
|
|
||||||
|
// If the receipt name contains size (e.g. "5dl"), prefer it when unit is
|
||||||
|
// missing/unknown or when OCR reports package-like count units (st/pkt/etc).
|
||||||
|
if (extracted != null && (normalizedUnit == null || normalizedUnit.isEmpty || _isPackageLikeUnit(normalizedUnit))) {
|
||||||
|
return (
|
||||||
|
packQuantity: extracted.packQuantity,
|
||||||
|
packUnit: extracted.packUnit,
|
||||||
|
packageCount: safeCount,
|
||||||
|
totalQuantity: extracted.packQuantity * safeCount,
|
||||||
|
totalUnit: extracted.packUnit,
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (quantity == null || normalizedUnit == null || normalizedUnit.isEmpty) {
|
||||||
return (
|
return (
|
||||||
packQuantity: null,
|
packQuantity: null,
|
||||||
packUnit: null,
|
packUnit: null,
|
||||||
@@ -73,8 +89,7 @@ bool _isPackageLikeUnit(String? unit) {
|
|||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
final looksLikePackage = _isPackageLikeUnit(unit);
|
final looksLikePackage = _isPackageLikeUnit(normalizedUnit);
|
||||||
final extracted = _extractPackageSizeFromRawName(rawName);
|
|
||||||
|
|
||||||
if (looksLikePackage && extracted != null) {
|
if (looksLikePackage && extracted != null) {
|
||||||
return (
|
return (
|
||||||
@@ -88,10 +103,10 @@ bool _isPackageLikeUnit(String? unit) {
|
|||||||
|
|
||||||
return (
|
return (
|
||||||
packQuantity: quantity,
|
packQuantity: quantity,
|
||||||
packUnit: unit,
|
packUnit: normalizedUnit,
|
||||||
packageCount: 1,
|
packageCount: 1,
|
||||||
totalQuantity: quantity,
|
totalQuantity: quantity,
|
||||||
totalUnit: unit,
|
totalUnit: normalizedUnit,
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user