1800)) { header("Location: logout.php"); exit(); } $_SESSION['last_activity'] = time(); require_once 'db_connection.php'; $pageTitle = "Expenses"; if ($_SERVER["REQUEST_METHOD"] == "POST" && isset($_POST['add_expense'])) { try { $buyer_id = !empty($_POST['buyer_id']) ? intval($_POST['buyer_id']) : NULL; $stmt = $conn->prepare("INSERT INTO expenses (date, buyer_id, category_id, head_id, amount) VALUES (?, ?, ?, ?, ?)"); $stmt->bind_param("siiii", $_POST['date'], $buyer_id, $_POST['category_id'], $_POST['head_id'], $_POST['amount']); $stmt->execute(); $stmt->close(); $_SESSION['success'] = "Expense added successfully!"; header("Location: expenses.php"); exit(); } catch (Exception $e) { $_SESSION['error'] = "Error adding expense."; error_log("Expenses error: " . $e->getMessage()); } } $buyersQuery = "SELECT id, name FROM buyers ORDER BY name"; $buyers = $conn->query($buyersQuery)->fetch_all(MYSQLI_ASSOC); $categoriesQuery = "SELECT id, name FROM expense_categories ORDER BY name"; $categories = $conn->query($categoriesQuery)->fetch_all(MYSQLI_ASSOC); $expensesQuery = "SELECT e.*, b.name as buyer_name, ec.name as category_name, eh.name as head_name FROM expenses e LEFT JOIN buyers b ON e.buyer_id = b.id JOIN expense_categories ec ON e.category_id = ec.id JOIN expense_heads eh ON e.head_id = eh.id ORDER BY e.date DESC"; $expenses = $conn->query($expensesQuery)->fetch_all(MYSQLI_ASSOC); $buyerOptions = ''; foreach ($buyers as $buyer) { $buyerOptions .= ""; } $categoryOptions = ''; foreach ($categories as $category) { $categoryOptions .= ""; } $expenseRows = ''; foreach ($expenses as $expense) { $buyerName = $expense['buyer_name'] ? $expense['buyer_name'] : 'N/A'; $expenseRows .= " {$expense['date']} $buyerName {$expense['category_name']} {$expense['head_name']} ₹" . number_format($expense['amount'], 2) . "
"; } $content = <<

Add New Expense

Expenses List

Export CSV
$expenseRows
Date Buyer Category Head Amount Actions
HTML; include 'main_layout.php'; $conn->close(); ?>