parseCentsAllowZero function

int? parseCentsAllowZero(
  1. String text
)

Ein eingetippter Betrag in Cent, ohne Gleitkomma: '12,5' -> 1250, '0' -> 0 (anders als beim Kassieren ist 0 hier gueltig: eine leere Lade, kein Startgeld). Dezimaltrenner Komma oder Punkt mit einer oder zwei Nachkommastellen; null fuer leer, Vorzeichen, Tausendertrenner ('1.000', '1 000'), drei Nachkommastellen, Euro-Zeichen und alles ueber einer sicheren Ganzzahl. Leerraum aussen faellt weg wie bei String.prototype.trim in JS. Gemeinsame Faelle mit dem JS-Zwilling: shift-cases.json des Vertrags.

Implementation

int? parseCentsAllowZero(String text) {
  final m = _betragMuster.firstMatch(jsTrim(text));
  if (m == null) return null;
  final cents = BigInt.parse(m[1]!) * BigInt.from(100) + BigInt.parse((m[2] ?? '').padRight(2, '0'));
  return cents <= _groessteSichere ? cents.toInt() : null;
}