/** * @license * SPDX-License-Identifier: Apache-2.0 */ export type StaffRole = 'owner' | 'manager' | 'cashier'; export interface StaffUser { id: string; name: string; email: string; role: StaffRole; active: boolean; } export interface TireProduct { id: string; sku: string; brand: string; model: string; size: string; // e.g., 195/65 R15 category: 'Passenger' | 'SUV' | 'Commercial' | 'Light Truck' | 'Truck/Bus'; stock: number; minStock: number; // Alerts triggered when stock <= minStock price: number; // Selling price purchasePrice: number; // Cost price (for profit computation) description?: string; } export interface StockHistoryItem { id: string; productId: string; productLabel: string; // Saved snapshot for history search resilience dateTime: string; type: 'STOCK_IN' | 'STOCK_OUT' | 'MANUAL_ADJUSTMENT'; quantity: number; // Signed or unsigned change resultingStock: number; adjustedBy: string; // Staff user name/role reason: string; } export interface InvoiceLineItem { id: string; productId: string; brand: string; model: string; size: string; quantity: number; unitPrice: number; totalPrice: number; } export interface Invoice { id: string; invoiceNumber: string; // e.g. HBT-2026-1001 dateTime: string; customerName: string; customerPhone: string; customerVehicle?: string; // Car model / registration number (highly relevant for a tire shop!) items: InvoiceLineItem[]; subtotal: number; taxRate: number; // e.g., 17 for 17% taxAmount: number; discount: number; total: number; currencySymbol: string; currencyCode: string; paymentMethod: 'CASH' | 'CARD' | 'BANK_TRANSFER' | 'MOBILE_WALLET'; paymentStatus: 'PAID' | 'UNPAID' | 'PARTIAL'; amountPaid: number; gatewayInfo?: { gatewayName: 'Stripe' | 'PayPal' | 'EasyPaisa' | 'JazzCash' | 'Bank'; transactionId: string; authTime: string; }; cashierName: string; notes?: string; isOfflineCreated?: boolean; // Tracking for offline-first resilience } export interface SystemSettings { shopName: string; shopAddress: string; shopPhone: string; taxName: string; // e.g., "GST" or "VAT" or "Sales Tax" taxRate: number; // Percentage currencyCode: string; // PKR, USD, EUR etc. currencySymbol: string; // ₨, $, € etc. stripePublicKey?: string; easyPaisaMerchantId?: string; }