Sub Total:
₹0.00
Tax (GST 18%):
₹0.00
// Function to connect stock with balance sheet
function connectStockToBalanceSheet() {
// Get all stock items
const stockItems = JSON.parse(localStorage.getItem('stockItems') || '[]');
// Calculate total stock value
const totalStockValue = stockItems.reduce((total, item) => {
return total + (parseFloat(item.quantity) * parseFloat(item.rate));
}, 0);
// Store as current assets for balance sheet
let balanceSheetData = JSON.parse(localStorage.getItem('balanceSheetData') || '{}');
if (!balanceSheetData.assets) balanceSheetData.assets = {};
if (!balanceSheetData.assets.currentAssets) balanceSheetData.assets.currentAssets = {};
balanceSheetData.assets.currentAssets.stock = totalStockValue;
localStorage.setItem('balanceSheetData', JSON.stringify(balanceSheetData));
console.log('Stock connected to Balance Sheet as Current Assets:', totalStockValue);
}
// Connect purchase transactions to stock and ledger
function handlePurchaseTransaction(purchaseData) {
// 1. Update stock quantity
const stockItems = JSON.parse(localStorage.getItem('stockItems') || '[]');
const stockItem = stockItems.find(item => item.id === purchaseData.stockId);
if (stockItem) {
stockItem.quantity = parseFloat(stockItem.quantity) + parseFloat(purchaseData.quantity);
localStorage.setItem('stockItems', JSON.stringify(stockItems));
}
// 2. Create purchase ledger entry under Expenditure
const ledgers = JSON.parse(localStorage.getItem('ledgers') || '[]');
const purchaseLedger = ledgers.find(ledger => ledger.code === 'PURCHASE');
if (purchaseLedger) {
purchaseLedger.transactions = purchaseLedger.transactions || [];
purchaseLedger.transactions.push({
date: purchaseData.date,
description: `Purchase of ${purchaseData.stockName}`,
amount: purchaseData.amount,
type: 'debit'
});
localStorage.setItem('ledgers', JSON.stringify(ledgers));
}
// 3. Update balance sheet
connectStockToBalanceSheet();
}
// Connect sales transactions to stock and ledger
function handleSalesTransaction(salesData) {
// 1. Update stock quantity
const stockItems = JSON.parse(localStorage.getItem('stockItems') || '[]');
const stockItem = stockItems.find(item => item.id === salesData.stockId);
if (stockItem) {
stockItem.quantity = parseFloat(stockItem.quantity) - parseFloat(salesData.quantity);
localStorage.setItem('stockItems', JSON.stringify(stockItems));
}
// 2. Create sales ledger entry under Income
const ledgers = JSON.parse(localStorage.getItem('ledgers') || '[]');
const salesLedger = ledgers.find(ledger => ledger.code === 'SALES');
if (salesLedger) {
salesLedger.transactions = salesLedger.transactions || [];
salesLedger.transactions.push({
date: salesData.date,
description: `Sale of ${salesData.stockName}`,
amount: salesData.amount,
type: 'credit'
});
localStorage.setItem('ledgers', JSON.stringify(ledgers));
}
// 3. Update balance sheet
connectStockToBalanceSheet();
}
// Purchase button event listener
document.getElementById('purchaseBtn').addEventListener('click', function() {
// Show purchase form
document.getElementById('purchaseForm').classList.remove('hidden');
// When purchase form is submitted
document.getElementById('purchaseForm').querySelector('form').addEventListener('submit', function(e) {
e.preventDefault();
// Collect purchase data
const purchaseData = {
date: document.getElementById('purchaseDate').value,
stockId: document.querySelector('.stock-item-select').value,
stockName: document.querySelector('.stock-item-select option:checked').textContent.split(' - ')[1],
quantity: document.querySelector('.item-quantity').value,
rate: document.querySelector('.item-rate').value,
amount: parseFloat(document.querySelector('.item-quantity').value) * parseFloat(document.querySelector('.item-rate').value)
};
// Process purchase
handlePurchaseTransaction(purchaseData);
// Hide form and show success message
document.getElementById('purchaseForm').classList.add('hidden');
alert('Purchase recorded successfully!');
});
});
// Sales button event listener
document.getElementById('salesBtn').addEventListener('click', function() {
// Show sales form
document.getElementById('salesForm').classList.remove('hidden');
// When sales form is submitted
document.getElementById('salesForm').querySelector('form').addEventListener('submit', function(e) {
e.preventDefault();
// Collect sales data
const salesData = {
date: document.getElementById('salesDate').value,
stockId: document.querySelector('.stock-item-select').value,
stockName: document.querySelector('.stock-item-select option:checked').textContent.split(' - ')[1],
quantity: document.querySelector('.item-quantity').value,
rate: document.querySelector('.item-rate').value,
amount: parseFloat(document.querySelector('.item-quantity').value) * parseFloat(document.querySelector('.item-rate').value)
};
// Process sales
handleSalesTransaction(salesData);
// Hide form and show success message
document.getElementById('salesForm').classList.add('hidden');
alert('Sale recorded successfully!');
});
});
// Create stock form submission
document.getElementById('createStockForm').querySelector('form').addEventListener('submit', function(e) {
e.preventDefault();
// Collect stock data
const stockData = {
id: generateUniqueId(),
code: document.getElementById('stockCode').value,
name: document.getElementById('stockName').value,
quantity: document.getElementById('openingQuantity').value,
unit: document.getElementById('unit').value,
rate: parseFloat(document.getElementById('openingValue').value) / parseFloat(document.getElementById('openingQuantity').value),
value: document.getElementById('openingValue').value,
location: document.getElementById('location').value,
category: document.getElementById('category').value,
description: document.getElementById('description').value,
assetType: 'Current Asset' // Explicitly mark as Current Asset
};
// Save stock item
const stockItems = JSON.parse(localStorage.getItem('stockItems') || '[]');
stockItems.push(stockData);
localStorage.setItem('stockItems', JSON.stringify(stockItems));
// Update balance sheet
connectStockToBalanceSheet();
// Hide form and show success message
document.getElementById('createStockForm').classList.add('hidden');
alert('Stock item created successfully!');
});