pattanshetti / src /lib /mockData.ts
triflix's picture
Upload 99 files
4be2b2b verified
// 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;
}
};