// Mock data store - Replace with actual database later import { Party, BillBook, Lot, Invoice, LedgerEntry } from '@/types'; // Bill Books export const billBooks: BillBook[] = [ { id: 'bb1', name: 'Bill Book 1', serialFrom: 1, serialTo: 100, currentSerial: 15, isActive: true, }, { id: 'bb2', name: 'Bill Book 2', serialFrom: 101, serialTo: 200, currentSerial: 101, isActive: false, }, ]; // Parties export const parties: Party[] = [ { id: 'p1', name: 'नाळकंट, फवदापूर', contact: '9876543210', balance: 49639, createdAt: '2024-01-01', }, { id: 'p2', name: 'ABC Traders', contact: '9876543211', balance: 125000, createdAt: '2024-01-01', }, { id: 'p3', name: 'XYZ Enterprises', contact: '9876543212', balance: -45000, createdAt: '2024-01-02', }, { id: 'p4', name: 'दिलीप भोर', contact: '9876543213', balance: 0, createdAt: '2024-01-03', }, ]; // Lots with purchase information export const lots: Lot[] = [ { id: 'lot1', lotNumber: 'LOT-001', particular: 'Teja', purchaseDate: '2024-11-01', partyId: 'p1', partyName: 'नाळकंट, फवदापूर', gaadiDetails: 'MH12AB1234', quality: 'A Grade', totalBags: 100, soldBags: 30, availableBags: 70, grossWeightPerBag: 40, netWeightPerBag: 39, purchaseRate: 200, totalWeight: 3900, totalAmount: 780000, paidAmount: 500000, remainingAmount: 280000, paymentStatus: 'partial', }, { id: 'lot2', lotNumber: 'LOT-002', particular: 'Garuda', purchaseDate: '2024-11-02', partyId: 'p2', partyName: 'ABC Traders', quality: 'B Grade', totalBags: 50, soldBags: 20, availableBags: 30, grossWeightPerBag: 40, netWeightPerBag: 39, purchaseRate: 180, totalWeight: 1950, totalAmount: 351000, paidAmount: 351000, remainingAmount: 0, paymentStatus: 'paid', }, { id: 'lot3', lotNumber: 'LOT-003', particular: '341', purchaseDate: '2024-11-03', partyId: 'p3', partyName: 'XYZ Enterprises', gaadiDetails: 'MH14CD5678', quality: 'Premium', totalBags: 75, soldBags: 0, availableBags: 75, grossWeightPerBag: 40, netWeightPerBag: 39, purchaseRate: 220, totalWeight: 2925, totalAmount: 643500, paidAmount: 0, remainingAmount: 643500, paymentStatus: 'pending', }, ]; // Ledger entries for a party export const getLedgerEntriesForParty = (partyId: string): LedgerEntry[] => { // Sample ledger entries based on Image 1 if (partyId === 'p1') { return [ { id: 'l1', date: '2025-01-11', particulars: 'BN 97 म्हाळो नांवे', referenceNumber: 'BN 97', debit: 14389, credit: 0, balance: 49639, type: 'jawak', }, { id: 'l2', date: '2025-01-14', particulars: 'BN 45 म्हाळो नांवे', referenceNumber: 'BN 45', debit: 5205, credit: 0, balance: 54844, type: 'jawak', }, { id: 'l3', date: '2025-01-15', particulars: 'रोख -जमा', referenceNumber: '', debit: 0, credit: 35250, balance: 19594, type: 'payment', }, { id: 'l4', date: '2025-01-21', particulars: 'BN 44 म्हाळो नांवे', referenceNumber: 'BN 44', debit: 1113, credit: 0, balance: 20707, type: 'jawak', }, { id: 'l5', date: '2025-01-24', particulars: 'BN 88 म्हाळो नांवे', referenceNumber: 'BN 88', debit: 16612, credit: 0, balance: 37319, type: 'jawak', }, ]; } return []; }; // Get available lots by variety export const getAvailableLotsByVariety = (variety: string): Lot[] => { return lots.filter( (lot) => lot.particular === variety && lot.availableBags > 0 ); }; // Get next bill number from active bill book export const getNextBillNumber = (): { billBookId: string; serialNumber: string } => { const activeBillBook = billBooks.find((bb) => bb.isActive); if (!activeBillBook) { throw new Error('No active bill book found'); } if (activeBillBook.currentSerial > activeBillBook.serialTo) { throw new Error(`Bill book ${activeBillBook.name} is full. Please activate a new bill book.`); } return { billBookId: activeBillBook.id, serialNumber: activeBillBook.currentSerial.toString(), }; }; // Check if bill number already exists export const billNumberExists = (billNumber: string): boolean => { // In real app, check against database return false; }; // Update lot after sale export const updateLotAfterSale = (lotId: string, bagsSold: number): void => { const lot = lots.find((l) => l.id === lotId); if (lot) { lot.soldBags += bagsSold; lot.availableBags -= bagsSold; } };