perubahan denomuretor on pos sale

This commit is contained in:
2026-04-04 23:44:16 +07:00
parent 517ed3bea3
commit d912b1f63a
20 changed files with 350 additions and 142 deletions

View File

@@ -4,6 +4,7 @@ import 'package:intl/intl.dart';
import 'package:pdf/widgets.dart' as pw;
import 'generated/l10n.dart' as lang;
import 'currency.dart';
const kMainColor = Color(0xffC52127);
const kMainColor100 = Color(0xffFDE7F2);
@@ -49,7 +50,7 @@ const String onboard3 = 'images/onbord3.png';
const String logo = 'images/logokulakpos.png';
const String appsName = 'KULAKPOS';
const String companyWebsite = 'https://kulakpos.id';
const String companyName = 'KULAKPOS';
const String companyName = 'ONE TEKNOLOGI';
bool connected = false;
@@ -202,19 +203,41 @@ Map<String, String> languageMap = {
'Chinese': 'zh',
};
String getLocaleFromCurrency() {
final loweredName = currencyName.toLowerCase();
if (loweredName.contains('rupiah') || currency.toLowerCase() == 'rp' || currency == 'IDR') {
return 'id_ID';
} else if (loweredName.contains('rupee') || currency == '' || currency.toLowerCase() == 'rs' || currency == 'INR') {
return 'en_IN';
} else if (loweredName.contains('euro') || currency == '' || currency == 'EUR') {
return 'de_DE';
}
return 'en_US';
}
String formatPointNumber(num value, {bool addComma = false}) {
String formatted;
if (value % 1 == 0) {
formatted = value.toInt().toString();
} else {
formatted = value.toStringAsFixed(2);
}
// Always use 2 decimal places for consistent display
formatted = value.toStringAsFixed(2);
if (addComma) {
// NumberFormat from intl package is used here
final formatter = NumberFormat.decimalPattern();
formatted = formatter.format(num.parse(formatted));
try {
final formatter = NumberFormat.currency(locale: getLocaleFromCurrency(), symbol: '', decimalDigits: 2);
formatted = formatter.format(value).trim();
} catch (e) {
final fallback = NumberFormat.decimalPattern(getLocaleFromCurrency());
fallback.minimumFractionDigits = 2;
fallback.maximumFractionDigits = 2;
try {
formatted = fallback.format(value);
} catch (e2) {
final fallbackUs = NumberFormat.decimalPattern();
fallbackUs.minimumFractionDigits = 2;
fallbackUs.maximumFractionDigits = 2;
formatted = fallbackUs.format(value);
}
}
}
return formatted;