= ?"; $params[] = $from_date; $types .= "s"; } if ($to_date) { $where_clauses[] = "e.expense_date <= ?"; $params[] = $to_date; $types .= "s"; } if ($category_filter) { $where_clauses[] = "e.category_id = ?"; $params[] = $category_filter; $types .= "i"; } if ($payment_mode_filter) { $where_clauses[] = "e.payment_mode = ?"; $params[] = $payment_mode_filter; $types .= "s"; } $where_sql = !empty($where_clauses) ? "WHERE " . implode(" AND ", $where_clauses) : ""; // Get total count $count_sql = "SELECT COUNT(*) as total FROM expenses e $where_sql"; $count_result = !empty($params) ? fetchSingle($count_sql, $types, $params) : fetchSingle($count_sql); $total_records = $count_result ? $count_result['total'] : 0; $total_pages = ceil($total_records / $per_page); // Get expenses $sql = " SELECT e.*, c.category_name, sc.subcategory_name, u.full_name as added_by_name FROM expenses e JOIN expense_categories c ON e.category_id = c.category_id LEFT JOIN expense_subcategories sc ON e.subcategory_id = sc.subcategory_id JOIN users u ON e.added_by = u.user_id $where_sql ORDER BY e.expense_date DESC, e.created_at DESC LIMIT $per_page OFFSET $offset "; $expenses = !empty($params) ? fetchAll($sql, $types, $params) : fetchAll($sql); // Get summary $summary_sql = "SELECT SUM(total_amount) as total FROM expenses e $where_sql"; $summary_result = !empty($params) ? fetchSingle($summary_sql, $types, $params) : fetchSingle($summary_sql); $total_expenses = $summary_result ? floatval($summary_result['total']) : 0; // Get categories for filter $categories = fetchAll("SELECT category_id, category_name FROM expense_categories WHERE status = 'active' ORDER BY category_name"); // Success/error messages $success_message = ''; $error_message = ''; if (isset($_GET['success'])) { if ($_GET['success'] === 'deleted') { $success_message = 'Expense entry deleted successfully!'; } } if (isset($_GET['error'])) { if ($_GET['error'] === 'invalid') { $error_message = 'Invalid expense entry ID'; } elseif ($_GET['error'] === 'notfound') { $error_message = 'Expense entry not found'; } } $page_title = 'View Expenses'; require_once __DIR__ . '/../includes/header.php'; ?>
transaction
| Date | Category | Description | Units | Unit Cost | Total | Payment | Added By | Actions |
|---|---|---|---|---|---|---|---|---|
|
|
50): ?>... | ₹ | ₹ | ✏️ 🗑️ | ||||
| Page Total: | ₹ | |||||||
| Grand Total: | ₹ | |||||||
No expenses found matching your filters. Try adjusting the date range or filters. Start by adding your first expense entry
➕ Add Expense