getScanData method
multipurpose scanner processing. It returns a combined result out of all possible interpretations.
Implementation
ScanData getScanData(String barcode) {
ScanData? gs1ScanData;
String? errorMessage;
try {
// Handle GS1 case
gs1ScanData = _getScanDataFromGs1Code(barcode);
} on Exception catch (_) {}
// Handle non-GS1 QR/2D code
// 1. TM
final tMATScanData = _getScanDataFromTMATPattern(barcode);
// 2. Order numbers
final poScanData = _getScanDataFromPurchaseOrderPattern(barcode);
//The previous interpretations are accepted as Standards
if ((gs1ScanData ?? tMATScanData ?? poScanData) == null) {
errorMessage = 'No known BASF standard detected';
}
// Handle 1D order number cases:
final poUnclearScanData = _getScanDataFromPurchaseOrderUnclearPattern(
barcode,
);
// Handle plain int numbers.
final uncategorizedScanData = _getUncategorizedData(barcode);
final finalScanData = (gs1ScanData ?? ScanData()).copyWith(
errorMessage: errorMessage,
plant: tMATScanData?.plant,
storageLocation: tMATScanData?.storageLocation,
materialNumber: tMATScanData?.materialNumber,
equipmentNumber: tMATScanData?.equipmentNumber,
orderNumber: poScanData?.orderNumber ?? poUnclearScanData?.orderNumber,
inboundDeliveryNumber:
poScanData?.inboundDeliveryNumber ??
poUnclearScanData?.inboundDeliveryNumber,
outboundDeliveryNumber:
poScanData?.outboundDeliveryNumber ??
poUnclearScanData?.outboundDeliveryNumber,
orderItemNumber:
poScanData?.orderItemNumber ?? poUnclearScanData?.orderItemNumber,
uncategorizedString: uncategorizedScanData.uncategorizedString,
uncategorizedInt: uncategorizedScanData.uncategorizedInt,
);
return finalScanData;
}