145 lines
5.9 KiB
PHP
145 lines
5.9 KiB
PHP
<?php
|
|
require_once 'db/config.php';
|
|
require_once 'includes/header.php';
|
|
require_once 'includes/accounting_functions.php';
|
|
|
|
// Check permission
|
|
$user_id = $_SESSION['user_id'];
|
|
$stmt = db()->prepare("SELECT * FROM user_permissions WHERE user_id = ? AND page = 'accounting' AND can_view = 1");
|
|
$stmt->execute([$user_id]);
|
|
if (!$stmt->fetch()) {
|
|
echo "<div class='container mt-4' dir='rtl'>لا تملك صلاحية الوصول لهذه الصفحة.</div>";
|
|
require_once 'includes/footer.php';
|
|
exit;
|
|
}
|
|
|
|
// Handle form submission
|
|
if ($_SERVER['REQUEST_METHOD'] === 'POST') {
|
|
if (isset($_POST['add_account'])) {
|
|
$name = $_POST['name'];
|
|
$type = $_POST['type'];
|
|
$stmt = db()->prepare("INSERT INTO accounting_accounts (name, type) VALUES (?, ?)");
|
|
$stmt->execute([$name, $type]);
|
|
$message = "تم إضافة الحساب بنجاح.";
|
|
} elseif (isset($_POST['delete_account'])) {
|
|
$id = $_POST['id'];
|
|
$stmt = db()->prepare("DELETE FROM accounting_accounts WHERE id = ?");
|
|
$stmt->execute([$id]);
|
|
$message = "تم حذف الحساب.";
|
|
} elseif (isset($_POST['edit_account'])) {
|
|
$id = $_POST['id'];
|
|
$name = $_POST['name'];
|
|
$type = $_POST['type'];
|
|
$stmt = db()->prepare("UPDATE accounting_accounts SET name = ?, type = ? WHERE id = ?");
|
|
$stmt->execute([$name, $type, $id]);
|
|
$message = "تم تحديث الحساب بنجاح.";
|
|
}
|
|
}
|
|
|
|
// Pagination
|
|
$page = isset($_GET['p']) ? (int)$_GET['p'] : 1;
|
|
$limit = 10;
|
|
$offset = ($page - 1) * $limit;
|
|
|
|
$totalAccounts = db()->query("SELECT COUNT(*) FROM accounting_accounts")->fetchColumn();
|
|
$totalPages = ceil($totalAccounts / $limit);
|
|
|
|
$accounts = db()->prepare("SELECT * FROM accounting_accounts ORDER BY type, name LIMIT ? OFFSET ?");
|
|
$accounts->bindValue(1, $limit, PDO::PARAM_INT);
|
|
$accounts->bindValue(2, $offset, PDO::PARAM_INT);
|
|
$accounts->execute();
|
|
$accounts = $accounts->fetchAll(PDO::FETCH_ASSOC);
|
|
|
|
// Map English types to Arabic
|
|
$typeMap = [
|
|
'Assets' => 'أصول',
|
|
'Liabilities' => 'خصوم',
|
|
'Equity' => 'حقوق ملكية',
|
|
'Revenue' => 'إيرادات',
|
|
'Expenses' => 'مصروفات',
|
|
'أصول' => 'أصول',
|
|
'خصوم' => 'خصوم',
|
|
'حقوق ملكية' => 'حقوق ملكية',
|
|
'إيرادات' => 'إيرادات',
|
|
'مصروفات' => 'مصروفات'
|
|
];
|
|
?>
|
|
|
|
<div class="container mt-4" dir="rtl">
|
|
<h2 class="text-right">دليل الحسابات</h2>
|
|
|
|
<?php if (isset($message)) echo "<div class='alert alert-success'>$message</div>"; ?>
|
|
|
|
<div class="card mb-4">
|
|
<div class="card-header">إضافة/تعديل حساب</div>
|
|
<div class="card-body">
|
|
<form method="POST" id="accountForm">
|
|
<input type="hidden" name="add_account" value="1" id="formAction">
|
|
<input type="hidden" name="id" id="editId">
|
|
<div class="row">
|
|
<div class="col-md-5">
|
|
<label>اسم الحساب</label>
|
|
<input type="text" name="name" class="form-control" id="editName" required>
|
|
</div>
|
|
<div class="col-md-5">
|
|
<label>نوع الحساب</label>
|
|
<select name="type" class="form-control" id="editType" required>
|
|
<option value="أصول">أصول</option>
|
|
<option value="خصوم">خصوم</option>
|
|
<option value="حقوق ملكية">حقوق ملكية</option>
|
|
<option value="إيرادات">إيرادات</option>
|
|
<option value="مصروفات">مصروفات</option>
|
|
</select>
|
|
</div>
|
|
<div class="col-md-2 d-flex align-items-end">
|
|
<button type="submit" class="btn btn-primary" id="formButton">إضافة</button>
|
|
</div>
|
|
</div>
|
|
</form>
|
|
</div>
|
|
</div>
|
|
|
|
<table class="table table-bordered text-right">
|
|
<thead><tr><th>الاسم</th><th>النوع</th><th>إجراءات</th></tr></thead>
|
|
<tbody>
|
|
<?php foreach ($accounts as $account): ?>
|
|
<tr>
|
|
<td><?= htmlspecialchars($account['name']) ?></td>
|
|
<td><?= htmlspecialchars($typeMap[$account['type']] ?? $account['type']) ?></td>
|
|
<td>
|
|
<button class="btn btn-sm btn-info" onclick="editAccount(<?= $account['id'] ?>, '<?= htmlspecialchars($account['name']) ?>', '<?= $account['type'] ?>')">
|
|
<i class="fas fa-pencil-alt"></i>
|
|
</button>
|
|
<form method="POST" onsubmit="return confirm('هل أنت متأكد؟');" style="display:inline;">
|
|
<input type="hidden" name="delete_account" value="1">
|
|
<input type="hidden" name="id" value="<?= $account['id'] ?>">
|
|
<button type="submit" class="btn btn-danger btn-sm"><i class="fas fa-trash-alt"></i></button>
|
|
</form>
|
|
</td>
|
|
</tr>
|
|
<?php endforeach; ?>
|
|
</tbody>
|
|
</table>
|
|
|
|
<nav>
|
|
<ul class="pagination">
|
|
<?php for ($i = 1; $i <= $totalPages; $i++): ?>
|
|
<li class="page-item <?= $i == $page ? 'active' : '' ?>"><a class="page-link" href="?p=<?= $i ?>"><?= $i ?></a></li>
|
|
<?php endfor; ?>
|
|
</ul>
|
|
</nav>
|
|
</div>
|
|
|
|
<script>
|
|
function editAccount(id, name, type) {
|
|
document.getElementById('formAction').name = 'edit_account';
|
|
document.getElementById('editId').value = id;
|
|
document.getElementById('editName').value = name;
|
|
document.getElementById('editType').value = type;
|
|
document.getElementById('formButton').innerText = 'تعديل';
|
|
window.scrollTo({top: 0, behavior: 'smooth'});
|
|
}
|
|
</script>
|
|
|
|
<?php require_once 'includes/footer.php'; ?>
|