second commit

This commit is contained in:
2026-07-29 11:41:53 +05:30
parent fcccf22bac
commit d72522e737
211 changed files with 19260 additions and 0 deletions

View File

@@ -0,0 +1,49 @@
/// Application-wide configuration constants.
class AppConstants {
const AppConstants._();
static const String appName = 'Nearle POS';
static const String storeName = 'Nearle Daily';
static const String storeAddress = '12 Gandhipuram Main Rd, Coimbatore 641012';
static const String storeGstin = '33ABCDE1234F1Z5';
static const String storePhone = '+91 90000 12345';
static const String currencySymbol = '\u20B9';
static const String locale = 'en_IN';
/// Standard GST slab applied when a product does not declare its own.
static const double defaultGstRate = 0.18;
/// One loyalty point is earned per this many rupees of net sale value.
static const double loyaltyRupeesPerPoint = 10;
/// Rupee value of a single loyalty point when redeemed.
static const double loyaltyPointValue = 0.25;
static const int mobileNumberLength = 10;
/// Barcode scanners emit keystrokes fast; anything slower is human typing.
static const Duration barcodeScanTimeout = Duration(milliseconds: 120);
static const int minBarcodeLength = 6;
/// Idle time after a completed sale before the terminal resets itself.
static const Duration postSaleResetDelay = Duration(seconds: 3);
static const int lowStockThreshold = 10;
static const int maxParkedBills = 20;
static const int maxCartQuantityPerLine = 999;
}
/// Hive box names.
class StorageKeys {
const StorageKeys._();
static const String products = 'box_products';
static const String customers = 'box_customers';
static const String transactions = 'box_transactions';
static const String parkedBills = 'box_parked_bills';
static const String settings = 'box_settings';
static const String cashierName = 'cashier_name';
static const String cashierRole = 'cashier_role';
static const String terminalId = 'terminal_id';
}

View File

@@ -0,0 +1,13 @@
/// Typed references to bundled assets.
///
/// Only sounds are bundled: product imagery uses emoji glyphs and the welcome
/// artwork is painted in code, so there are no raster or SVG assets to ship.
class AssetPaths {
const AssetPaths._();
static const String _snd = 'assets/sounds';
static const String beepSuccess = '$_snd/beep_success.wav';
static const String beepError = '$_snd/beep_error.wav';
static const String chargeComplete = '$_snd/charge_complete.wav';
}