Files
nearle_pos/lib/data/datasources/seed_data.dart
2026-07-29 11:41:53 +05:30

543 lines
15 KiB
Dart

import '../../domain/entities/customer.dart';
import '../../domain/entities/product.dart';
/// Demo catalogue and customer book.
///
/// Barcodes are valid 13-digit EAN strings beginning with the Indian GS1
/// prefix `890`, so a real scanner can be tested against this data.
class SeedData {
const SeedData._();
static List<Product> products() => const [
// ------------------------------------------------------------ Dairy
Product(
id: 'p001',
name: 'Amul Milk 1L',
barcode: '8901234500011',
sku: 'DRY-MLK-1000',
category: ProductCategory.dairy,
price: 62,
mrp: 66,
stock: 50,
emoji: '🥛',
unit: UnitOfMeasure.litre,
gstRate: 0.05,
brand: 'Amul',
),
Product(
id: 'p002',
name: 'Amul Butter 500g',
barcode: '8901234500028',
sku: 'DRY-BTR-0500',
category: ProductCategory.dairy,
price: 245,
mrp: 265,
stock: 30,
emoji: '🧈',
gstRate: 0.12,
brand: 'Amul',
),
Product(
id: 'p003',
name: 'Curd 400g',
barcode: '8901234500035',
sku: 'DRY-CRD-0400',
category: ProductCategory.dairy,
price: 48,
mrp: 52,
stock: 40,
emoji: '🥣',
gstRate: 0.05,
brand: 'Nandini',
),
Product(
id: 'p004',
name: 'Paneer 200g',
barcode: '8901234500042',
sku: 'DRY-PNR-0200',
category: ProductCategory.dairy,
price: 90,
stock: 20,
emoji: '🧀',
gstRate: 0.05,
brand: 'Milky Mist',
),
Product(
id: 'p005',
name: 'Cheese Slices 200g',
barcode: '8901234500059',
sku: 'DRY-CHS-0200',
category: ProductCategory.dairy,
price: 135,
mrp: 145,
stock: 25,
emoji: '🧀',
gstRate: 0.12,
brand: 'Britannia',
),
// ---------------------------------------------------------- Grocery
Product(
id: 'p010',
name: 'Basmati Rice 1kg',
barcode: '8901234500110',
sku: 'GRO-RCE-1000',
category: ProductCategory.grocery,
price: 180,
mrp: 199,
stock: 4,
emoji: '🍚',
unit: UnitOfMeasure.kilogram,
gstRate: 0.05,
brand: 'India Gate',
),
Product(
id: 'p011',
name: 'Fortune Oil 1L',
barcode: '8901234500127',
sku: 'GRO-OIL-1000',
category: ProductCategory.grocery,
price: 145,
mrp: 160,
stock: 60,
emoji: '🛢️',
unit: UnitOfMeasure.litre,
gstRate: 0.05,
brand: 'Fortune',
),
Product(
id: 'p012',
name: 'Toor Dal 500g',
barcode: '8901234500134',
sku: 'GRO-DAL-0500',
category: ProductCategory.grocery,
price: 90,
stock: 45,
emoji: '🫘',
gstRate: 0.05,
brand: 'Tata Sampann',
),
Product(
id: 'p013',
name: 'Aashirvaad Atta 5kg',
barcode: '8901234500141',
sku: 'GRO-ATA-5000',
category: ProductCategory.grocery,
price: 285,
mrp: 310,
stock: 35,
emoji: '🌾',
unit: UnitOfMeasure.kilogram,
gstRate: 0.05,
brand: 'Aashirvaad',
),
Product(
id: 'p014',
name: 'Sugar 1kg',
barcode: '8901234500158',
sku: 'GRO-SGR-1000',
category: ProductCategory.grocery,
price: 48,
stock: 80,
emoji: '🍬',
unit: UnitOfMeasure.kilogram,
gstRate: 0.05,
),
Product(
id: 'p015',
name: 'Maggi 2-min',
barcode: '8901234500165',
sku: 'GRO-MAG-0070',
category: ProductCategory.grocery,
price: 14,
stock: 120,
emoji: '🍜',
gstRate: 0.12,
brand: 'Nestlé',
),
Product(
id: 'p016',
name: 'Tata Salt 1kg',
barcode: '8901234500172',
sku: 'GRO-SLT-1000',
category: ProductCategory.grocery,
price: 28,
stock: 95,
emoji: '🧂',
unit: UnitOfMeasure.kilogram,
gstRate: 0.05,
brand: 'Tata',
),
// -------------------------------------------------------- Beverages
Product(
id: 'p020',
name: 'Coca-Cola 600ml',
barcode: '8901234500219',
sku: 'BEV-COK-0600',
category: ProductCategory.beverages,
price: 40,
stock: 80,
emoji: '🥤',
unit: UnitOfMeasure.millilitre,
gstRate: 0.28,
brand: 'Coca-Cola',
),
Product(
id: 'p021',
name: 'Frooti 250ml',
barcode: '8901234500226',
sku: 'BEV-FRT-0250',
category: ProductCategory.beverages,
price: 15,
stock: 100,
emoji: '🥭',
gstRate: 0.12,
brand: 'Parle Agro',
),
Product(
id: 'p022',
name: 'Bisleri 1L',
barcode: '8901234500233',
sku: 'BEV-WTR-1000',
category: ProductCategory.beverages,
price: 20,
stock: 150,
emoji: '💧',
unit: UnitOfMeasure.litre,
gstRate: 0.18,
brand: 'Bisleri',
),
Product(
id: 'p023',
name: 'Red Bull 250ml',
barcode: '8901234500240',
sku: 'BEV-RBL-0250',
category: ProductCategory.beverages,
price: 125,
stock: 40,
emoji: '🔋',
gstRate: 0.28,
brand: 'Red Bull',
),
Product(
id: 'p024',
name: 'Bru Coffee 100g',
barcode: '8901234500257',
sku: 'BEV-COF-0100',
category: ProductCategory.beverages,
price: 165,
mrp: 180,
stock: 30,
emoji: '',
gstRate: 0.18,
brand: 'Bru',
),
// ----------------------------------------------------------- Snacks
Product(
id: 'p030',
name: 'Parle-G 800g',
barcode: '8901234500318',
sku: 'SNK-PGB-0800',
category: ProductCategory.snacks,
price: 40,
stock: 90,
emoji: '🍪',
gstRate: 0.18,
brand: 'Parle',
),
Product(
id: 'p031',
name: "Lay's Chips 26g",
barcode: '8901234500325',
sku: 'SNK-LAY-0026',
category: ProductCategory.snacks,
price: 20,
stock: 110,
emoji: '🥔',
gstRate: 0.18,
brand: "Lay's",
),
Product(
id: 'p032',
name: 'Dairy Milk 55g',
barcode: '8901234500332',
sku: 'SNK-DMK-0055',
category: ProductCategory.snacks,
price: 45,
stock: 75,
emoji: '🍫',
gstRate: 0.18,
brand: 'Cadbury',
),
Product(
id: 'p033',
name: 'Good Day 200g',
barcode: '8901234500349',
sku: 'SNK-GDY-0200',
category: ProductCategory.snacks,
price: 35,
stock: 85,
emoji: '🍪',
gstRate: 0.18,
brand: 'Britannia',
),
Product(
id: 'p034',
name: 'Haldiram Mixture 200g',
barcode: '8901234500356',
sku: 'SNK-HMX-0200',
category: ProductCategory.snacks,
price: 55,
stock: 60,
emoji: '🥜',
gstRate: 0.12,
brand: 'Haldiram',
),
// ---------------------------------------------------- Personal care
Product(
id: 'p040',
name: 'Colgate 200g',
barcode: '8901234500417',
sku: 'PER-CLG-0200',
category: ProductCategory.personalCare,
price: 110,
mrp: 125,
stock: 55,
emoji: '🪥',
gstRate: 0.18,
brand: 'Colgate',
),
Product(
id: 'p041',
name: 'Dove Soap 100g',
barcode: '8901234500424',
sku: 'PER-DVE-0100',
category: ProductCategory.personalCare,
price: 65,
stock: 70,
emoji: '🧼',
gstRate: 0.18,
brand: 'Dove',
),
Product(
id: 'p042',
name: 'Head & Shoulders 340ml',
barcode: '8901234500431',
sku: 'PER-HNS-0340',
category: ProductCategory.personalCare,
price: 385,
mrp: 420,
stock: 25,
emoji: '🧴',
gstRate: 0.18,
brand: 'P&G',
),
Product(
id: 'p043',
name: 'Nivea Lotion 200ml',
barcode: '8901234500448',
sku: 'PER-NVA-0200',
category: ProductCategory.personalCare,
price: 240,
stock: 30,
emoji: '🧴',
gstRate: 0.18,
brand: 'Nivea',
),
// -------------------------------------------------------- Household
Product(
id: 'p050',
name: 'Surf Excel 1kg',
barcode: '8901234500516',
sku: 'HSE-SRF-1000',
category: ProductCategory.household,
price: 165,
mrp: 180,
stock: 45,
emoji: '🧺',
unit: UnitOfMeasure.kilogram,
gstRate: 0.18,
brand: 'Surf Excel',
),
Product(
id: 'p051',
name: 'Vim Bar 300g',
barcode: '8901234500523',
sku: 'HSE-VIM-0300',
category: ProductCategory.household,
price: 30,
stock: 90,
emoji: '🧽',
gstRate: 0.18,
brand: 'Vim',
),
Product(
id: 'p052',
name: 'Harpic 500ml',
barcode: '8901234500530',
sku: 'HSE-HRP-0500',
category: ProductCategory.household,
price: 98,
stock: 40,
emoji: '🧴',
gstRate: 0.18,
brand: 'Harpic',
),
Product(
id: 'p053',
name: 'Garbage Bags 30pc',
barcode: '8901234500547',
sku: 'HSE-GBG-0030',
category: ProductCategory.household,
price: 145,
stock: 35,
emoji: '🗑️',
gstRate: 0.18,
),
// ----------------------------------------------------------- Fruits
Product(
id: 'p060',
name: 'Banana 1kg',
barcode: '8901234500615',
sku: 'FRT-BAN-1000',
category: ProductCategory.fruits,
price: 55,
stock: 40,
emoji: '🍌',
unit: UnitOfMeasure.kilogram,
gstRate: 0,
),
Product(
id: 'p061',
name: 'Apple Shimla 1kg',
barcode: '8901234500622',
sku: 'FRT-APL-1000',
category: ProductCategory.fruits,
price: 180,
stock: 25,
emoji: '🍎',
unit: UnitOfMeasure.kilogram,
gstRate: 0,
),
Product(
id: 'p062',
name: 'Alphonso Mango 1kg',
barcode: '8901234500639',
sku: 'FRT-MNG-1000',
category: ProductCategory.fruits,
price: 320,
stock: 15,
emoji: '🥭',
unit: UnitOfMeasure.kilogram,
gstRate: 0,
),
// ------------------------------------------------------- Vegetables
Product(
id: 'p070',
name: 'Tomato 1kg',
barcode: '8901234500714',
sku: 'VEG-TOM-1000',
category: ProductCategory.vegetables,
price: 40,
stock: 50,
emoji: '🍅',
unit: UnitOfMeasure.kilogram,
gstRate: 0,
),
Product(
id: 'p071',
name: 'Onion 1kg',
barcode: '8901234500721',
sku: 'VEG-ONI-1000',
category: ProductCategory.vegetables,
price: 35,
stock: 65,
emoji: '🧅',
unit: UnitOfMeasure.kilogram,
gstRate: 0,
),
Product(
id: 'p072',
name: 'Potato 1kg',
barcode: '8901234500738',
sku: 'VEG-POT-1000',
category: ProductCategory.vegetables,
price: 30,
stock: 70,
emoji: '🥔',
unit: UnitOfMeasure.kilogram,
gstRate: 0,
),
Product(
id: 'p073',
name: 'Carrot 500g',
barcode: '8901234500745',
sku: 'VEG-CAR-0500',
category: ProductCategory.vegetables,
price: 32,
stock: 8,
emoji: '🥕',
gstRate: 0,
),
];
static List<Customer> customers() => [
Customer(
id: 'c001',
name: 'Abhishek',
mobile: '9876543210',
email: 'abhishek@example.com',
gender: Gender.male,
dateOfBirth: DateTime(1994, 3, 18),
loyaltyPoints: 320,
lifetimeSpend: 24500,
visitCount: 41,
createdAt: DateTime(2024, 1, 12),
lastVisitAt: DateTime.now().subtract(const Duration(days: 3)),
),
Customer(
id: 'c002',
name: 'Priya Raman',
mobile: '9812345678',
email: 'priya.r@example.com',
gender: Gender.female,
dateOfBirth: DateTime(1990, 7, 2),
loyaltyPoints: 1180,
lifetimeSpend: 68200,
visitCount: 96,
createdAt: DateTime(2023, 6, 4),
lastVisitAt: DateTime.now().subtract(const Duration(days: 1)),
),
Customer(
id: 'c003',
name: 'Karthik S',
mobile: '9900112233',
gender: Gender.male,
loyaltyPoints: 45,
lifetimeSpend: 3200,
visitCount: 7,
createdAt: DateTime(2025, 2, 20),
lastVisitAt: DateTime.now().subtract(const Duration(days: 11)),
),
Customer(
id: 'c004',
name: 'Meena Lakshmi',
mobile: '9445566778',
email: 'meena.l@example.com',
gender: Gender.female,
dateOfBirth: DateTime(1986, 11, 30),
loyaltyPoints: 2640,
lifetimeSpend: 172000,
visitCount: 210,
createdAt: DateTime(2022, 9, 15),
lastVisitAt: DateTime.now().subtract(const Duration(hours: 20)),
),
];
}