Files
Holzleitner-Lieferservice-App/lib/widget/scanner/scan_code_parser.dart
Dennis Nemec a9bf8ecdd1 Final commit.
2026-06-01 17:12:28 +02:00

29 lines
1.1 KiB
Dart

/// Geparster Scan-Code im Format
/// `<Artikelnummer>;<Kundennummer>;<Belegnummer>`.
typedef ScanCode = ({String articleNumber, int customerErpId, String beleg});
/// Parst das QR-Code-Format `<Artikelnummer>;<Kundennummer>;<Belegnummer>`.
///
/// Trimmt jedes Feld, lehnt leere Felder und nicht-numerische
/// Kundennummern ab. Liefert `null`, wenn das Format nicht stimmt — der
/// Aufrufer übersetzt das in eine einheitliche „nicht vorgesehen"-Meldung,
/// damit der Fahrer kein Backstage-Tech-Feedback bekommt.
///
/// Geteilt zwischen Beladen-Phase (`LoadingCustomerPage`) und Filial-Abholung
/// (`FilialePickupScanPage`) — beide nutzen dasselbe Sticker-Format.
ScanCode? parseScanCode(String raw) {
final parts = raw.split(';');
if (parts.length != 3) return null;
final articleNumber = parts[0].trim();
final customerStr = parts[1].trim();
final beleg = parts[2].trim();
if (articleNumber.isEmpty || beleg.isEmpty) return null;
final customerErpId = int.tryParse(customerStr);
if (customerErpId == null) return null;
return (
articleNumber: articleNumber,
customerErpId: customerErpId,
beleg: beleg,
);
}