Final commit.

This commit is contained in:
Dennis Nemec
2026-06-01 17:12:28 +02:00
parent 3ecbc82885
commit a9bf8ecdd1
385 changed files with 29081 additions and 12089 deletions

View File

@ -0,0 +1,28 @@
/// 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,
);
}