managing the sidebar

This commit is contained in:
Flatlogic Bot 2026-02-19 06:05:56 +00:00
parent 4b96f042c4
commit a16d1400d4
3 changed files with 313 additions and 156 deletions

153
includes/lang.php Normal file
View File

@ -0,0 +1,153 @@
<?php
$translations = [
'en' => [
'dashboard' => 'Dashboard',
'inventory' => 'Inventory',
'items' => 'Items',
'categories' => 'Categories',
'units' => 'Units',
'crm' => 'CRM',
'customers' => 'Customers',
'suppliers' => 'Suppliers',
'sales' => 'Sales',
'pos' => 'POS',
'sales_returns' => 'Sales Returns',
'purchases' => 'Purchases',
'purchase_returns' => 'Purchase Returns',
'quotations' => 'Quotations',
'expenses' => 'Expenses',
'expense_categories' => 'Expense Categories',
'accounting' => 'Accounting',
'trial_balance' => 'Trial Balance',
'profit_loss' => 'Profit & Loss',
'balance_sheet' => 'Balance Sheet',
'vat_report' => 'VAT Report',
'hr' => 'Human Resources',
'departments' => 'Departments',
'employees' => 'Employees',
'attendance' => 'Attendance',
'payroll' => 'Payroll',
'reports' => 'Reports',
'customer_statement' => 'Customer Statement',
'supplier_statement' => 'Supplier Statement',
'cashflow_report' => 'Cashflow Report',
'expiry_report' => 'Expiry Report',
'low_stock_report' => 'Low Stock Report',
'loyalty_history' => 'Loyalty History',
'management' => 'Management',
'payment_methods' => 'Payment Methods',
'devices' => 'Devices',
'settings' => 'Settings',
'admin' => 'Administration',
'role_groups' => 'Role Groups',
'users' => 'Users',
'cash_registers' => 'Cash Registers',
'register_sessions' => 'Register Sessions',
'scale_devices' => 'Scale Devices',
'customer_display' => 'Customer Display',
'backups' => 'Backups',
'logout' => 'Logout',
'welcome_back' => 'Welcome Back',
'sign_in' => 'Sign In',
'username' => 'Username',
'password' => 'Password',
'activate_product' => 'Activate Product',
'serial_key' => 'Serial Key',
'activate_now' => 'Activate Now',
'search' => 'Search',
'add_new' => 'Add New',
'actions' => 'Actions',
'edit' => 'Edit',
'delete' => 'Delete',
'save' => 'Save',
'cancel' => 'Cancel',
'total_sales' => 'Total Sales',
'total_received' => 'Total Received',
'customer_due' => 'Customer Due',
'total_purchases' => 'Total Purchases',
'total_paid' => 'Total Paid',
'supplier_due' => 'Supplier Due',
'total_customers' => 'Total Customers',
'low_stock_items' => 'Low Stock Items',
'expired_items' => 'Expired Items',
'near_expiry_items' => 'Near Expiry Items',
],
'ar' => [
'dashboard' => 'لوحة القيادة',
'inventory' => 'المخزون',
'items' => 'الأصناف',
'categories' => 'الفئات',
'units' => 'الوحدات',
'crm' => 'العملاء والموردين',
'customers' => 'العملاء',
'suppliers' => 'الموردين',
'sales' => 'المبيعات',
'pos' => 'نقطة البيع',
'sales_returns' => 'مرتجعات المبيعات',
'purchases' => 'المشتريات',
'purchase_returns' => 'مرتجعات المشتريات',
'quotations' => 'عروض الأسعار',
'expenses' => 'المصاريف',
'expense_categories' => 'فئات المصاريف',
'accounting' => 'المحاسبة',
'trial_balance' => 'ميزان المراجعة',
'profit_loss' => 'الأرباح والخسائر',
'balance_sheet' => 'الميزانية العمومية',
'vat_report' => 'تقرير ضريبة القيمة المضافة',
'hr' => 'الموارد البشرية',
'departments' => 'الأقسام',
'employees' => 'الموظفين',
'attendance' => 'الحضور',
'payroll' => 'الرواتب',
'reports' => 'التقارير',
'customer_statement' => 'كشف حساب عميل',
'supplier_statement' => 'كشف حساب مورد',
'cashflow_report' => 'تقرير التدفق النقدي',
'expiry_report' => 'تقرير الصلاحية',
'low_stock_report' => 'تقرير انخفاض المخزون',
'loyalty_history' => 'سجل الولاء',
'management' => 'الإدارة',
'payment_methods' => 'طرق الدفع',
'devices' => 'الأجهزة',
'settings' => 'الإعدادات',
'admin' => 'الإدارة العامة',
'role_groups' => 'مجموعات الأدوار',
'users' => 'المستخدمين',
'cash_registers' => 'صناديق الكاشير',
'register_sessions' => 'جلسات الكاشير',
'scale_devices' => 'أجهزة الميزان',
'customer_display' => 'شاشة العميل',
'backups' => 'النسخ الاحتياطي',
'logout' => 'تسجيل الخروج',
'welcome_back' => 'مرحباً بعودتك',
'sign_in' => 'تسجيل الدخول',
'username' => 'اسم المستخدم',
'password' => 'كلمة المرور',
'activate_product' => 'تنشيط المنتج',
'serial_key' => 'مفتاح التسلسل',
'activate_now' => 'تنشيط الآن',
'search' => 'بحث',
'add_new' => 'إضافة جديد',
'actions' => 'إجراءات',
'edit' => 'تعديل',
'delete' => 'حذف',
'save' => 'حفظ',
'cancel' => 'إلغاء',
'total_sales' => 'إجمالي المبيعات',
'total_received' => 'إجمالي المحصل',
'customer_due' => 'مستحقات العملاء',
'total_purchases' => 'إجمالي المشتريات',
'total_paid' => 'إجمالي المدفوع',
'supplier_due' => 'مستحقات الموردين',
'total_customers' => 'إجمالي العملاء',
'low_stock_items' => 'نواقص المخزون',
'expired_items' => 'أصناف منتهية الصلاحية',
'near_expiry_items' => 'أصناف قريبة الانتهاء',
]
];
function __($key) {
global $translations;
$lang = $_SESSION['lang'] ?? 'ar';
return $translations[$lang][$key] ?? $translations['en'][$key] ?? $key;
}

313
index.php
View File

@ -24,6 +24,17 @@ if ($_SERVER['REQUEST_METHOD'] === 'POST') {
}
require_once 'db/config.php';
require_once 'lib/LicenseService.php';
require_once 'includes/lang.php';
// Language Setup
if (isset($_GET['lang'])) {
$_SESSION['lang'] = in_array($_GET['lang'], ['en', 'ar']) ? $_GET['lang'] : 'ar';
}
if (!isset($_SESSION['lang'])) {
$_SESSION['lang'] = 'ar'; // Default to Arabic as requested
}
$lang = $_SESSION['lang'];
$dir = ($lang === 'ar') ? 'rtl' : 'ltr';
// Licensing Middleware
$is_activated = LicenseService::isActivated();
@ -49,22 +60,34 @@ if ($page === 'activate') {
}
?>
<!DOCTYPE html>
<html lang="en">
<html lang="<?= $lang ?>" dir="<?= $dir ?>">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Product Activation</title>
<title><?= __('activate_product') ?></title>
<link href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.0/dist/css/bootstrap.min.css" rel="stylesheet">
<style>
body { background: #f4f7f6; height: 100vh; display: flex; align-items: center; justify-content: center; font-family: 'Inter', sans-serif; }
.activation-card { background: white; padding: 2rem; border-radius: 1rem; box-shadow: 0 10px 25px rgba(0,0,0,0.05); width: 100%; max-width: 450px; }
.fingerprint { background: #eee; padding: 0.5rem; border-radius: 0.5rem; font-family: monospace; font-size: 0.8rem; word-break: break-all; }
[dir="rtl"] { font-family: 'Segoe UI', Tahoma, Geneva, Verdana, sans-serif; }
</style>
</head>
<body>
<div class="activation-card">
<h3 class="fw-bold mb-3">Activate Product</h3>
<p class="text-muted small mb-4">Please enter your serial key to continue using the application.</p>
<div class="d-flex justify-content-between align-items-center mb-3">
<h3 class="fw-bold mb-0"><?= __('activate_product') ?></h3>
<div class="dropdown">
<button class="btn btn-sm btn-outline-secondary dropdown-toggle" type="button" data-bs-toggle="dropdown">
<?= $lang === 'ar' ? 'العربية' : 'English' ?>
</button>
<ul class="dropdown-menu">
<li><a class="dropdown-menu" href="?page=activate&lang=en">English</a></li>
<li><a class="dropdown-menu" href="?page=activate&lang=ar">العربية</a></li>
</ul>
</div>
</div>
<p class="text-muted small mb-4"><?= $lang === 'ar' ? 'يرجى إدخال مفتاح التسلسل للمتابعة.' : 'Please enter your serial key to continue using the application.' ?></p>
<?php if ($error): ?>
<div class="alert alert-danger small"><?= $error ?></div>
@ -75,20 +98,17 @@ if ($page === 'activate') {
<form method="POST">
<div class="mb-3">
<label class="form-label small fw-bold">Serial Key</label>
<label class="form-label small fw-bold"><?= __('serial_key') ?></label>
<input type="text" name="license_key" class="form-control" placeholder="FLAT-XXXX-XXXX-XXXX" required>
<div class="form-text mt-1" style="font-size: 0.7rem;">Example: FLAT-8822-1192-3301</div>
</div>
<div class="mb-3">
<label class="form-label small fw-bold text-muted">Server Fingerprint</label>
<label class="form-label small fw-bold text-muted"><?= $lang === 'ar' ? 'بصمة السيرفر' : 'Server Fingerprint' ?></label>
<div class="fingerprint text-muted"><?= LicenseService::getFingerprint() ?></div>
</div>
<button type="submit" name="activate" class="btn btn-primary w-100 py-2">Activate Now</button>
<button type="submit" name="activate" class="btn btn-primary w-100 py-2"><?= __('activate_now') ?></button>
</form>
<div class="mt-4 text-center">
<p class="text-muted small">Need a key? <a href="#">Contact Support</a></p>
</div>
</div>
<script src="https://cdn.jsdelivr.net/npm/bootstrap@5.3.0/dist/js/bootstrap.bundle.min.js"></script>
</body>
</html>
<?php
@ -359,11 +379,11 @@ if (isset($_GET['action']) || isset($_POST['action'])) {
if (!isset($_SESSION['user_id'])) {
?>
<!DOCTYPE html>
<html lang="en">
<html lang="<?= $lang ?>" dir="<?= $dir ?>">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Login - Admin Panel</title>
<title><?= __('sign_in') ?> - Admin Panel</title>
<link href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.0/dist/css/bootstrap.min.css" rel="stylesheet">
<link href="https://cdn.jsdelivr.net/npm/bootstrap-icons@1.10.0/font/bootstrap-icons.css" rel="stylesheet">
<style>
@ -372,33 +392,40 @@ if (!isset($_SESSION['user_id'])) {
.btn-primary { border-radius: 12px; padding: 12px; font-weight: 600; background: linear-gradient(135deg, #6e8efb, #a777e3); border: none; }
.form-control { border-radius: 12px; padding: 12px; border: 1px solid #eee; }
.form-control:focus { box-shadow: 0 0 0 4px rgba(110, 142, 251, 0.1); border-color: #6e8efb; }
[dir="rtl"] { font-family: 'Segoe UI', Tahoma, Geneva, Verdana, sans-serif; }
</style>
</head>
<body>
<div class="login-card text-center">
<div class="d-flex justify-content-end mb-3">
<a href="?lang=<?= $lang === 'ar' ? 'en' : 'ar' ?>" class="btn btn-sm btn-light border">
<?= $lang === 'ar' ? 'English' : 'العربية' ?>
</a>
</div>
<div class="mb-4">
<div class="d-inline-flex align-items-center justify-content-center bg-primary bg-opacity-10 rounded-circle mb-3" style="width: 60px; height: 60px;">
<i class="bi bi-shield-lock text-primary fs-3"></i>
</div>
<h4 class="fw-bold">Welcome Back</h4>
<p class="text-muted small">Please enter your details to sign in</p>
<h4 class="fw-bold"><?= __('welcome_back') ?></h4>
<p class="text-muted small"><?= $lang === 'ar' ? 'يرجى إدخال تفاصيلك لتسجيل الدخول' : 'Please enter your details to sign in' ?></p>
</div>
<?php if ($login_error): ?>
<div class="alert alert-danger small py-2 mb-4"><?= $login_error ?></div>
<?php endif; ?>
<form method="POST">
<div class="mb-3 text-start">
<label class="form-label small fw-semibold">Username</label>
<label class="form-label small fw-semibold"><?= __('username') ?></label>
<input type="text" name="username" class="form-control" placeholder="admin" required autofocus>
</div>
<div class="mb-4 text-start">
<label class="form-label small fw-semibold">Password</label>
<label class="form-label small fw-semibold"><?= __('password') ?></label>
<input type="password" name="password" class="form-control" placeholder="••••••••" required>
</div>
<button type="submit" name="login" class="btn btn-primary w-100 mb-3">Sign In</button>
<div class="text-muted small">Default user: admin / admin</div>
<button type="submit" name="login" class="btn btn-primary w-100 mb-3"><?= __('sign_in') ?></button>
<div class="text-muted small"><?= $lang === 'ar' ? 'المستخدم الافتراضي: admin / admin' : 'Default user: admin / admin' ?></div>
</form>
</div>
<script src="https://cdn.jsdelivr.net/npm/bootstrap@5.3.0/dist/js/bootstrap.bundle.min.js"></script>
</body>
</html>
<?php
@ -1728,11 +1755,11 @@ switch ($page) {
$projectDescription = $_SERVER['PROJECT_DESCRIPTION'] ?? 'Accounting System';
?>
<!doctype html>
<html lang="en" dir="ltr">
<html lang="<?= $lang ?>" dir="<?= $dir ?>">
<head>
<meta charset="utf-8" />
<meta name="viewport" content="width=device-width, initial-scale=1" />
<title data-en="Accounting System" data-ar="نظام المحاسبة">Accounting System</title>
<title><?= __('accounting') ?> - Admin Panel</title>
<meta name="description" content="<?= htmlspecialchars($projectDescription) ?>" />
<?php if (!empty($data['settings']['favicon'])): ?>
<link rel="icon" href="<?= htmlspecialchars($data['settings']['favicon']) ?>?v=<?= time() ?>">
@ -1756,107 +1783,120 @@ $projectDescription = $_SERVER['PROJECT_DESCRIPTION'] ?? 'Accounting System';
.sidebar, .topbar, .d-print-none, .no-print { display: none !important; }
.main-content { margin: 0 !important; padding: 0 !important; }
}
[dir="rtl"] { font-family: 'Segoe UI', Tahoma, Geneva, Verdana, sans-serif; }
</style>
</head>
<body class="theme-<?= htmlspecialchars($_SESSION['theme'] ?? 'default') ?>">
<div class="sidebar">
<div class="sidebar-header" data-en="Accounting" data-ar="المحاسبة">Accounting</div>
<div class="sidebar-header"><?= __('accounting') ?></div>
<nav class="mt-4">
<!-- General Section -->
<?php if (can('dashboard_view')): ?>
<a href="index.php?page=dashboard" class="nav-link <?= !isset($_GET['page']) || $_GET['page'] === 'dashboard' ? 'active' : '' ?>">
<i class="fas fa-chart-pie"></i> <span data-en="Dashboard" data-ar="لوحة القيادة">Dashboard</span>
<i class="fas fa-chart-pie"></i> <span><?= __('dashboard') ?></span>
</a>
<?php endif; ?>
<!-- Inventory Section -->
<?php if (can('items_view')): ?>
<div class="nav-section-title px-4 mt-3 mb-1 text-uppercase text-muted <?= !in_array($page, ['items', 'categories', 'units']) ? 'collapsed' : '' ?>" data-bs-toggle="collapse" data-bs-target="#stock-collapse">
<span><i class="fas fa-boxes-stacked group-icon"></i><span data-en="Inventory" data-ar="المخزون">Inventory</span></span>
<span><i class="fas fa-boxes-stacked group-icon"></i><span><?= __('inventory') ?></span></span>
<i class="fas fa-chevron-down chevron"></i>
</div>
<div class="collapse <?= in_array($page, ['items', 'categories', 'units']) ? 'show' : '' ?>" id="stock-collapse">
<a href="index.php?page=items" class="nav-link <?= isset($_GET['page']) && $_GET['page'] === 'items' ? 'active' : '' ?>">
<i class="fas fa-box"></i> <span data-en="Products" data-ar="المنتجات">Products</span>
<i class="fas fa-box"></i> <span><?= __('items') ?></span>
</a>
<a href="index.php?page=categories" class="nav-link <?= isset($_GET['page']) && $_GET['page'] === 'categories' ? 'active' : '' ?>">
<i class="fas fa-tags"></i> <span data-en="Categories" data-ar="الفئات">Categories</span>
<i class="fas fa-tags"></i> <span><?= __('categories') ?></span>
</a>
<a href="index.php?page=units" class="nav-link <?= isset($_GET['page']) && $_GET['page'] === 'units' ? 'active' : '' ?>">
<i class="fas fa-ruler-combined"></i> <span data-en="Units" data-ar="الوحدات">Units</span>
<i class="fas fa-ruler-combined"></i> <span><?= __('units') ?></span>
</a>
</div>
<?php endif; ?>
<!-- People Section -->
<?php if (can('customers_view') || can('suppliers_view')): ?>
<div class="nav-section-title px-4 mt-3 mb-1 text-uppercase text-muted <?= !in_array($page, ['customers', 'suppliers']) ? 'collapsed' : '' ?>" data-bs-toggle="collapse" data-bs-target="#crm-collapse">
<span><i class="fas fa-user-group group-icon"></i><span data-en="People" data-ar="الأشخاص">People</span></span>
<!-- Customers Section -->
<?php if (can('customers_view')): ?>
<div class="nav-section-title px-4 mt-3 mb-1 text-uppercase text-muted <?= !in_array($page, ['customers']) ? 'collapsed' : '' ?>" data-bs-toggle="collapse" data-bs-target="#customers-collapse">
<span><i class="fas fa-users group-icon"></i><span><?= __('customers') ?></span></span>
<i class="fas fa-chevron-down chevron"></i>
</div>
<div class="collapse <?= in_array($page, ['customers', 'suppliers']) ? 'show' : '' ?>" id="crm-collapse">
<?php if (can('customers_view')): ?>
<div class="collapse <?= in_array($page, ['customers']) ? 'show' : '' ?>" id="customers-collapse">
<a href="index.php?page=customers" class="nav-link <?= isset($_GET['page']) && $_GET['page'] === 'customers' ? 'active' : '' ?>">
<i class="fas fa-users"></i> <span data-en="Customers" data-ar="العملاء">Customers</span>
<i class="fas fa-users"></i> <span><?= __('customers') ?></span>
</a>
<?php endif; ?>
<?php if (can('suppliers_view')): ?>
<a href="index.php?page=suppliers" class="nav-link <?= isset($_GET['page']) && $_GET['page'] === 'suppliers' ? 'active' : '' ?>">
<i class="fas fa-truck-field"></i> <span data-en="Suppliers" data-ar="الموردين">Suppliers</span>
</a>
<?php endif; ?>
</div>
<?php endif; ?>
<!-- Operations Section -->
<?php if (can('pos_view') || can('sales_view') || can('purchases_view') || can('quotations_view')): ?>
<div class="nav-section-title px-4 mt-3 mb-1 text-uppercase text-muted <?= !in_array($page, ['sales', 'purchases', 'pos', 'quotations']) ? 'collapsed' : '' ?>" data-bs-toggle="collapse" data-bs-target="#ops-collapse">
<span><i class="fas fa-gears group-icon"></i><span data-en="Operations" data-ar="العمليات">Operations</span></span>
<!-- Suppliers Section -->
<?php if (can('suppliers_view')): ?>
<div class="nav-section-title px-4 mt-3 mb-1 text-uppercase text-muted <?= !in_array($page, ['suppliers']) ? 'collapsed' : '' ?>" data-bs-toggle="collapse" data-bs-target="#suppliers-collapse">
<span><i class="fas fa-truck-field group-icon"></i><span><?= __('suppliers') ?></span></span>
<i class="fas fa-chevron-down chevron"></i>
</div>
<div class="collapse <?= in_array($page, ['sales', 'purchases', 'pos', 'quotations']) ? 'show' : '' ?>" id="ops-collapse">
<?php if (can('pos_view')): ?>
<a href="index.php?page=pos" class="nav-link <?= isset($_GET['page']) && $_GET['page'] === 'pos' ? 'active' : '' ?>">
<i class="fas fa-cash-register"></i> <span data-en="Point of Sale" data-ar="نقطة البيع">Point of Sale</span>
<div class="collapse <?= in_array($page, ['suppliers']) ? 'show' : '' ?>" id="suppliers-collapse">
<a href="index.php?page=suppliers" class="nav-link <?= isset($_GET['page']) && $_GET['page'] === 'suppliers' ? 'active' : '' ?>">
<i class="fas fa-truck-field"></i> <span><?= __('suppliers') ?></span>
</a>
<?php endif; ?>
<?php if (can('sales_view')): ?>
</div>
<?php endif; ?>
<!-- POS Section -->
<?php if (can('pos_view')): ?>
<a href="index.php?page=pos" class="nav-link <?= isset($_GET['page']) && $_GET['page'] === 'pos' ? 'active' : '' ?> mt-2">
<i class="fas fa-cash-register"></i> <span><?= __('pos') ?></span>
</a>
<?php endif; ?>
<!-- Sales Section -->
<?php if (can('sales_view') || can('quotations_view')): ?>
<div class="nav-section-title px-4 mt-3 mb-1 text-uppercase text-muted <?= !in_array($page, ['sales', 'sales_returns', 'quotations']) ? 'collapsed' : '' ?>" data-bs-toggle="collapse" data-bs-target="#sales-collapse">
<span><i class="fas fa-file-invoice-dollar group-icon"></i><span><?= __('sales') ?></span></span>
<i class="fas fa-chevron-down chevron"></i>
</div>
<div class="collapse <?= in_array($page, ['sales', 'sales_returns', 'quotations']) ? 'show' : '' ?>" id="sales-collapse">
<a href="index.php?page=sales" class="nav-link <?= isset($_GET['page']) && $_GET['page'] === 'sales' ? 'active' : '' ?>">
<i class="fas fa-file-invoice-dollar"></i> <span data-en="Sales Tax Invoices" data-ar="فواتير المبيعات الضريبية">Sales Tax Invoices</span>
<i class="fas fa-file-invoice-dollar"></i> <span><?= __('sales') ?></span>
</a>
<a href="index.php?page=sales_returns" class="nav-link <?= isset($_GET['page']) && $_GET['page'] === 'sales_returns' ? 'active' : '' ?>">
<i class="fas fa-reply"></i> <span data-en="Sales Returns" data-ar="مرتجع المبيعات">Sales Returns</span>
<i class="fas fa-reply"></i> <span><?= __('sales_returns') ?></span>
</a>
<?php endif; ?>
<?php if (can('purchases_view')): ?>
<a href="index.php?page=quotations" class="nav-link <?= isset($_GET['page']) && $_GET['page'] === 'quotations' ? 'active' : '' ?>">
<i class="fas fa-file-lines"></i> <span><?= __('quotations') ?></span>
</a>
</div>
<?php endif; ?>
<!-- Purchases Section -->
<?php if (can('purchases_view')): ?>
<div class="nav-section-title px-4 mt-3 mb-1 text-uppercase text-muted <?= !in_array($page, ['purchases', 'purchase_returns']) ? 'collapsed' : '' ?>" data-bs-toggle="collapse" data-bs-target="#purchases-collapse">
<span><i class="fas fa-cart-shopping group-icon"></i><span><?= __('purchases') ?></span></span>
<i class="fas fa-chevron-down chevron"></i>
</div>
<div class="collapse <?= in_array($page, ['purchases', 'purchase_returns']) ? 'show' : '' ?>" id="purchases-collapse">
<a href="index.php?page=purchases" class="nav-link <?= isset($_GET['page']) && $_GET['page'] === 'purchases' ? 'active' : '' ?>">
<i class="fas fa-cart-shopping"></i> <span data-en="Purchase Tax Invoices" data-ar="فواتير المشتريات الضريبية">Purchase Tax Invoices</span>
<i class="fas fa-cart-shopping"></i> <span><?= __('purchases') ?></span>
</a>
<a href="index.php?page=purchase_returns" class="nav-link <?= isset($_GET['page']) && $_GET['page'] === 'purchase_returns' ? 'active' : '' ?>">
<i class="fas fa-share"></i> <span data-en="Purchase Returns" data-ar="مرتجع المشتريات">Purchase Returns</span>
<i class="fas fa-share"></i> <span><?= __('purchase_returns') ?></span>
</a>
<?php endif; ?>
<?php if (can('quotations_view')): ?>
<a href="index.php?page=quotations" class="nav-link <?= isset($_GET['page']) && $_GET['page'] === 'quotations' ? 'active' : '' ?>">
<i class="fas fa-file-lines"></i> <span data-en="Quotations" data-ar="العروض">Quotations</span>
</a>
<?php endif; ?>
</div>
<?php endif; ?>
<!-- Expenses Section -->
<?php if (can('accounting_view')): ?>
<div class="nav-section-title px-4 mt-3 mb-1 text-uppercase text-muted <?= !in_array($page, ['expense_categories', 'expenses']) ? 'collapsed' : '' ?>" data-bs-toggle="collapse" data-bs-target="#expenses-collapse">
<span><i class="fas fa-wallet group-icon"></i><span data-en="Expenses" data-ar="المصروفات">Expenses</span></span>
<span><i class="fas fa-wallet group-icon"></i><span><?= __('expenses') ?></span></span>
<i class="fas fa-chevron-down chevron"></i>
</div>
<div class="collapse <?= in_array($page, ['expense_categories', 'expenses']) ? 'show' : '' ?>" id="expenses-collapse">
<a href="index.php?page=expense_categories" class="nav-link <?= isset($_GET['page']) && $_GET['page'] === 'expense_categories' ? 'active' : '' ?>">
<i class="fas fa-layer-group"></i> <span data-en="Categories" data-ar="الفئات">Categories</span>
<i class="fas fa-layer-group"></i> <span><?= __('expense_categories') ?></span>
</a>
<a href="index.php?page=expenses" class="nav-link <?= isset($_GET['page']) && $_GET['page'] === 'expenses' ? 'active' : '' ?>">
<i class="fas fa-file-invoice"></i> <span data-en="All Expenses" data-ar="كل المصروفات">All Expenses</span>
<i class="fas fa-file-invoice"></i> <span><?= __('expenses') ?></span>
</a>
</div>
<?php endif; ?>
@ -1864,24 +1904,24 @@ $projectDescription = $_SERVER['PROJECT_DESCRIPTION'] ?? 'Accounting System';
<!-- Accounting Section -->
<?php if (can('accounting_view')): ?>
<div class="nav-section-title px-4 mt-3 mb-1 text-uppercase text-muted <?= !in_array($page, ['accounting', 'expense_report']) ? 'collapsed' : '' ?>" data-bs-toggle="collapse" data-bs-target="#accounting-collapse">
<span><i class="fas fa-calculator group-icon"></i><span data-en="Accounting" data-ar="المحاسبة">Accounting</span></span>
<span><i class="fas fa-calculator group-icon"></i><span><?= __('accounting') ?></span></span>
<i class="fas fa-chevron-down chevron"></i>
</div>
<div class="collapse <?= in_array($page, ['accounting', 'expense_report']) ? 'show' : '' ?>" id="accounting-collapse">
<a href="index.php?page=accounting" class="nav-link <?= isset($_GET['page']) && $_GET['page'] === 'accounting' ? 'active' : '' ?>">
<i class="fas fa-book-open"></i> <span data-en="Journal & Ledger" data-ar="اليومية والأستاذ">Journal & Ledger</span>
<i class="fas fa-book-open"></i> <span><?= __('accounting') ?></span>
</a>
<a href="index.php?page=accounting&view=trial_balance" class="nav-link <?= isset($_GET['view']) && $_GET['view'] === 'trial_balance' ? 'active' : '' ?>">
<i class="fas fa-scale-balanced"></i> <span data-en="Trial Balance" data-ar="ميزان المراجعة">Trial Balance</span>
<i class="fas fa-scale-balanced"></i> <span><?= __('trial_balance') ?></span>
</a>
<a href="index.php?page=accounting&view=profit_loss" class="nav-link <?= isset($_GET['view']) && $_GET['view'] === 'profit_loss' ? 'active' : '' ?>">
<i class="fas fa-chart-column"></i> <span data-en="Profit & Loss" data-ar="الأرباح والخسائر">Profit & Loss</span>
<i class="fas fa-chart-column"></i> <span><?= __('profit_loss') ?></span>
</a>
<a href="index.php?page=accounting&view=balance_sheet" class="nav-link <?= isset($_GET['view']) && $_GET['view'] === 'balance_sheet' ? 'active' : '' ?>">
<i class="fas fa-file-contract"></i> <span data-en="Balance Sheet" data-ar="الميزانية العمومية">Balance Sheet</span>
<i class="fas fa-file-contract"></i> <span><?= __('balance_sheet') ?></span>
</a>
<a href="index.php?page=accounting&view=vat_report" class="nav-link <?= isset($_GET['view']) && $_GET['view'] === 'vat_report' ? 'active' : '' ?>">
<i class="fas fa-receipt"></i> <span data-en="VAT Report" data-ar="تقرير الضريبة">VAT Report</span>
<i class="fas fa-receipt"></i> <span><?= __('vat_report') ?></span>
</a>
</div>
<?php endif; ?>
@ -1889,21 +1929,21 @@ $projectDescription = $_SERVER['PROJECT_DESCRIPTION'] ?? 'Accounting System';
<!-- HR Section -->
<?php if (can('hr_view')): ?>
<div class="nav-section-title px-4 mt-3 mb-1 text-uppercase text-muted <?= !in_array($page, ['hr_employees', 'hr_departments', 'hr_attendance', 'hr_payroll']) ? 'collapsed' : '' ?>" data-bs-toggle="collapse" data-bs-target="#hr-collapse">
<span><i class="fas fa-user-tie group-icon"></i><span data-en="HR" data-ar="الموارد البشرية">HR</span></span>
<span><i class="fas fa-user-tie group-icon"></i><span><?= __('hr') ?></span></span>
<i class="fas fa-chevron-down chevron"></i>
</div>
<div class="collapse <?= in_array($page, ['hr_employees', 'hr_departments', 'hr_attendance', 'hr_payroll']) ? 'show' : '' ?>" id="hr-collapse">
<a href="index.php?page=hr_departments" class="nav-link <?= $page === 'hr_departments' ? 'active' : '' ?>">
<i class="fas fa-building-user"></i> <span data-en="Departments" data-ar="الأقسام">Departments</span>
<i class="fas fa-building-user"></i> <span><?= __('departments') ?></span>
</a>
<a href="index.php?page=hr_employees" class="nav-link <?= $page === 'hr_employees' ? 'active' : '' ?>">
<i class="fas fa-user-badge"></i> <span data-en="Employees" data-ar="الموظفون">Employees</span>
<i class="fas fa-user-badge"></i> <span><?= __('employees') ?></span>
</a>
<a href="index.php?page=hr_attendance" class="nav-link <?= $page === 'hr_attendance' ? 'active' : '' ?>">
<i class="fas fa-user-check"></i> <span data-en="Attendance" data-ar="الحضور">Attendance</span>
<i class="fas fa-user-check"></i> <span><?= __('attendance') ?></span>
</a>
<a href="index.php?page=hr_payroll" class="nav-link <?= $page === 'hr_payroll' ? 'active' : '' ?>">
<i class="fas fa-sack-dollar"></i> <span data-en="Payroll" data-ar="الرواتب">Payroll</span>
<i class="fas fa-sack-dollar"></i> <span><?= __('payroll') ?></span>
</a>
</div>
<?php endif; ?>
@ -1911,36 +1951,36 @@ $projectDescription = $_SERVER['PROJECT_DESCRIPTION'] ?? 'Accounting System';
<!-- Reports Section -->
<?php if (can('sales_view') || can('purchases_view') || can('items_view') || can('customers_view') || can('suppliers_view')): ?>
<div class="nav-section-title px-4 mt-3 mb-1 text-uppercase text-muted <?= !in_array($page, ['customer_statement', 'supplier_statement', 'cashflow_report', 'expiry_report', 'low_stock_report']) ? 'collapsed' : '' ?>" data-bs-toggle="collapse" data-bs-target="#reports-collapse">
<span><i class="fas fa-chart-line group-icon"></i><span data-en="Reports" data-ar="التقارير">Reports</span></span>
<span><i class="fas fa-chart-line group-icon"></i><span><?= __('reports') ?></span></span>
<i class="fas fa-chevron-down chevron"></i>
</div>
<div class="collapse <?= in_array($page, ['customer_statement', 'supplier_statement', 'cashflow_report', 'expiry_report', 'low_stock_report', 'loyalty_history']) ? 'show' : '' ?>" id="reports-collapse">
<?php if (can('customers_view')): ?>
<a href="index.php?page=customer_statement" class="nav-link <?= isset($_GET['page']) && $_GET['page'] === 'customer_statement' ? 'active' : '' ?>">
<i class="fas fa-file-invoice"></i> <span data-en="Customer Statement" data-ar="كشف حساب عميل">Customer Statement</span>
<i class="fas fa-file-invoice"></i> <span><?= __('customer_statement') ?></span>
</a>
<?php endif; ?>
<?php if (can('suppliers_view')): ?>
<a href="index.php?page=supplier_statement" class="nav-link <?= isset($_GET['page']) && $_GET['page'] === 'supplier_statement' ? 'active' : '' ?>">
<i class="fas fa-file-lines"></i> <span data-en="Supplier Statement" data-ar="كشف حساب مورد">Supplier Statement</span>
<i class="fas fa-file-lines"></i> <span><?= __('supplier_statement') ?></span>
</a>
<?php endif; ?>
<?php if (can('accounting_view')): ?>
<a href="index.php?page=cashflow_report" class="nav-link <?= isset($_GET['page']) && $_GET['page'] === 'cashflow_report' ? 'active' : '' ?>">
<i class="fas fa-money-bill-transfer"></i> <span data-en="Cashflow Statement" data-ar="قائمة التدفقات النقدية">Cashflow Statement</span>
<i class="fas fa-money-bill-transfer"></i> <span><?= __('cashflow_report') ?></span>
</a>
<?php endif; ?>
<?php if (can('items_view')): ?>
<a href="index.php?page=expiry_report" class="nav-link <?= isset($_GET['page']) && $_GET['page'] === 'expiry_report' ? 'active' : '' ?>">
<i class="fas fa-calendar-xmark"></i> <span data-en="Expiry Report" data-ar="تقرير الانتهاء">Expiry Report</span>
<i class="fas fa-calendar-xmark"></i> <span><?= __('expiry_report') ?></span>
</a>
<a href="index.php?page=low_stock_report" class="nav-link <?= isset($_GET['page']) && $_GET['page'] === 'low_stock_report' ? 'active' : '' ?>">
<i class="fas fa-arrow-trend-down"></i> <span data-en="Low Stock Report" data-ar="تقرير نواقص المخزون">Low Stock Report</span>
<i class="fas fa-arrow-trend-down"></i> <span><?= __('low_stock_report') ?></span>
</a>
<?php endif; ?>
<?php if (can('customers_view')): ?>
<a href="index.php?page=loyalty_history" class="nav-link <?= isset($_GET['page']) && $_GET['page'] === 'loyalty_history' ? 'active' : '' ?>">
<i class="fas fa-award"></i> <span data-en="Loyalty History" data-ar="سجل الولاء">Loyalty History</span>
<i class="fas fa-award"></i> <span><?= __('loyalty_history') ?></span>
</a>
<?php endif; ?>
</div>
@ -1949,18 +1989,18 @@ $projectDescription = $_SERVER['PROJECT_DESCRIPTION'] ?? 'Accounting System';
<!-- Configurations Section -->
<?php if (can('settings_view')): ?>
<div class="nav-section-title px-4 mt-3 mb-1 text-uppercase text-muted <?= !in_array($page, ['payment_methods', 'settings', 'devices']) ? 'collapsed' : '' ?>" data-bs-toggle="collapse" data-bs-target="#config-collapse">
<span><i class="fas fa-sliders group-icon"></i><span data-en="Configurations" data-ar="الإعدادات">Configurations</span></span>
<span><i class="fas fa-sliders group-icon"></i><span><?= __('settings') ?></span></span>
<i class="fas fa-chevron-down chevron"></i>
</div>
<div class="collapse <?= in_array($page, ['payment_methods', 'settings', 'devices']) ? 'show' : '' ?>" id="config-collapse">
<a href="index.php?page=payment_methods" class="nav-link <?= isset($_GET['page']) && $_GET['page'] === 'payment_methods' ? 'active' : '' ?>">
<i class="fas fa-credit-card"></i> <span data-en="Payment Methods" data-ar="طرق الدفع">Payment Methods</span>
<i class="fas fa-credit-card"></i> <span><?= __('payment_methods') ?></span>
</a>
<a href="index.php?page=devices" class="nav-link <?= isset($_GET['page']) && $_GET['page'] === 'devices' ? 'active' : '' ?>">
<i class="fas fa-id-card"></i> <span data-en="Biometric Devices" data-ar="أجهزة البصمة">Biometric Devices</span>
<i class="fas fa-id-card"></i> <span><?= __('devices') ?></span>
</a>
<a href="index.php?page=settings" class="nav-link <?= isset($_GET['page']) && $_GET['page'] === 'settings' ? 'active' : '' ?>">
<i class="fas fa-building-gear"></i> <span data-en="Company Profile" data-ar="ملف الشركة">Company Profile</span>
<i class="fas fa-building-gear"></i> <span><?= __('settings') ?></span>
</a>
</div>
<?php endif; ?>
@ -1968,30 +2008,30 @@ $projectDescription = $_SERVER['PROJECT_DESCRIPTION'] ?? 'Accounting System';
<!-- Administrations Section -->
<?php if (can('users_view')): ?>
<div class="nav-section-title px-4 mt-3 mb-1 text-uppercase text-muted <?= !in_array($page, ['role_groups', 'users', 'cash_registers', 'register_sessions', 'scale_devices', 'backups', 'customer_display_settings']) ? 'collapsed' : '' ?>" data-bs-toggle="collapse" data-bs-target="#admin-collapse">
<span><i class="fas fa-user-gear group-icon"></i><span data-en="Administrations" data-ar="الإدارة">Administrations</span></span>
<span><i class="fas fa-user-gear group-icon"></i><span><?= __('admin') ?></span></span>
<i class="fas fa-chevron-down chevron"></i>
</div>
<div class="collapse <?= in_array($page, ['role_groups', 'users', 'cash_registers', 'register_sessions', 'scale_devices', 'backups', 'customer_display_settings']) ? 'show' : '' ?>" id="admin-collapse">
<a href="index.php?page=role_groups" class="nav-link <?= $page === 'role_groups' ? 'active' : '' ?>">
<i class="fas fa-user-shield"></i> <span data-en="Role Groups" data-ar="مجموعات الأدوار">Role Groups</span>
<i class="fas fa-user-shield"></i> <span><?= __('role_groups') ?></span>
</a>
<a href="index.php?page=users" class="nav-link <?= $page === 'users' ? 'active' : '' ?>">
<i class="fas fa-users-gear"></i> <span data-en="Users" data-ar="المستخدمين">Users</span>
<i class="fas fa-users-gear"></i> <span><?= __('users') ?></span>
</a>
<a href="index.php?page=cash_registers" class="nav-link <?= $page === 'cash_registers' ? 'active' : '' ?>">
<i class="fas fa-cash-register"></i> <span data-en="Cash Registers" data-ar="خزائن الكاشير">Cash Registers</span>
<i class="fas fa-cash-register"></i> <span><?= __('cash_registers') ?></span>
</a>
<a href="index.php?page=register_sessions" class="nav-link <?= $page === 'register_sessions' ? 'active' : '' ?>">
<i class="fas fa-clock-rotate-left"></i> <span data-en="Register Sessions" data-ar="جلسات الكاشير">Register Sessions</span>
<i class="fas fa-clock-rotate-left"></i> <span><?= __('register_sessions') ?></span>
</a>
<a href="index.php?page=scale_devices" class="nav-link <?= $page === 'scale_devices' ? 'active' : '' ?>">
<i class="fas fa-microchip"></i> <span data-en="Devices" data-ar="الأجهزة">Devices</span>
<i class="fas fa-microchip"></i> <span><?= __('scale_devices') ?></span>
</a>
<a href="index.php?page=customer_display_settings" class="nav-link <?= $page === 'customer_display_settings' ? 'active' : '' ?>">
<i class="fas fa-desktop"></i> <span data-en="Customer Display" data-ar="شاشة العميل">Customer Display</span>
<i class="fas fa-desktop"></i> <span><?= __('customer_display') ?></span>
</a>
<a href="index.php?page=backups" class="nav-link <?= $page === 'backups' ? 'active' : '' ?>">
<i class="fas fa-database"></i> <span data-en="Backups" data-ar="نسخ احتياطي">Backups</span>
<i class="fas fa-database"></i> <span><?= __('backups') ?></span>
</a>
</div>
<?php endif; ?>
@ -2003,7 +2043,7 @@ $projectDescription = $_SERVER['PROJECT_DESCRIPTION'] ?? 'Accounting System';
<span class="badge bg-success-subtle text-success border border-success-subtle rounded-pill">Stable</span>
</div>
<a href="?page=logs" class="text-decoration-none text-muted small d-block">
<i class="bi bi-journal-text me-1"></i> <span data-en="System Logs" data-ar="سجلات النظام">System Logs</span>
<i class="bi bi-journal-text me-1"></i> <span>System Logs</span>
</a>
</div>
</nav>
@ -2015,63 +2055,24 @@ $projectDescription = $_SERVER['PROJECT_DESCRIPTION'] ?? 'Accounting System';
<button id="sidebarToggle" class="btn btn-link text-dark p-0 me-3 d-lg-none">
<i class="bi bi-list fs-3"></i>
</button>
<h4 class="m-0">
<?php
$titles = [
'dashboard' => ['en' => 'Dashboard', 'ar' => 'لوحة القيادة'],
'my_profile' => ['en' => 'My Profile', 'ar' => 'ملفي الشخصي'],
'pos' => ['en' => 'Point of Sale', 'ar' => 'نقطة البيع'],
'quotations' => ['en' => 'Quotations', 'ar' => 'العروض'],
'customers' => ['en' => 'Customers', 'ar' => 'العملاء'],
'suppliers' => ['en' => 'Suppliers', 'ar' => 'الموردون'],
'categories' => ['en' => 'Stock Categories', 'ar' => 'فئات المخزون'],
'units' => ['en' => 'Stock Units', 'ar' => 'وحدات المخزون'],
'items' => ['en' => 'Stock Items', 'ar' => 'أصناف المخزون'],
'payment_methods' => ['en' => 'Payment Methods', 'ar' => 'طرق الدفع'],
'sales' => ['en' => 'Sales Tax Invoices', 'ar' => 'فواتير المبيعات الضريبية'],
'purchases' => ['en' => 'Purchase Tax Invoices', 'ar' => 'فواتير المشتريات الضريبية'],
'sales_returns' => ['en' => 'Sales Returns', 'ar' => 'مرتجع المبيعات'],
'customer_statement' => ['en' => 'Customer Statement', 'ar' => 'كشف حساب عميل'],
'supplier_statement' => ['en' => 'Supplier Statement', 'ar' => 'كشف حساب مورد'],
'expiry_report' => ['en' => 'Expiry Report', 'ar' => 'تقرير انتهاء الصلاحية'],
'low_stock_report' => ['en' => 'Low Stock Report', 'ar' => 'تقرير نواقص المخزون'],
'settings' => ['en' => 'Company Profile', 'ar' => 'ملف الشركة'],
'devices' => ['en' => 'Biometric Devices', 'ar' => 'أجهزة البصمة'],
'hr_departments' => ['en' => 'HR Departments', 'ar' => 'أقسام الموارد البشرية'],
'hr_employees' => ['en' => 'HR Employees', 'ar' => 'موظفي الموارد البشرية'],
'hr_attendance' => ['en' => 'HR Attendance', 'ar' => 'حضور الموارد البشرية'],
'hr_payroll' => ['en' => 'HR Payroll', 'ar' => 'رواتب الموارد البشرية'],
'cashflow_report' => ['en' => 'Cashflow Statement', 'ar' => 'قائمة التدفقات النقدية'],
'loyalty_history' => ['en' => 'Loyalty History', 'ar' => 'سجل الولاء'],
'users' => ['en' => 'User Management', 'ar' => 'إدارة المستخدمين'],
'backups' => ['en' => 'Database Backups', 'ar' => 'نسخ قاعدة البيانات'],
'role_groups' => ['en' => 'Role Groups', 'ar' => 'مجموعات الأدوار'],
'scale_devices' => ['en' => 'POS Devices', 'ar' => 'أجهزة نقاط البيع'],
'customer_display_settings' => ['en' => 'Customer Display', 'ar' => 'شاشة العميل'],
'cash_registers' => ['en' => 'Cash Registers', 'ar' => 'خزائن الكاشير'],
'register_sessions' => ['en' => 'Register Sessions', 'ar' => 'جلسات الكاشير'],
];
$currTitle = $titles[$page] ?? $titles['dashboard'];
?>
<span data-en="<?= $currTitle['en'] ?>" data-ar="<?= $currTitle['ar'] ?>"><?= $currTitle['en'] ?></span>
</h4>
<h4 class="m-0"><?= $titles[$page][$lang] ?? $titles['dashboard'][$lang] ?></h4>
</div>
<div class="d-flex align-items-center">
<div class="dropdown me-3">
<button class="btn btn-outline-secondary btn-sm dropdown-toggle" type="button" data-bs-toggle="dropdown">
<i class="bi bi-palette"></i> <span data-en="Theme" data-ar="المظهر">Theme</span>
<i class="bi bi-palette"></i> <span><?= $lang === 'ar' ? 'المظهر' : 'Theme' ?></span>
</button>
<ul class="dropdown-menu shadow-sm border-0">
<li><a class="dropdown-item d-flex align-items-center theme-select" href="#" data-theme="default"><span class="rounded-circle me-2" style="width:12px; height:12px; background:#0f172a;"></span> Default</a></li>
<li><a class="dropdown-item d-flex align-items-center theme-select" href="#" data-theme="dark"><span class="rounded-circle me-2" style="width:12px; height:12px; background:#1e293b;"></span> Midnight</a></li>
<li><a class="dropdown-item d-flex align-items-center theme-select" href="#" data-theme="ocean"><span class="rounded-circle me-2" style="width:12px; height:12px; background:#083344;"></span> Ocean</a></li>
<li><a class="dropdown-item d-flex align-items-center theme-select" href="#" data-theme="forest"><span class="rounded-circle me-2" style="width:12px; height:12px; background:#064e3b;"></span> Forest</a></li>
<li><a class="dropdown-item d-flex align-items-center theme-select" href="#" data-theme="sunset"><span class="rounded-circle me-2" style="width:12px; height:12px; background:#451a03;"></span> Sunset</a></li>
<li><a class="dropdown-item d-flex align-items-center theme-select" href="#" data-theme="default"><span class="rounded-circle me-2" style="width:12px; height:12px; background:#0f172a;"></span> <?= $lang === 'ar' ? 'الافتراضي' : 'Default' ?></a></li>
<li><a class="dropdown-item d-flex align-items-center theme-select" href="#" data-theme="dark"><span class="rounded-circle me-2" style="width:12px; height:12px; background:#1e293b;"></span> <?= $lang === 'ar' ? 'ليلي' : 'Midnight' ?></a></li>
<li><a class="dropdown-item d-flex align-items-center theme-select" href="#" data-theme="ocean"><span class="rounded-circle me-2" style="width:12px; height:12px; background:#083344;"></span> <?= $lang === 'ar' ? 'محيط' : 'Ocean' ?></a></li>
<li><a class="dropdown-item d-flex align-items-center theme-select" href="#" data-theme="forest"><span class="rounded-circle me-2" style="width:12px; height:12px; background:#064e3b;"></span> <?= $lang === 'ar' ? 'غابة' : 'Forest' ?></a></li>
<li><a class="dropdown-item d-flex align-items-center theme-select" href="#" data-theme="sunset"><span class="rounded-circle me-2" style="width:12px; height:12px; background:#451a03;"></span> <?= $lang === 'ar' ? 'غروب' : 'Sunset' ?></a></li>
</ul>
</div>
<button id="langToggle" class="btn btn-outline-secondary btn-sm me-3">
<i class="bi bi-translate"></i> <span data-en="العربية" data-ar="English">العربية</span>
</button>
<a href="?lang=<?= $lang === 'ar' ? 'en' : 'ar' ?>" class="btn btn-outline-secondary btn-sm me-3">
<i class="bi bi-translate"></i> <span><?= $lang === 'ar' ? 'English' : 'العربية' ?></span>
</a>
<div class="me-3 d-none d-md-block text-end">
<div class="fw-bold small">
<a href="index.php?page=my_profile" class="text-dark text-decoration-none">
@ -2081,7 +2082,7 @@ $projectDescription = $_SERVER['PROJECT_DESCRIPTION'] ?? 'Accounting System';
<div class="text-muted" style="font-size: 0.7rem;"><?= htmlspecialchars((string)($_SESSION['user_role_name'] ?? '')) ?></div>
</div>
<div class="dropdown">
<a href="index.php?page=my_profile" class="btn btn-light rounded-circle p-0 overflow-hidden shadow-sm d-inline-block position-relative" style="width: 40px; height: 40px;" title="Edit Profile">
<a href="index.php?page=my_profile" class="btn btn-light rounded-circle p-0 overflow-hidden shadow-sm d-inline-block position-relative" style="width: 40px; height: 40px;" title="<?= __('edit') ?>">
<?php if (!empty($_SESSION['profile_pic'])): ?>
<img src="<?= htmlspecialchars($_SESSION['profile_pic']) ?>?v=<?= time() ?>" alt="Profile" style="width: 100%; height: 100%; object-fit: cover;">
<?php else: ?>
@ -2095,10 +2096,10 @@ $projectDescription = $_SERVER['PROJECT_DESCRIPTION'] ?? 'Accounting System';
<i class="bi bi-chevron-down small"></i>
</button>
<ul class="dropdown-menu dropdown-menu-end border-0 shadow-sm rounded-3 mt-2">
<li><a class="dropdown-item py-2" href="index.php?page=my_profile"><i class="bi bi-person-badge me-2"></i> My Profile</a></li>
<li><a class="dropdown-item py-2" href="index.php?page=settings"><i class="bi bi-gear me-2"></i> Company Settings</a></li>
<li><a class="dropdown-item py-2" href="index.php?page=my_profile"><i class="bi bi-person-badge me-2"></i> <?= $lang === 'ar' ? 'ملفي الشخصي' : 'My Profile' ?></a></li>
<li><a class="dropdown-item py-2" href="index.php?page=settings"><i class="bi bi-gear me-2"></i> <?= $lang === 'ar' ? 'إعدادات الشركة' : 'Company Settings' ?></a></li>
<li><hr class="dropdown-divider"></li>
<li><a class="dropdown-item py-2 text-danger" href="index.php?action=logout"><i class="bi bi-box-arrow-right me-2"></i> Logout</a></li>
<li><a class="dropdown-item py-2 text-danger" href="index.php?action=logout"><i class="bi bi-box-arrow-right me-2"></i> <?= __('logout') ?></a></li>
</ul>
</div>
</div>
@ -2165,7 +2166,7 @@ $projectDescription = $_SERVER['PROJECT_DESCRIPTION'] ?? 'Accounting System';
<div class="card p-3 border-start border-primary border-4 h-100">
<div class="d-flex align-items-center">
<div class="flex-grow-1">
<div class="text-muted small" data-en="Total Sales" data-ar="إجمالي المبيعات">Total Sales</div>
<div class="text-muted small"><?= __('total_sales') ?></div>
<div class="h4 m-0">OMR <?= number_format((float)($data['stats']['total_sales'] ?? 0), 3) ?></div>
</div>
<div class="ms-3">
@ -2178,7 +2179,7 @@ $projectDescription = $_SERVER['PROJECT_DESCRIPTION'] ?? 'Accounting System';
<div class="card p-3 border-start border-warning border-4 h-100">
<div class="d-flex align-items-center">
<div class="flex-grow-1">
<div class="text-muted small" data-en="Total Received" data-ar="إجمالي المبالغ المحصلة">Total Received</div>
<div class="text-muted small"><?= __('total_received') ?></div>
<div class="h4 m-0">OMR <?= number_format((float)($data['stats']['total_received'] ?? 0), 3) ?></div>
</div>
<div class="ms-3">
@ -2191,7 +2192,7 @@ $projectDescription = $_SERVER['PROJECT_DESCRIPTION'] ?? 'Accounting System';
<div class="card p-3 border-start border-danger border-4 h-100">
<div class="d-flex align-items-center">
<div class="flex-grow-1">
<div class="text-muted small" data-en="Customer Due" data-ar="مستحقات العملاء">Customer Due</div>
<div class="text-muted small"><?= __('customer_due') ?></div>
<div class="h4 m-0">OMR <?= number_format((float)($data['stats']['total_receivable'] ?? 0), 3) ?></div>
</div>
<div class="ms-3">
@ -2204,7 +2205,7 @@ $projectDescription = $_SERVER['PROJECT_DESCRIPTION'] ?? 'Accounting System';
<div class="card p-3 border-start border-dark border-4 h-100 bg-light">
<div class="d-flex align-items-center">
<div class="flex-grow-1">
<div class="text-muted small" data-en="Total Purchases" data-ar="إجمالي المشتريات">Total Purchases</div>
<div class="text-muted small"><?= __('total_purchases') ?></div>
<div class="h4 m-0">OMR <?= number_format((float)($data['stats']['total_purchases'] ?? 0), 3) ?></div>
</div>
<div class="ms-3">
@ -2220,7 +2221,7 @@ $projectDescription = $_SERVER['PROJECT_DESCRIPTION'] ?? 'Accounting System';
<div class="card p-3 border-start border-info border-4 h-100 bg-light">
<div class="d-flex align-items-center">
<div class="flex-grow-1">
<div class="text-muted small" data-en="Total Paid" data-ar="إجمالي المدفوع">Total Paid</div>
<div class="text-muted small"><?= __('total_paid') ?></div>
<div class="h4 m-0">OMR <?= number_format((float)($data['stats']['total_paid'] ?? 0), 3) ?></div>
</div>
<div class="ms-3">
@ -2233,7 +2234,7 @@ $projectDescription = $_SERVER['PROJECT_DESCRIPTION'] ?? 'Accounting System';
<div class="card p-3 border-start border-secondary border-4 h-100 bg-light">
<div class="d-flex align-items-center">
<div class="flex-grow-1">
<div class="text-muted small" data-en="Supplier Due" data-ar="مستحقات الموردين">Supplier Due</div>
<div class="text-muted small"><?= __('supplier_due') ?></div>
<div class="h4 m-0">OMR <?= number_format((float)($data['stats']['total_payable'] ?? 0), 3) ?></div>
</div>
<div class="ms-3">
@ -2246,7 +2247,7 @@ $projectDescription = $_SERVER['PROJECT_DESCRIPTION'] ?? 'Accounting System';
<div class="card p-3 border-start border-success border-4 h-100">
<div class="d-flex align-items-center">
<div class="flex-grow-1">
<div class="text-muted small" data-en="Total Customers" data-ar="إجمالي العملاء">Total Customers</div>
<div class="text-muted small"><?= __('total_customers') ?></div>
<div class="h4 m-0"><?= (int)($data['stats']['total_customers'] ?? 0) ?></div>
</div>
<div class="ms-3">

View File

@ -46,3 +46,6 @@
2026-02-19 05:18:39 - POST: {"action":"save_pos_transaction","customer_id":"","payments":"[{\"method\":\"cash\",\"amount\":0.595}]","total_amount":"0.595","discount_code_id":"","discount_amount":"0","loyalty_redeemed":"0","items":"[{\"id\":1,\"qty\":1,\"price\":0.3825},{\"id\":2,\"qty\":1,\"price\":0.2125}]"}
2026-02-19 05:18:51 - POST: {"open_register":"1","register_id":"1","opening_balance":"0"}
2026-02-19 05:47:55 - POST: {"action":"save_pos_transaction","customer_id":"","payments":"[{\"method\":\"cash\",\"amount\":0.595}]","total_amount":"0.595","discount_code_id":"","discount_amount":"0","loyalty_redeemed":"0","items":"[{\"id\":1,\"qty\":1,\"price\":0.3825},{\"id\":2,\"qty\":1,\"price\":0.2125}]"}
2026-02-19 05:59:46 - POST: {"action":"save_pos_transaction","customer_id":"","payments":"[{\"method\":\"cash\",\"amount\":0.595}]","total_amount":"0.595","discount_code_id":"","discount_amount":"0","loyalty_redeemed":"0","items":"[{\"id\":1,\"qty\":1,\"price\":0.3825},{\"id\":2,\"qty\":1,\"price\":0.2125}]"}
2026-02-19 06:00:05 - POST: {"action":"save_pos_transaction","customer_id":"","payments":"[{\"method\":\"cash\",\"amount\":0.595}]","total_amount":"0.595","discount_code_id":"","discount_amount":"0","loyalty_redeemed":"0","items":"[{\"id\":1,\"qty\":1,\"price\":0.3825},{\"id\":2,\"qty\":1,\"price\":0.2125}]"}
2026-02-19 06:00:51 - POST: {"action":"save_pos_transaction","customer_id":"","payments":"[{\"method\":\"cash\",\"amount\":0.595}]","total_amount":"0.595","discount_code_id":"","discount_amount":"0","loyalty_redeemed":"0","items":"[{\"id\":1,\"qty\":1,\"price\":0.3825},{\"id\":2,\"qty\":1,\"price\":0.2125}]"}