Files
sendico/frontend/pshared/lib/utils/money.dart

36 lines
942 B
Dart

import 'package:money2/money2.dart';
import 'package:pshared/utils/currency.dart';
const String _decimalMoneyPattern = '0.##################';
Money? parseMoneyWithCurrency(String? amount, Currency? currency) {
if (currency == null) return null;
final value = _normalizeMoneyAmount(amount);
if (value == null || value.isEmpty) return null;
try {
return Money.parseWithCurrency(
value,
currency,
pattern: _decimalMoneyPattern,
);
} catch (_) {
return null;
}
}
Money? parseMoneyWithCurrencyCode(String? amount, String? currencyCode) {
return parseMoneyWithCurrency(amount, money2CurrencyFromCode(currencyCode));
}
String? _normalizeMoneyAmount(String? value) {
final normalized = value?.trim();
if (normalized == null || normalized.isEmpty) return null;
if (normalized.contains(',') && !normalized.contains('.')) {
return normalized.replaceAll(',', '.');
}
return normalized;
}