+
+
\ No newline at end of file
diff --git a/admin/expense_edit.php b/admin/expense_edit.php
deleted file mode 100644
index 4b3c8e6..0000000
--- a/admin/expense_edit.php
+++ /dev/null
@@ -1,133 +0,0 @@
-prepare("SELECT * FROM expenses WHERE id = ?");
- $stmt->execute([$id]);
- $expense = $stmt->fetch();
- if ($expense) {
- $isEdit = true;
- } else {
- header("Location: expenses.php");
- exit;
- }
-}
-
-if ($_SERVER['REQUEST_METHOD'] === 'POST') {
- $category_id = $_POST['category_id'];
- $outlet_id = $_POST['outlet_id'];
- $amount = $_POST['amount'];
- $description = trim($_POST['description']);
- $expense_date = $_POST['expense_date'];
-
- if (empty($category_id) || empty($amount) || empty($expense_date)) {
- $message = '
Category, amount, and date are required.
';
- } else {
- try {
- if ($isEdit) {
- $stmt = $pdo->prepare("UPDATE expenses SET category_id = ?, outlet_id = ?, amount = ?, description = ?, expense_date = ? WHERE id = ?");
- $stmt->execute([$category_id, $outlet_id, $amount, $description, $expense_date, $id]);
- $message = '
Expense updated successfully!
';
- $stmt = $pdo->prepare("SELECT * FROM expenses WHERE id = ?");
- $stmt->execute([$id]);
- $expense = $stmt->fetch();
- } else {
- $stmt = $pdo->prepare("INSERT INTO expenses (category_id, outlet_id, amount, description, expense_date) VALUES (?, ?, ?, ?, ?)");
- $stmt->execute([$category_id, $outlet_id, $amount, $description, $expense_date]);
- header("Location: expenses.php?success=created");
- exit;
- }
- } catch (PDOException $e) {
- $message = '
Database error: ' . $e->getMessage() . '
';
- }
- }
-}
-
-if (!$isEdit) {
- $expense = [
- 'category_id' => $_POST['category_id'] ?? '',
- 'outlet_id' => $_POST['outlet_id'] ?? '',
- 'amount' => $_POST['amount'] ?? '',
- 'description' => $_POST['description'] ?? '',
- 'expense_date' => $_POST['expense_date'] ?? date('Y-m-d')
- ];
-}
-
-$expense_categories = $pdo->query("SELECT * FROM expense_categories ORDER BY name ASC")->fetchAll();
-$outlets = $pdo->query("SELECT * FROM outlets ORDER BY name ASC")->fetchAll();
-
-include 'includes/header.php';
-?>
-
-
-
-= $message ?>
-
-
-
-
-
-
-
-
diff --git a/admin/expenses.php b/admin/expenses.php
index 0ce09b6..8f392f7 100644
--- a/admin/expenses.php
+++ b/admin/expenses.php
@@ -6,17 +6,56 @@ $pdo = db();
$message = '';
+// Handle Create/Update
+if ($_SERVER['REQUEST_METHOD'] === 'POST' && isset($_POST['action'])) {
+ if ($_POST['action'] === 'save_expense') {
+ if (!has_permission('expenses_add') && !has_permission('expenses_edit')) {
+ $message = '
Access Denied: You do not have permission.
';
+ } else {
+ $id = isset($_POST['id']) ? (int)$_POST['id'] : null;
+ $category_id = $_POST['category_id'];
+ $outlet_id = $_POST['outlet_id'];
+ $amount = $_POST['amount'];
+ $description = trim($_POST['description']);
+ $expense_date = $_POST['expense_date'];
+
+ if (empty($category_id) || empty($amount) || empty($expense_date)) {
+ $message = '
Category, amount, and date are required.
';
+ } else {
+ try {
+ if ($id) {
+ $stmt = $pdo->prepare("UPDATE expenses SET category_id = ?, outlet_id = ?, amount = ?, description = ?, expense_date = ? WHERE id = ?");
+ $stmt->execute([$category_id, $outlet_id, $amount, $description, $expense_date, $id]);
+ $message = '
Expense updated successfully!
';
+ } else {
+ $stmt = $pdo->prepare("INSERT INTO expenses (category_id, outlet_id, amount, description, expense_date) VALUES (?, ?, ?, ?, ?)");
+ $stmt->execute([$category_id, $outlet_id, $amount, $description, $expense_date]);
+ $message = '
Expense recorded successfully!
';
+ }
+ } catch (PDOException $e) {
+ $message = '
Database error: ' . $e->getMessage() . '
';
+ }
+ }
+ }
+ }
+}
+
+// Handle Delete
if (isset($_GET['delete'])) {
if (!has_permission('expenses_del')) {
$message = '
Access Denied: You do not have permission to delete expenses.
';
} else {
$id = $_GET['delete'];
$pdo->prepare("DELETE FROM expenses WHERE id = ?")->execute([$id]);
- header("Location: expenses.php");
+ header("Location: expenses.php?success=deleted");
exit;
}
}
+if (isset($_GET['success']) && $_GET['success'] === 'deleted') {
+ $message = '
Expense deleted successfully!
';
+}
+
$expense_categories = $pdo->query("SELECT * FROM expense_categories ORDER BY name")->fetchAll();
$outlets = $pdo->query("SELECT * FROM outlets ORDER BY name")->fetchAll();
@@ -65,9 +104,9 @@ include 'includes/header.php';
Track and manage business expenditures