pattanshetti / src /types /index.ts
triflix's picture
Upload 99 files
4be2b2b verified
// Core data types for Mirchi Trading application
export interface Party {
id: string;
name: string;
contact?: string;
address?: string;
gstNumber?: string;
balance: number; // Running balance (positive = they owe us, negative = we owe them)
createdAt: string;
}
export interface BillBook {
id: string;
name: string;
serialFrom: number;
serialTo: number;
currentSerial: number;
isActive: boolean;
}
export interface Lot {
id: string;
lotNumber: string;
particular: string; // Variety: Teja, Garuda, 341, etc.
purchaseDate: string;
partyId: string;
partyName: string;
gaadiDetails?: string; // Truck/vehicle details
quality?: string;
totalBags: number;
soldBags: number;
availableBags: number;
grossWeightPerBag: number;
netWeightPerBag: number;
purchaseRate: number; // Rate per kg
totalWeight: number;
totalAmount: number;
paidAmount: number;
remainingAmount: number;
paymentStatus: 'paid' | 'partial' | 'pending';
}
export interface PaymentTerm {
totalAmount: number;
advanceAmount: number;
remainingAmount: number;
payments: Payment[];
}
export interface Payment {
id: string;
date: string;
amount: number;
method: 'cash' | 'cheque' | 'online' | 'other';
reference?: string;
notes?: string;
}
export interface InvoiceItem {
particular: string; // Variety
lotNumber: string;
bags: number;
grossWeightPerBag: number;
netWeightPerBag: number;
rate: number;
basicAmount: number;
}
export interface Invoice {
id: string;
serialNumber: string;
billBookId: string;
date: string;
partyId: string;
partyName: string;
items: InvoiceItem[];
charges: {
bardhana: number; // ₹18 per bag
hamali: number; // ₹6 per bag
adhath: number; // Commission percentage
cess: number; // Market cess 1-6%
gaadiBharni: number; // Optional vehicle loading charges
};
subtotal: number;
totalCharges: number;
totalAmount: number;
paymentTerms: PaymentTerm;
notes?: string;
createdAt: string;
updatedAt: string;
}
export interface PurchaseEntry {
id: string;
date: string;
partyId: string;
partyName: string;
gaadiDetails?: string;
lots: Lot[];
totalAmount: number;
paymentTerms: PaymentTerm;
notes?: string;
createdAt: string;
}
export interface LedgerEntry {
id: string;
date: string;
particulars: string; // Description
referenceNumber: string; // BN number, invoice number, etc.
lotNumber?: string;
debit: number; // Money they owe us (Jawak/Sales)
credit: number; // Money we owe them (Awak/Purchase)
balance: number; // Running balance
type: 'awak' | 'jawak' | 'payment' | 'return' | 'adjustment';
}
export interface StockSummary {
particular: string; // Variety
awak: {
bags: number;
weight: number;
value: number;
};
jawak: {
bags: number;
weight: number;
value: number;
};
stock: {
bags: number;
weight: number;
value: number;
};
avgBuyRate: number;
avgSellRate: number;
profit: number;
lots: Lot[];
}
export interface Transaction {
id: string;
date: string;
type: 'awak' | 'jawak';
particular: string;
lotNumber: string;
party: string;
bags: number;
weight: number;
rate: number;
amount: number;
referenceNumber: string;
}