1697 lines
128 KiB
HTML
1697 lines
128 KiB
HTML
<!doctype html>
|
|
<html lang="ar" dir="rtl">
|
|
<head>
|
|
<meta charset="utf-8" />
|
|
<meta name="viewport" content="width=device-width, initial-scale=1" />
|
|
<title>الديون والفواتير الآجلة · حلوى الريامي | Al Riyami Sweets</title>
|
|
<meta name="description" content='حلوى الريامي: Simplify sweets sales with multilingual POS, stock management, and detailed reports for multi-branch effic' />
|
|
<meta property="og:description" content="حلوى الريامي: Simplify sweets sales with multilingual POS, stock management, and detailed reports for multi-branch effic" />
|
|
<meta property="twitter:description" content="حلوى الريامي: Simplify sweets sales with multilingual POS, stock management, and detailed reports for multi-branch effic" />
|
|
<meta property="og:image" content="https://project-screens.s3.amazonaws.com/screenshots/39728/app-hero-20260419-014257.png" />
|
|
<meta property="twitter:image" content="https://project-screens.s3.amazonaws.com/screenshots/39728/app-hero-20260419-014257.png" />
|
|
<meta name="theme-color" content="#343a40" />
|
|
|
|
|
|
<link href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.3/dist/css/bootstrap.min.css" rel="stylesheet" crossorigin="anonymous">
|
|
|
|
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/bootstrap-icons@1.11.3/font/bootstrap-icons.min.css">
|
|
<link rel="stylesheet" href="assets/css/custom.css?v=202604232010">
|
|
<script src="https://cdn.jsdelivr.net/npm/sweetalert2@11"></script>
|
|
</head>
|
|
<body class="">
|
|
|
|
<!-- Private Admin Layout -->
|
|
<div class="d-flex" id="wrapper">
|
|
<!-- Sidebar -->
|
|
<div class="border-end bg-dark text-white shadow-sm" id="sidebar-wrapper">
|
|
<div class="sidebar-heading text-center py-4 fs-5 fw-bold text-uppercase border-bottom border-secondary d-flex flex-column align-items-center">
|
|
<i class="bi bi-shop me-2 fs-2 mb-2"></i>
|
|
<span>حلوى الريامي</span>
|
|
</div>
|
|
|
|
<div class="p-3 text-center border-bottom border-secondary">
|
|
<div class="fw-semibold">مالك النظام</div>
|
|
<div class="text-white-50 small">مالك / مدير عام · الفرع الرئيسي</div>
|
|
</div>
|
|
|
|
<div class="list-group list-group-flush my-3 pb-5" id="sidebar-navigation">
|
|
<a class="list-group-item list-group-item-action " href="index.php?lang=ar">
|
|
<i class="bi bi-speedometer2"></i> لوحة التحكم </a>
|
|
|
|
<!-- المخزون (Inventory) - Now First -->
|
|
<a class="list-group-item list-group-item-action collapsed" data-bs-toggle="collapse" href="#collapseStock" role="button" aria-expanded="false" aria-controls="collapseStock">
|
|
<div class="d-flex justify-content-between align-items-center w-100">
|
|
<span><i class="bi bi-box-seam"></i> المخزون</span>
|
|
<i class="bi bi-chevron-down toggle-icon" style="transition: transform 0.2s;"></i>
|
|
</div>
|
|
</a>
|
|
<div class="collapse " id="collapseStock" data-bs-parent="#sidebar-navigation">
|
|
<div class="list-group list-group-flush" style="background-color: rgba(0,0,0,0.15);">
|
|
<a class="list-group-item list-group-item-action " href="stock.php?lang=ar" style="padding-left: 2.5rem; padding-right: 2.5rem;">
|
|
<i class="bi bi-dot"></i> قائمة الأصناف </a>
|
|
<a class="list-group-item list-group-item-action " href="categories.php?lang=ar" style="padding-left: 2.5rem; padding-right: 2.5rem;">
|
|
<i class="bi bi-dot"></i> التصنيفات </a>
|
|
<a class="list-group-item list-group-item-action " href="units.php?lang=ar" style="padding-left: 2.5rem; padding-right: 2.5rem;">
|
|
<i class="bi bi-dot"></i> الوحدات </a>
|
|
</div>
|
|
</div>
|
|
|
|
<!-- المبيعات (Sales) - Now Collapsible -->
|
|
<a class="list-group-item list-group-item-action collapsed" data-bs-toggle="collapse" href="#collapseSales" role="button" aria-expanded="false" aria-controls="collapseSales">
|
|
<div class="d-flex justify-content-between align-items-center w-100">
|
|
<span><i class="bi bi-cart"></i> المبيعات</span>
|
|
<i class="bi bi-chevron-down toggle-icon" style="transition: transform 0.2s;"></i>
|
|
</div>
|
|
</a>
|
|
<div class="collapse " id="collapseSales" data-bs-parent="#sidebar-navigation">
|
|
<div class="list-group list-group-flush" style="background-color: rgba(0,0,0,0.15);">
|
|
<a class="list-group-item list-group-item-action " href="sales.php?lang=ar" style="padding-left: 2.5rem; padding-right: 2.5rem;">
|
|
<i class="bi bi-dot"></i> قائمة الفواتير </a>
|
|
<a class="list-group-item list-group-item-action " href="sales.php?status=order&lang=ar" style="padding-left: 2.5rem; padding-right: 2.5rem;">
|
|
<i class="bi bi-dot"></i> الطلبات </a>
|
|
<a class="list-group-item list-group-item-action " href="online_orders.php?lang=ar" style="padding-left: 2.5rem; padding-right: 2.5rem;">
|
|
<i class="bi bi-dot"></i> طلبات المتجر </a>
|
|
<a class="list-group-item list-group-item-action " href="normal_sale.php?lang=ar" style="padding-left: 2.5rem; padding-right: 2.5rem;">
|
|
<i class="bi bi-dot"></i> فاتورة جديدة </a>
|
|
<a class="list-group-item list-group-item-action " href="pos.php?lang=ar" style="padding-left: 2.5rem; padding-right: 2.5rem;">
|
|
<i class="bi bi-dot"></i> نقاط البيع </a>
|
|
</div>
|
|
</div>
|
|
|
|
<!-- طلبات العيد (Eid Orders) -->
|
|
<a class="list-group-item list-group-item-action collapsed" data-bs-toggle="collapse" href="#collapseEid" role="button" aria-expanded="false" aria-controls="collapseEid">
|
|
<div class="d-flex justify-content-between align-items-center w-100">
|
|
<span><i class="bi bi-gift"></i> طلبات العيد</span>
|
|
<i class="bi bi-chevron-down toggle-icon" style="transition: transform 0.2s;"></i>
|
|
</div>
|
|
</a>
|
|
<div class="collapse " id="collapseEid" data-bs-parent="#sidebar-navigation">
|
|
<div class="list-group list-group-flush" style="background-color: rgba(0,0,0,0.15);">
|
|
<a class="list-group-item list-group-item-action " href="eid_orders.php?lang=ar" style="padding-left: 2.5rem; padding-right: 2.5rem;">
|
|
<i class="bi bi-dot"></i> طلبات العيد </a>
|
|
<a class="list-group-item list-group-item-action " href="eid_sale.php?lang=ar" style="padding-left: 2.5rem; padding-right: 2.5rem;">
|
|
<i class="bi bi-dot"></i> طلب عيد جديد </a>
|
|
</div>
|
|
</div>
|
|
|
|
<a class="list-group-item list-group-item-action collapsed" data-bs-toggle="collapse" href="#collapsePurchases" role="button" aria-expanded="false" aria-controls="collapsePurchases">
|
|
<div class="d-flex justify-content-between align-items-center w-100">
|
|
<span><i class="bi bi-bag-plus"></i> المشتريات</span>
|
|
<i class="bi bi-chevron-down toggle-icon" style="transition: transform 0.2s;"></i>
|
|
</div>
|
|
</a>
|
|
<div class="collapse " id="collapsePurchases" data-bs-parent="#sidebar-navigation">
|
|
<div class="list-group list-group-flush" style="background-color: rgba(0,0,0,0.15);">
|
|
<a class="list-group-item list-group-item-action " href="purchases.php?lang=ar" style="padding-left: 2.5rem; padding-right: 2.5rem;">
|
|
<i class="bi bi-dot"></i> قائمة المشتريات </a>
|
|
<a class="list-group-item list-group-item-action " href="new_purchase.php?lang=ar" style="padding-left: 2.5rem; padding-right: 2.5rem;">
|
|
<i class="bi bi-dot"></i> فاتورة مشتريات جديدة </a>
|
|
</div>
|
|
</div>
|
|
<!-- المصروفات (Expenses) -->
|
|
<a class="list-group-item list-group-item-action collapsed" data-bs-toggle="collapse" href="#collapseExpenses" role="button" aria-expanded="false" aria-controls="collapseExpenses">
|
|
<div class="d-flex justify-content-between align-items-center w-100">
|
|
<span><i class="bi bi-wallet2"></i> المصروفات</span>
|
|
<i class="bi bi-chevron-down toggle-icon" style="transition: transform 0.2s;"></i>
|
|
</div>
|
|
</a>
|
|
<div class="collapse " id="collapseExpenses" data-bs-parent="#sidebar-navigation">
|
|
<div class="list-group list-group-flush" style="background-color: rgba(0,0,0,0.15);">
|
|
<a class="list-group-item list-group-item-action " href="expenses.php?lang=ar" style="padding-left: 2.5rem; padding-right: 2.5rem;">
|
|
<i class="bi bi-dot"></i> قائمة المصروفات </a>
|
|
<a class="list-group-item list-group-item-action " href="expense_categories.php?lang=ar" style="padding-left: 2.5rem; padding-right: 2.5rem;">
|
|
<i class="bi bi-dot"></i> تصنيفات المصروفات </a>
|
|
</div>
|
|
</div>
|
|
|
|
<a class="list-group-item list-group-item-action " href="suppliers.php?lang=ar">
|
|
<i class="bi bi-truck"></i> الموردون </a>
|
|
<a class="list-group-item list-group-item-action " href="customers.php?lang=ar">
|
|
<i class="bi bi-people-fill"></i> العملاء </a>
|
|
<a class="list-group-item list-group-item-action active" href="debts.php?lang=ar">
|
|
<i class="bi bi-journal-text"></i> الديون والفواتير الآجلة </a>
|
|
<a class="list-group-item list-group-item-action " href="reports.php?lang=ar">
|
|
<i class="bi bi-bar-chart"></i> التقارير </a>
|
|
<a class="list-group-item list-group-item-action " href="users.php?lang=ar">
|
|
<i class="bi bi-people"></i> المستخدمون والأدوار </a>
|
|
|
|
<a class="list-group-item list-group-item-action collapsed" data-bs-toggle="collapse" href="#collapseSettings" role="button" aria-expanded="false" aria-controls="collapseSettings">
|
|
<div class="d-flex justify-content-between align-items-center w-100">
|
|
<span><i class="bi bi-gear"></i> الإعدادات</span>
|
|
<i class="bi bi-chevron-down toggle-icon" style="transition: transform 0.2s;"></i>
|
|
</div>
|
|
</a>
|
|
<div class="collapse " id="collapseSettings" data-bs-parent="#sidebar-navigation">
|
|
<div class="list-group list-group-flush" style="background-color: rgba(0,0,0,0.15);">
|
|
<a class="list-group-item list-group-item-action" href="#" data-bs-toggle="modal" data-bs-target="#settingsModal" style="padding-left: 2.5rem; padding-right: 2.5rem;">
|
|
<i class="bi bi-dot"></i> إعدادات الشركة </a>
|
|
<a class="list-group-item list-group-item-action " href="outlets.php?lang=ar" style="padding-left: 2.5rem; padding-right: 2.5rem;">
|
|
<i class="bi bi-dot"></i> الفروع (المنافذ) </a>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
<!-- /#sidebar-wrapper -->
|
|
|
|
<!-- Page Content -->
|
|
<div id="page-content-wrapper" class="d-flex flex-column min-vh-100">
|
|
<nav class="navbar navbar-expand-lg navbar-light bg-white border-bottom top-navbar px-3">
|
|
<div class="d-flex align-items-center justify-content-between w-100">
|
|
<div class="d-flex align-items-center">
|
|
<button class="btn btn-outline-secondary me-2" id="menu-toggle"><i class="bi bi-list"></i></button>
|
|
<h4 class="mb-0 ms-2 fw-semibold d-none d-md-block">الديون والفواتير الآجلة</h4>
|
|
</div>
|
|
|
|
<div class="d-flex align-items-center gap-3">
|
|
<a href="shop.php" target="_blank" class="btn btn-outline-success btn-sm me-2" title="زيارة المتجر"><i class="bi bi-shop"></i> <span class="d-none d-md-inline">المتجر</span></a>
|
|
<div class="language-switcher btn-group" role="group">
|
|
<a class="btn btn-sm btn-primary" href="debts.php?lang=ar">AR</a>
|
|
<a class="btn btn-sm btn-outline-primary" href="debts.php?lang=en">EN</a>
|
|
</div>
|
|
|
|
<div class="dropdown">
|
|
<button class="btn btn-light dropdown-toggle border" type="button" id="userMenu" data-bs-toggle="dropdown" aria-expanded="false">
|
|
<img src="assets/images/users/9869519f5f02861e6471bb2219173462.webp" alt="Avatar" class="rounded-circle me-1" style="width: 24px; height: 24px; object-fit: cover;">مالك النظام </button>
|
|
<ul class="dropdown-menu dropdown-menu-end shadow" aria-labelledby="userMenu">
|
|
<li><a class="dropdown-item" href="profile.php?lang=ar"><i class="bi bi-person me-2 text-primary"></i> الملف الشخصي</a></li>
|
|
<li><hr class="dropdown-divider"></li>
|
|
<li><a class="dropdown-item" href="logout.php?lang=ar"><i class="bi bi-box-arrow-right text-danger me-2"></i> تسجيل الخروج</a></li>
|
|
</ul>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</nav>
|
|
|
|
<div class="container-fluid p-4">
|
|
<!-- Flash messages integration using SweetAlert2 -->
|
|
<script>
|
|
document.addEventListener('DOMContentLoaded', function() {
|
|
Swal.fire({
|
|
icon: 'success',
|
|
title: 'تم تسجيل الدخول بنجاح.',
|
|
toast: true,
|
|
position: 'top-end',
|
|
showConfirmButton: false,
|
|
timer: 3000,
|
|
timerProgressBar: true
|
|
});
|
|
});
|
|
</script>
|
|
|
|
<div class="d-flex justify-content-between align-items-center mb-4">
|
|
<h1 class="h3 mb-0 text-gray-800">الديون والفواتير الآجلة</h1>
|
|
</div>
|
|
|
|
|
|
<div class="row">
|
|
<!-- Debts by Customer -->
|
|
<div class="col-lg-4 mb-4">
|
|
<div class="card shadow-sm border-0 h-100">
|
|
<div class="card-header bg-white border-bottom-0 pt-4 pb-0">
|
|
<h6 class="m-0 font-weight-bold text-primary"><i class="bi bi-people"></i> الديون حسب العميل</h6>
|
|
</div>
|
|
<div class="card-body">
|
|
<ul class="list-group list-group-flush">
|
|
<li class="list-group-item d-flex justify-content-between align-items-center px-0">
|
|
<div>
|
|
<strong>Moosa Ali Al-Abri</strong>
|
|
<div class="small text-muted" dir="ltr">99359472</div>
|
|
<div class="small text-muted">7 فواتير مفتوحة</div>
|
|
<div class="small text-warning">3 منها دفعات جزئية</div>
|
|
</div>
|
|
<span class="badge bg-danger rounded-pill fs-6">280.410 ر.ع</span>
|
|
</li>
|
|
<li class="list-group-item d-flex justify-content-between align-items-center px-0">
|
|
<div>
|
|
<strong>عميل غير معروف</strong>
|
|
<div class="small text-muted">3 فواتير مفتوحة</div>
|
|
<div class="small text-warning">1 منها دفعات جزئية</div>
|
|
</div>
|
|
<span class="badge bg-danger rounded-pill fs-6">8.122 ر.ع</span>
|
|
</li>
|
|
</ul>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
|
|
<!-- Unpaid Invoices -->
|
|
<div class="col-lg-8 mb-4">
|
|
<div class="card shadow-sm border-0 h-100">
|
|
<div class="card-header bg-white border-bottom-0 pt-4 pb-0">
|
|
<h6 class="m-0 font-weight-bold text-primary"><i class="bi bi-receipt"></i> الفواتير غير المدفوعة والجزئية</h6>
|
|
</div>
|
|
<div class="card-body p-0">
|
|
<div class="table-responsive">
|
|
<table class="table table-hover align-middle mb-0">
|
|
<thead class="table-light">
|
|
<tr>
|
|
<th>رقم الفاتورة</th>
|
|
<th>العميل</th>
|
|
<th>الهاتف</th>
|
|
<th>التاريخ</th>
|
|
<th>الإجمالي</th>
|
|
<th>المدفوع</th>
|
|
<th>المتبقي</th>
|
|
<th>الحالة</th>
|
|
<th>الإجراء</th>
|
|
</tr>
|
|
</thead>
|
|
<tbody>
|
|
<tr>
|
|
<td>
|
|
<a href="sale.php?id=28&lang=ar" class="fw-bold text-decoration-none">
|
|
6 </a>
|
|
</td>
|
|
<td>Moosa Ali Al-Abri</td>
|
|
<td dir="ltr">-</td>
|
|
<td>2026-04-22</td>
|
|
<td class="fw-semibold">3.150 ر.ع</td>
|
|
<td class="text-primary">0.000 ر.ع</td>
|
|
<td class="fw-bold text-danger">3.150 ر.ع</td>
|
|
<td>
|
|
<span class="badge bg-danger text-white">غير مدفوعة</span>
|
|
</td>
|
|
<td>
|
|
<button class="btn btn-sm btn-outline-success rounded-pill px-3" onclick="receivePayment(28, 3.15, false)">
|
|
<i class="bi bi-cash-coin"></i> استلام دفعة </button>
|
|
</td>
|
|
</tr>
|
|
<tr>
|
|
<td>
|
|
<a href="sale.php?id=27&lang=ar" class="fw-bold text-decoration-none">
|
|
5 </a>
|
|
</td>
|
|
<td>Moosa Ali Al-Abri</td>
|
|
<td dir="ltr">-</td>
|
|
<td>2026-04-22</td>
|
|
<td class="fw-semibold">1,260.000 ر.ع</td>
|
|
<td class="text-primary">1,000.000 ر.ع</td>
|
|
<td class="fw-bold text-danger">260.000 ر.ع</td>
|
|
<td>
|
|
<span class="badge bg-warning text-dark">مدفوعة جزئياً</span>
|
|
</td>
|
|
<td>
|
|
<button class="btn btn-sm btn-outline-success rounded-pill px-3" onclick="receivePayment(27, 260, false)">
|
|
<i class="bi bi-cash-coin"></i> استلام دفعة </button>
|
|
</td>
|
|
</tr>
|
|
<tr>
|
|
<td>
|
|
<a href="sale.php?id=26&lang=ar" class="fw-bold text-decoration-none">
|
|
4 </a>
|
|
</td>
|
|
<td>-</td>
|
|
<td dir="ltr">-</td>
|
|
<td>2026-04-22</td>
|
|
<td class="fw-semibold">2.830 ر.ع</td>
|
|
<td class="text-primary">2.828 ر.ع</td>
|
|
<td class="fw-bold text-danger">0.002 ر.ع</td>
|
|
<td>
|
|
<span class="badge bg-warning text-dark">مدفوعة جزئياً</span>
|
|
</td>
|
|
<td>
|
|
<button class="btn btn-sm btn-outline-success rounded-pill px-3" onclick="receivePayment(26, 0.002, false)">
|
|
<i class="bi bi-cash-coin"></i> استلام دفعة </button>
|
|
</td>
|
|
</tr>
|
|
<tr>
|
|
<td>
|
|
<a href="sale.php?id=23&lang=ar" class="fw-bold text-decoration-none">
|
|
877100 </a>
|
|
</td>
|
|
<td>Moosa Ali Al-Abri</td>
|
|
<td dir="ltr">-</td>
|
|
<td>2026-04-22</td>
|
|
<td class="fw-semibold">5.250 ر.ع</td>
|
|
<td class="text-primary">2.000 ر.ع</td>
|
|
<td class="fw-bold text-danger">3.250 ر.ع</td>
|
|
<td>
|
|
<span class="badge bg-warning text-dark">مدفوعة جزئياً</span>
|
|
</td>
|
|
<td>
|
|
<button class="btn btn-sm btn-outline-success rounded-pill px-3" onclick="receivePayment(23, 3.25, false)">
|
|
<i class="bi bi-cash-coin"></i> استلام دفعة </button>
|
|
</td>
|
|
</tr>
|
|
<tr>
|
|
<td>
|
|
<a href="sale.php?id=22&lang=ar" class="fw-bold text-decoration-none">
|
|
900748 </a>
|
|
</td>
|
|
<td>Moosa Ali Al-Abri</td>
|
|
<td dir="ltr">-</td>
|
|
<td>2026-04-21</td>
|
|
<td class="fw-semibold">2.830 ر.ع</td>
|
|
<td class="text-primary">1.000 ر.ع</td>
|
|
<td class="fw-bold text-danger">1.830 ر.ع</td>
|
|
<td>
|
|
<span class="badge bg-warning text-dark">مدفوعة جزئياً</span>
|
|
</td>
|
|
<td>
|
|
<button class="btn btn-sm btn-outline-success rounded-pill px-3" onclick="receivePayment(22, 1.83, false)">
|
|
<i class="bi bi-cash-coin"></i> استلام دفعة </button>
|
|
</td>
|
|
</tr>
|
|
<tr>
|
|
<td>
|
|
<a href="sale.php?id=19&lang=ar" class="fw-bold text-decoration-none">
|
|
132196 </a>
|
|
</td>
|
|
<td>Moosa Ali Al-Abri</td>
|
|
<td dir="ltr">-</td>
|
|
<td>2026-04-20</td>
|
|
<td class="fw-semibold">5.490 ر.ع</td>
|
|
<td class="text-primary">0.000 ر.ع</td>
|
|
<td class="fw-bold text-danger">5.490 ر.ع</td>
|
|
<td>
|
|
<span class="badge bg-danger text-white">غير مدفوعة</span>
|
|
</td>
|
|
<td>
|
|
<button class="btn btn-sm btn-outline-success rounded-pill px-3" onclick="receivePayment(19, 5.49, false)">
|
|
<i class="bi bi-cash-coin"></i> استلام دفعة </button>
|
|
</td>
|
|
</tr>
|
|
<tr>
|
|
<td>
|
|
<a href="sale.php?id=18&lang=ar" class="fw-bold text-decoration-none">
|
|
968774 </a>
|
|
</td>
|
|
<td>Moosa Ali Al-Abri</td>
|
|
<td dir="ltr">-</td>
|
|
<td>2026-04-20</td>
|
|
<td class="fw-semibold">3.150 ر.ع</td>
|
|
<td class="text-primary">0.000 ر.ع</td>
|
|
<td class="fw-bold text-danger">3.150 ر.ع</td>
|
|
<td>
|
|
<span class="badge bg-danger text-white">غير مدفوعة</span>
|
|
</td>
|
|
<td>
|
|
<button class="btn btn-sm btn-outline-success rounded-pill px-3" onclick="receivePayment(18, 3.15, false)">
|
|
<i class="bi bi-cash-coin"></i> استلام دفعة </button>
|
|
</td>
|
|
</tr>
|
|
<tr>
|
|
<td>
|
|
<a href="sale.php?id=17&lang=ar" class="fw-bold text-decoration-none">
|
|
911033 </a>
|
|
</td>
|
|
<td>-</td>
|
|
<td dir="ltr">-</td>
|
|
<td>2026-04-20</td>
|
|
<td class="fw-semibold">5.490 ر.ع</td>
|
|
<td class="text-primary">0.000 ر.ع</td>
|
|
<td class="fw-bold text-danger">5.490 ر.ع</td>
|
|
<td>
|
|
<span class="badge bg-danger text-white">غير مدفوعة</span>
|
|
</td>
|
|
<td>
|
|
<button class="btn btn-sm btn-outline-success rounded-pill px-3" onclick="receivePayment(17, 5.49, false)">
|
|
<i class="bi bi-cash-coin"></i> استلام دفعة </button>
|
|
</td>
|
|
</tr>
|
|
<tr>
|
|
<td>
|
|
<a href="sale.php?id=16&lang=ar" class="fw-bold text-decoration-none">
|
|
859389 </a>
|
|
</td>
|
|
<td>Moosa Ali Al-Abri</td>
|
|
<td dir="ltr">-</td>
|
|
<td>2026-04-20</td>
|
|
<td class="fw-semibold">3.540 ر.ع</td>
|
|
<td class="text-primary">0.000 ر.ع</td>
|
|
<td class="fw-bold text-danger">3.540 ر.ع</td>
|
|
<td>
|
|
<span class="badge bg-danger text-white">غير مدفوعة</span>
|
|
</td>
|
|
<td>
|
|
<button class="btn btn-sm btn-outline-success rounded-pill px-3" onclick="receivePayment(16, 3.54, false)">
|
|
<i class="bi bi-cash-coin"></i> استلام دفعة </button>
|
|
</td>
|
|
</tr>
|
|
<tr>
|
|
<td>
|
|
<a href="sale.php?id=14&lang=ar" class="fw-bold text-decoration-none">
|
|
356570 </a>
|
|
</td>
|
|
<td>Moosa Ali Al-Abri</td>
|
|
<td dir="ltr">99359472</td>
|
|
<td>2026-04-20</td>
|
|
<td class="fw-semibold">2.630 ر.ع</td>
|
|
<td class="text-primary">0.000 ر.ع</td>
|
|
<td class="fw-bold text-danger">2.630 ر.ع</td>
|
|
<td>
|
|
<span class="badge bg-danger text-white">غير مدفوعة</span>
|
|
</td>
|
|
<td>
|
|
<button class="btn btn-sm btn-outline-success rounded-pill px-3" onclick="receivePayment(14, 2.63, false)">
|
|
<i class="bi bi-cash-coin"></i> استلام دفعة </button>
|
|
</td>
|
|
</tr>
|
|
</tbody>
|
|
</table>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
|
|
<script>
|
|
async function receivePayment(id, dueAmount, completeOrder = false) {
|
|
const { value: paymentAmount } = await Swal.fire({
|
|
title: 'استلام دفعة',
|
|
text: 'أدخل المبلغ المستلم لهذه الفاتورة.',
|
|
input: 'number',
|
|
inputAttributes: { min: '0.001', step: '0.001', max: String(dueAmount) },
|
|
inputValue: Number(dueAmount).toFixed(3),
|
|
showCancelButton: true,
|
|
confirmButtonColor: '#198754',
|
|
confirmButtonText: 'حفظ الدفعة',
|
|
cancelButtonText: 'إلغاء',
|
|
inputValidator: (value) => {
|
|
const amount = parseFloat(value || '0');
|
|
if (!amount || amount <= 0) {
|
|
return 'أدخل مبلغاً صحيحاً.';
|
|
}
|
|
if (amount - dueAmount > 0.0005) {
|
|
return 'المبلغ لا يمكن أن يتجاوز المتبقي.';
|
|
}
|
|
return null;
|
|
}
|
|
});
|
|
|
|
if (!paymentAmount) {
|
|
return;
|
|
}
|
|
|
|
const formData = new FormData();
|
|
formData.append('sale_id', String(id));
|
|
formData.append('payment_amount', String(paymentAmount));
|
|
if (completeOrder) {
|
|
formData.append('complete_order', '1');
|
|
}
|
|
|
|
const response = await fetch('api/sales_payment.php', { method: 'POST', body: formData });
|
|
const data = await response.json();
|
|
if (data.success) {
|
|
await Swal.fire({ icon: 'success', text: data.message, confirmButtonText: 'OK' });
|
|
window.location.reload();
|
|
} else {
|
|
Swal.fire({ icon: 'error', text: data.error || 'تعذر تسجيل الدفعة.' });
|
|
}
|
|
}
|
|
</script>
|
|
|
|
</div> <!-- /.container-fluid -->
|
|
|
|
<!-- App Footer -->
|
|
<footer class="bg-white border-top mt-auto py-3 px-4 text-muted small">
|
|
<div class="d-flex justify-content-between align-items-center flex-wrap gap-2">
|
|
<div>
|
|
© 2026 <strong>حلوى الريامي</strong>. جميع الحقوق محفوظة. </div>
|
|
<div class="d-flex align-items-center flex-wrap gap-3 mt-2 mt-md-0">
|
|
<a href="privacy-policy.php?lang=ar" class="text-decoration-none">سياسة الخصوصية</a>
|
|
<a href="terms-conditions.php?lang=ar" class="text-decoration-none">الشروط والأحكام</a>
|
|
<div>
|
|
<span class="text-secondary">تم التطوير بواسطة </span><a href="https://flatlogic.com" target="_blank" class="text-decoration-none fw-semibold">Flatlogic</a>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</footer>
|
|
<!-- /App Footer -->
|
|
|
|
</div> <!-- /#page-content-wrapper -->
|
|
</div> <!-- /#wrapper -->
|
|
<!-- Settings Modal -->
|
|
<div class="modal fade" id="settingsModal" tabindex="-1" aria-hidden="true">
|
|
<div class="modal-dialog modal-xl modal-dialog-scrollable">
|
|
<div class="modal-content">
|
|
<form action="api/settings.php" method="POST" enctype="multipart/form-data">
|
|
<div class="modal-header">
|
|
<div>
|
|
<h5 class="modal-title mb-1">إعدادات الشركة</h5>
|
|
<div class="small text-muted">إعدادات واتساب أصبحت في نافذة مستقلة حتى تظهر جميع القوالب بوضوح.</div>
|
|
</div>
|
|
<div class="d-flex align-items-center gap-2">
|
|
<button type="button" class="btn btn-outline-success btn-sm" data-open-wablas-settings="1">
|
|
<i class="bi bi-whatsapp me-1"></i>واتساب </button>
|
|
<button type="button" class="btn-close" data-bs-dismiss="modal" aria-label="Close"></button>
|
|
</div>
|
|
</div>
|
|
<div class="modal-body pb-2">
|
|
<ul class="nav nav-tabs mb-4" id="settingsTabs" role="tablist">
|
|
<li class="nav-item" role="presentation">
|
|
<button class="nav-link active" id="settings-company-tab" data-bs-toggle="tab" data-bs-target="#settings-company-pane" type="button" role="tab" aria-controls="settings-company-pane" aria-selected="true">
|
|
بيانات الشركة </button>
|
|
</li>
|
|
<li class="nav-item" role="presentation">
|
|
<button class="nav-link" id="settings-wablas-tab" data-bs-toggle="tab" data-bs-target="#settings-wablas-pane" type="button" role="tab" aria-controls="settings-wablas-pane" aria-selected="false">
|
|
واتساب </button>
|
|
</li>
|
|
<li class="nav-item" role="presentation">
|
|
<button class="nav-link" id="settings-payment-tab" data-bs-toggle="tab" data-bs-target="#settings-payment-pane" type="button" role="tab" aria-controls="settings-payment-pane" aria-selected="false">
|
|
الدفع الإلكتروني </button>
|
|
</li>
|
|
<li class="nav-item" role="presentation">
|
|
<button class="nav-link" id="settings-email-tab" data-bs-toggle="tab" data-bs-target="#settings-email-pane" type="button" role="tab" aria-controls="settings-email-pane" aria-selected="false">
|
|
البريد الإلكتروني </button>
|
|
</li>
|
|
<li class="nav-item" role="presentation">
|
|
<button class="nav-link" id="settings-policies-tab" data-bs-toggle="tab" data-bs-target="#settings-policies-pane" type="button" role="tab" aria-controls="settings-policies-pane" aria-selected="false">
|
|
السياسات والشروط </button>
|
|
</li>
|
|
</ul>
|
|
|
|
<div class="tab-content" id="settingsTabsContent">
|
|
<div class="tab-pane fade show active" id="settings-company-pane" role="tabpanel" aria-labelledby="settings-company-tab" tabindex="0">
|
|
<div class="row g-3">
|
|
<div class="col-md-12">
|
|
<label class="form-label">المنطقة الزمنية (Timezone)</label>
|
|
<select class="form-select" name="timezone" required>
|
|
<option value="Africa/Abidjan" >Africa/Abidjan</option>
|
|
<option value="Africa/Accra" >Africa/Accra</option>
|
|
<option value="Africa/Addis_Ababa" >Africa/Addis_Ababa</option>
|
|
<option value="Africa/Algiers" >Africa/Algiers</option>
|
|
<option value="Africa/Asmara" >Africa/Asmara</option>
|
|
<option value="Africa/Bamako" >Africa/Bamako</option>
|
|
<option value="Africa/Bangui" >Africa/Bangui</option>
|
|
<option value="Africa/Banjul" >Africa/Banjul</option>
|
|
<option value="Africa/Bissau" >Africa/Bissau</option>
|
|
<option value="Africa/Blantyre" >Africa/Blantyre</option>
|
|
<option value="Africa/Brazzaville" >Africa/Brazzaville</option>
|
|
<option value="Africa/Bujumbura" >Africa/Bujumbura</option>
|
|
<option value="Africa/Cairo" >Africa/Cairo</option>
|
|
<option value="Africa/Casablanca" >Africa/Casablanca</option>
|
|
<option value="Africa/Ceuta" >Africa/Ceuta</option>
|
|
<option value="Africa/Conakry" >Africa/Conakry</option>
|
|
<option value="Africa/Dakar" >Africa/Dakar</option>
|
|
<option value="Africa/Dar_es_Salaam" >Africa/Dar_es_Salaam</option>
|
|
<option value="Africa/Djibouti" >Africa/Djibouti</option>
|
|
<option value="Africa/Douala" >Africa/Douala</option>
|
|
<option value="Africa/El_Aaiun" >Africa/El_Aaiun</option>
|
|
<option value="Africa/Freetown" >Africa/Freetown</option>
|
|
<option value="Africa/Gaborone" >Africa/Gaborone</option>
|
|
<option value="Africa/Harare" >Africa/Harare</option>
|
|
<option value="Africa/Johannesburg" >Africa/Johannesburg</option>
|
|
<option value="Africa/Juba" >Africa/Juba</option>
|
|
<option value="Africa/Kampala" >Africa/Kampala</option>
|
|
<option value="Africa/Khartoum" >Africa/Khartoum</option>
|
|
<option value="Africa/Kigali" >Africa/Kigali</option>
|
|
<option value="Africa/Kinshasa" >Africa/Kinshasa</option>
|
|
<option value="Africa/Lagos" >Africa/Lagos</option>
|
|
<option value="Africa/Libreville" >Africa/Libreville</option>
|
|
<option value="Africa/Lome" >Africa/Lome</option>
|
|
<option value="Africa/Luanda" >Africa/Luanda</option>
|
|
<option value="Africa/Lubumbashi" >Africa/Lubumbashi</option>
|
|
<option value="Africa/Lusaka" >Africa/Lusaka</option>
|
|
<option value="Africa/Malabo" >Africa/Malabo</option>
|
|
<option value="Africa/Maputo" >Africa/Maputo</option>
|
|
<option value="Africa/Maseru" >Africa/Maseru</option>
|
|
<option value="Africa/Mbabane" >Africa/Mbabane</option>
|
|
<option value="Africa/Mogadishu" >Africa/Mogadishu</option>
|
|
<option value="Africa/Monrovia" >Africa/Monrovia</option>
|
|
<option value="Africa/Nairobi" >Africa/Nairobi</option>
|
|
<option value="Africa/Ndjamena" >Africa/Ndjamena</option>
|
|
<option value="Africa/Niamey" >Africa/Niamey</option>
|
|
<option value="Africa/Nouakchott" >Africa/Nouakchott</option>
|
|
<option value="Africa/Ouagadougou" >Africa/Ouagadougou</option>
|
|
<option value="Africa/Porto-Novo" >Africa/Porto-Novo</option>
|
|
<option value="Africa/Sao_Tome" >Africa/Sao_Tome</option>
|
|
<option value="Africa/Tripoli" >Africa/Tripoli</option>
|
|
<option value="Africa/Tunis" >Africa/Tunis</option>
|
|
<option value="Africa/Windhoek" >Africa/Windhoek</option>
|
|
<option value="America/Adak" >America/Adak</option>
|
|
<option value="America/Anchorage" >America/Anchorage</option>
|
|
<option value="America/Anguilla" >America/Anguilla</option>
|
|
<option value="America/Antigua" >America/Antigua</option>
|
|
<option value="America/Araguaina" >America/Araguaina</option>
|
|
<option value="America/Argentina/Buenos_Aires" >America/Argentina/Buenos_Aires</option>
|
|
<option value="America/Argentina/Catamarca" >America/Argentina/Catamarca</option>
|
|
<option value="America/Argentina/Cordoba" >America/Argentina/Cordoba</option>
|
|
<option value="America/Argentina/Jujuy" >America/Argentina/Jujuy</option>
|
|
<option value="America/Argentina/La_Rioja" >America/Argentina/La_Rioja</option>
|
|
<option value="America/Argentina/Mendoza" >America/Argentina/Mendoza</option>
|
|
<option value="America/Argentina/Rio_Gallegos" >America/Argentina/Rio_Gallegos</option>
|
|
<option value="America/Argentina/Salta" >America/Argentina/Salta</option>
|
|
<option value="America/Argentina/San_Juan" >America/Argentina/San_Juan</option>
|
|
<option value="America/Argentina/San_Luis" >America/Argentina/San_Luis</option>
|
|
<option value="America/Argentina/Tucuman" >America/Argentina/Tucuman</option>
|
|
<option value="America/Argentina/Ushuaia" >America/Argentina/Ushuaia</option>
|
|
<option value="America/Aruba" >America/Aruba</option>
|
|
<option value="America/Asuncion" >America/Asuncion</option>
|
|
<option value="America/Atikokan" >America/Atikokan</option>
|
|
<option value="America/Bahia" >America/Bahia</option>
|
|
<option value="America/Bahia_Banderas" >America/Bahia_Banderas</option>
|
|
<option value="America/Barbados" >America/Barbados</option>
|
|
<option value="America/Belem" >America/Belem</option>
|
|
<option value="America/Belize" >America/Belize</option>
|
|
<option value="America/Blanc-Sablon" >America/Blanc-Sablon</option>
|
|
<option value="America/Boa_Vista" >America/Boa_Vista</option>
|
|
<option value="America/Bogota" >America/Bogota</option>
|
|
<option value="America/Boise" >America/Boise</option>
|
|
<option value="America/Cambridge_Bay" >America/Cambridge_Bay</option>
|
|
<option value="America/Campo_Grande" >America/Campo_Grande</option>
|
|
<option value="America/Cancun" >America/Cancun</option>
|
|
<option value="America/Caracas" >America/Caracas</option>
|
|
<option value="America/Cayenne" >America/Cayenne</option>
|
|
<option value="America/Cayman" >America/Cayman</option>
|
|
<option value="America/Chicago" >America/Chicago</option>
|
|
<option value="America/Chihuahua" >America/Chihuahua</option>
|
|
<option value="America/Ciudad_Juarez" >America/Ciudad_Juarez</option>
|
|
<option value="America/Costa_Rica" >America/Costa_Rica</option>
|
|
<option value="America/Coyhaique" >America/Coyhaique</option>
|
|
<option value="America/Creston" >America/Creston</option>
|
|
<option value="America/Cuiaba" >America/Cuiaba</option>
|
|
<option value="America/Curacao" >America/Curacao</option>
|
|
<option value="America/Danmarkshavn" >America/Danmarkshavn</option>
|
|
<option value="America/Dawson" >America/Dawson</option>
|
|
<option value="America/Dawson_Creek" >America/Dawson_Creek</option>
|
|
<option value="America/Denver" >America/Denver</option>
|
|
<option value="America/Detroit" >America/Detroit</option>
|
|
<option value="America/Dominica" >America/Dominica</option>
|
|
<option value="America/Edmonton" >America/Edmonton</option>
|
|
<option value="America/Eirunepe" >America/Eirunepe</option>
|
|
<option value="America/El_Salvador" >America/El_Salvador</option>
|
|
<option value="America/Fort_Nelson" >America/Fort_Nelson</option>
|
|
<option value="America/Fortaleza" >America/Fortaleza</option>
|
|
<option value="America/Glace_Bay" >America/Glace_Bay</option>
|
|
<option value="America/Goose_Bay" >America/Goose_Bay</option>
|
|
<option value="America/Grand_Turk" >America/Grand_Turk</option>
|
|
<option value="America/Grenada" >America/Grenada</option>
|
|
<option value="America/Guadeloupe" >America/Guadeloupe</option>
|
|
<option value="America/Guatemala" >America/Guatemala</option>
|
|
<option value="America/Guayaquil" >America/Guayaquil</option>
|
|
<option value="America/Guyana" >America/Guyana</option>
|
|
<option value="America/Halifax" >America/Halifax</option>
|
|
<option value="America/Havana" >America/Havana</option>
|
|
<option value="America/Hermosillo" >America/Hermosillo</option>
|
|
<option value="America/Indiana/Indianapolis" >America/Indiana/Indianapolis</option>
|
|
<option value="America/Indiana/Knox" >America/Indiana/Knox</option>
|
|
<option value="America/Indiana/Marengo" >America/Indiana/Marengo</option>
|
|
<option value="America/Indiana/Petersburg" >America/Indiana/Petersburg</option>
|
|
<option value="America/Indiana/Tell_City" >America/Indiana/Tell_City</option>
|
|
<option value="America/Indiana/Vevay" >America/Indiana/Vevay</option>
|
|
<option value="America/Indiana/Vincennes" >America/Indiana/Vincennes</option>
|
|
<option value="America/Indiana/Winamac" >America/Indiana/Winamac</option>
|
|
<option value="America/Inuvik" >America/Inuvik</option>
|
|
<option value="America/Iqaluit" >America/Iqaluit</option>
|
|
<option value="America/Jamaica" >America/Jamaica</option>
|
|
<option value="America/Juneau" >America/Juneau</option>
|
|
<option value="America/Kentucky/Louisville" >America/Kentucky/Louisville</option>
|
|
<option value="America/Kentucky/Monticello" >America/Kentucky/Monticello</option>
|
|
<option value="America/Kralendijk" >America/Kralendijk</option>
|
|
<option value="America/La_Paz" >America/La_Paz</option>
|
|
<option value="America/Lima" >America/Lima</option>
|
|
<option value="America/Los_Angeles" >America/Los_Angeles</option>
|
|
<option value="America/Lower_Princes" >America/Lower_Princes</option>
|
|
<option value="America/Maceio" >America/Maceio</option>
|
|
<option value="America/Managua" >America/Managua</option>
|
|
<option value="America/Manaus" >America/Manaus</option>
|
|
<option value="America/Marigot" >America/Marigot</option>
|
|
<option value="America/Martinique" >America/Martinique</option>
|
|
<option value="America/Matamoros" >America/Matamoros</option>
|
|
<option value="America/Mazatlan" >America/Mazatlan</option>
|
|
<option value="America/Menominee" >America/Menominee</option>
|
|
<option value="America/Merida" >America/Merida</option>
|
|
<option value="America/Metlakatla" >America/Metlakatla</option>
|
|
<option value="America/Mexico_City" >America/Mexico_City</option>
|
|
<option value="America/Miquelon" >America/Miquelon</option>
|
|
<option value="America/Moncton" >America/Moncton</option>
|
|
<option value="America/Monterrey" >America/Monterrey</option>
|
|
<option value="America/Montevideo" >America/Montevideo</option>
|
|
<option value="America/Montserrat" >America/Montserrat</option>
|
|
<option value="America/Nassau" >America/Nassau</option>
|
|
<option value="America/New_York" >America/New_York</option>
|
|
<option value="America/Nome" >America/Nome</option>
|
|
<option value="America/Noronha" >America/Noronha</option>
|
|
<option value="America/North_Dakota/Beulah" >America/North_Dakota/Beulah</option>
|
|
<option value="America/North_Dakota/Center" >America/North_Dakota/Center</option>
|
|
<option value="America/North_Dakota/New_Salem" >America/North_Dakota/New_Salem</option>
|
|
<option value="America/Nuuk" >America/Nuuk</option>
|
|
<option value="America/Ojinaga" >America/Ojinaga</option>
|
|
<option value="America/Panama" >America/Panama</option>
|
|
<option value="America/Paramaribo" >America/Paramaribo</option>
|
|
<option value="America/Phoenix" >America/Phoenix</option>
|
|
<option value="America/Port-au-Prince" >America/Port-au-Prince</option>
|
|
<option value="America/Port_of_Spain" >America/Port_of_Spain</option>
|
|
<option value="America/Porto_Velho" >America/Porto_Velho</option>
|
|
<option value="America/Puerto_Rico" >America/Puerto_Rico</option>
|
|
<option value="America/Punta_Arenas" >America/Punta_Arenas</option>
|
|
<option value="America/Rankin_Inlet" >America/Rankin_Inlet</option>
|
|
<option value="America/Recife" >America/Recife</option>
|
|
<option value="America/Regina" >America/Regina</option>
|
|
<option value="America/Resolute" >America/Resolute</option>
|
|
<option value="America/Rio_Branco" >America/Rio_Branco</option>
|
|
<option value="America/Santarem" >America/Santarem</option>
|
|
<option value="America/Santiago" >America/Santiago</option>
|
|
<option value="America/Santo_Domingo" >America/Santo_Domingo</option>
|
|
<option value="America/Sao_Paulo" >America/Sao_Paulo</option>
|
|
<option value="America/Scoresbysund" >America/Scoresbysund</option>
|
|
<option value="America/Sitka" >America/Sitka</option>
|
|
<option value="America/St_Barthelemy" >America/St_Barthelemy</option>
|
|
<option value="America/St_Johns" >America/St_Johns</option>
|
|
<option value="America/St_Kitts" >America/St_Kitts</option>
|
|
<option value="America/St_Lucia" >America/St_Lucia</option>
|
|
<option value="America/St_Thomas" >America/St_Thomas</option>
|
|
<option value="America/St_Vincent" >America/St_Vincent</option>
|
|
<option value="America/Swift_Current" >America/Swift_Current</option>
|
|
<option value="America/Tegucigalpa" >America/Tegucigalpa</option>
|
|
<option value="America/Thule" >America/Thule</option>
|
|
<option value="America/Tijuana" >America/Tijuana</option>
|
|
<option value="America/Toronto" >America/Toronto</option>
|
|
<option value="America/Tortola" >America/Tortola</option>
|
|
<option value="America/Vancouver" >America/Vancouver</option>
|
|
<option value="America/Whitehorse" >America/Whitehorse</option>
|
|
<option value="America/Winnipeg" >America/Winnipeg</option>
|
|
<option value="America/Yakutat" >America/Yakutat</option>
|
|
<option value="Antarctica/Casey" >Antarctica/Casey</option>
|
|
<option value="Antarctica/Davis" >Antarctica/Davis</option>
|
|
<option value="Antarctica/DumontDUrville" >Antarctica/DumontDUrville</option>
|
|
<option value="Antarctica/Macquarie" >Antarctica/Macquarie</option>
|
|
<option value="Antarctica/Mawson" >Antarctica/Mawson</option>
|
|
<option value="Antarctica/McMurdo" >Antarctica/McMurdo</option>
|
|
<option value="Antarctica/Palmer" >Antarctica/Palmer</option>
|
|
<option value="Antarctica/Rothera" >Antarctica/Rothera</option>
|
|
<option value="Antarctica/Syowa" >Antarctica/Syowa</option>
|
|
<option value="Antarctica/Troll" >Antarctica/Troll</option>
|
|
<option value="Antarctica/Vostok" >Antarctica/Vostok</option>
|
|
<option value="Arctic/Longyearbyen" >Arctic/Longyearbyen</option>
|
|
<option value="Asia/Aden" >Asia/Aden</option>
|
|
<option value="Asia/Almaty" >Asia/Almaty</option>
|
|
<option value="Asia/Amman" >Asia/Amman</option>
|
|
<option value="Asia/Anadyr" >Asia/Anadyr</option>
|
|
<option value="Asia/Aqtau" >Asia/Aqtau</option>
|
|
<option value="Asia/Aqtobe" >Asia/Aqtobe</option>
|
|
<option value="Asia/Ashgabat" >Asia/Ashgabat</option>
|
|
<option value="Asia/Atyrau" >Asia/Atyrau</option>
|
|
<option value="Asia/Baghdad" >Asia/Baghdad</option>
|
|
<option value="Asia/Bahrain" >Asia/Bahrain</option>
|
|
<option value="Asia/Baku" >Asia/Baku</option>
|
|
<option value="Asia/Bangkok" >Asia/Bangkok</option>
|
|
<option value="Asia/Barnaul" >Asia/Barnaul</option>
|
|
<option value="Asia/Beirut" >Asia/Beirut</option>
|
|
<option value="Asia/Bishkek" >Asia/Bishkek</option>
|
|
<option value="Asia/Brunei" >Asia/Brunei</option>
|
|
<option value="Asia/Chita" >Asia/Chita</option>
|
|
<option value="Asia/Colombo" >Asia/Colombo</option>
|
|
<option value="Asia/Damascus" >Asia/Damascus</option>
|
|
<option value="Asia/Dhaka" >Asia/Dhaka</option>
|
|
<option value="Asia/Dili" >Asia/Dili</option>
|
|
<option value="Asia/Dubai" >Asia/Dubai</option>
|
|
<option value="Asia/Dushanbe" >Asia/Dushanbe</option>
|
|
<option value="Asia/Famagusta" >Asia/Famagusta</option>
|
|
<option value="Asia/Gaza" >Asia/Gaza</option>
|
|
<option value="Asia/Hebron" >Asia/Hebron</option>
|
|
<option value="Asia/Ho_Chi_Minh" >Asia/Ho_Chi_Minh</option>
|
|
<option value="Asia/Hong_Kong" >Asia/Hong_Kong</option>
|
|
<option value="Asia/Hovd" >Asia/Hovd</option>
|
|
<option value="Asia/Irkutsk" >Asia/Irkutsk</option>
|
|
<option value="Asia/Jakarta" >Asia/Jakarta</option>
|
|
<option value="Asia/Jayapura" >Asia/Jayapura</option>
|
|
<option value="Asia/Jerusalem" >Asia/Jerusalem</option>
|
|
<option value="Asia/Kabul" >Asia/Kabul</option>
|
|
<option value="Asia/Kamchatka" >Asia/Kamchatka</option>
|
|
<option value="Asia/Karachi" >Asia/Karachi</option>
|
|
<option value="Asia/Kathmandu" >Asia/Kathmandu</option>
|
|
<option value="Asia/Khandyga" >Asia/Khandyga</option>
|
|
<option value="Asia/Kolkata" >Asia/Kolkata</option>
|
|
<option value="Asia/Krasnoyarsk" >Asia/Krasnoyarsk</option>
|
|
<option value="Asia/Kuala_Lumpur" >Asia/Kuala_Lumpur</option>
|
|
<option value="Asia/Kuching" >Asia/Kuching</option>
|
|
<option value="Asia/Kuwait" >Asia/Kuwait</option>
|
|
<option value="Asia/Macau" >Asia/Macau</option>
|
|
<option value="Asia/Magadan" >Asia/Magadan</option>
|
|
<option value="Asia/Makassar" >Asia/Makassar</option>
|
|
<option value="Asia/Manila" >Asia/Manila</option>
|
|
<option value="Asia/Muscat" selected>Asia/Muscat</option>
|
|
<option value="Asia/Nicosia" >Asia/Nicosia</option>
|
|
<option value="Asia/Novokuznetsk" >Asia/Novokuznetsk</option>
|
|
<option value="Asia/Novosibirsk" >Asia/Novosibirsk</option>
|
|
<option value="Asia/Omsk" >Asia/Omsk</option>
|
|
<option value="Asia/Oral" >Asia/Oral</option>
|
|
<option value="Asia/Phnom_Penh" >Asia/Phnom_Penh</option>
|
|
<option value="Asia/Pontianak" >Asia/Pontianak</option>
|
|
<option value="Asia/Pyongyang" >Asia/Pyongyang</option>
|
|
<option value="Asia/Qatar" >Asia/Qatar</option>
|
|
<option value="Asia/Qostanay" >Asia/Qostanay</option>
|
|
<option value="Asia/Qyzylorda" >Asia/Qyzylorda</option>
|
|
<option value="Asia/Riyadh" >Asia/Riyadh</option>
|
|
<option value="Asia/Sakhalin" >Asia/Sakhalin</option>
|
|
<option value="Asia/Samarkand" >Asia/Samarkand</option>
|
|
<option value="Asia/Seoul" >Asia/Seoul</option>
|
|
<option value="Asia/Shanghai" >Asia/Shanghai</option>
|
|
<option value="Asia/Singapore" >Asia/Singapore</option>
|
|
<option value="Asia/Srednekolymsk" >Asia/Srednekolymsk</option>
|
|
<option value="Asia/Taipei" >Asia/Taipei</option>
|
|
<option value="Asia/Tashkent" >Asia/Tashkent</option>
|
|
<option value="Asia/Tbilisi" >Asia/Tbilisi</option>
|
|
<option value="Asia/Tehran" >Asia/Tehran</option>
|
|
<option value="Asia/Thimphu" >Asia/Thimphu</option>
|
|
<option value="Asia/Tokyo" >Asia/Tokyo</option>
|
|
<option value="Asia/Tomsk" >Asia/Tomsk</option>
|
|
<option value="Asia/Ulaanbaatar" >Asia/Ulaanbaatar</option>
|
|
<option value="Asia/Urumqi" >Asia/Urumqi</option>
|
|
<option value="Asia/Ust-Nera" >Asia/Ust-Nera</option>
|
|
<option value="Asia/Vientiane" >Asia/Vientiane</option>
|
|
<option value="Asia/Vladivostok" >Asia/Vladivostok</option>
|
|
<option value="Asia/Yakutsk" >Asia/Yakutsk</option>
|
|
<option value="Asia/Yangon" >Asia/Yangon</option>
|
|
<option value="Asia/Yekaterinburg" >Asia/Yekaterinburg</option>
|
|
<option value="Asia/Yerevan" >Asia/Yerevan</option>
|
|
<option value="Atlantic/Azores" >Atlantic/Azores</option>
|
|
<option value="Atlantic/Bermuda" >Atlantic/Bermuda</option>
|
|
<option value="Atlantic/Canary" >Atlantic/Canary</option>
|
|
<option value="Atlantic/Cape_Verde" >Atlantic/Cape_Verde</option>
|
|
<option value="Atlantic/Faroe" >Atlantic/Faroe</option>
|
|
<option value="Atlantic/Madeira" >Atlantic/Madeira</option>
|
|
<option value="Atlantic/Reykjavik" >Atlantic/Reykjavik</option>
|
|
<option value="Atlantic/South_Georgia" >Atlantic/South_Georgia</option>
|
|
<option value="Atlantic/St_Helena" >Atlantic/St_Helena</option>
|
|
<option value="Atlantic/Stanley" >Atlantic/Stanley</option>
|
|
<option value="Australia/Adelaide" >Australia/Adelaide</option>
|
|
<option value="Australia/Brisbane" >Australia/Brisbane</option>
|
|
<option value="Australia/Broken_Hill" >Australia/Broken_Hill</option>
|
|
<option value="Australia/Darwin" >Australia/Darwin</option>
|
|
<option value="Australia/Eucla" >Australia/Eucla</option>
|
|
<option value="Australia/Hobart" >Australia/Hobart</option>
|
|
<option value="Australia/Lindeman" >Australia/Lindeman</option>
|
|
<option value="Australia/Lord_Howe" >Australia/Lord_Howe</option>
|
|
<option value="Australia/Melbourne" >Australia/Melbourne</option>
|
|
<option value="Australia/Perth" >Australia/Perth</option>
|
|
<option value="Australia/Sydney" >Australia/Sydney</option>
|
|
<option value="Europe/Amsterdam" >Europe/Amsterdam</option>
|
|
<option value="Europe/Andorra" >Europe/Andorra</option>
|
|
<option value="Europe/Astrakhan" >Europe/Astrakhan</option>
|
|
<option value="Europe/Athens" >Europe/Athens</option>
|
|
<option value="Europe/Belgrade" >Europe/Belgrade</option>
|
|
<option value="Europe/Berlin" >Europe/Berlin</option>
|
|
<option value="Europe/Bratislava" >Europe/Bratislava</option>
|
|
<option value="Europe/Brussels" >Europe/Brussels</option>
|
|
<option value="Europe/Bucharest" >Europe/Bucharest</option>
|
|
<option value="Europe/Budapest" >Europe/Budapest</option>
|
|
<option value="Europe/Busingen" >Europe/Busingen</option>
|
|
<option value="Europe/Chisinau" >Europe/Chisinau</option>
|
|
<option value="Europe/Copenhagen" >Europe/Copenhagen</option>
|
|
<option value="Europe/Dublin" >Europe/Dublin</option>
|
|
<option value="Europe/Gibraltar" >Europe/Gibraltar</option>
|
|
<option value="Europe/Guernsey" >Europe/Guernsey</option>
|
|
<option value="Europe/Helsinki" >Europe/Helsinki</option>
|
|
<option value="Europe/Isle_of_Man" >Europe/Isle_of_Man</option>
|
|
<option value="Europe/Istanbul" >Europe/Istanbul</option>
|
|
<option value="Europe/Jersey" >Europe/Jersey</option>
|
|
<option value="Europe/Kaliningrad" >Europe/Kaliningrad</option>
|
|
<option value="Europe/Kirov" >Europe/Kirov</option>
|
|
<option value="Europe/Kyiv" >Europe/Kyiv</option>
|
|
<option value="Europe/Lisbon" >Europe/Lisbon</option>
|
|
<option value="Europe/Ljubljana" >Europe/Ljubljana</option>
|
|
<option value="Europe/London" >Europe/London</option>
|
|
<option value="Europe/Luxembourg" >Europe/Luxembourg</option>
|
|
<option value="Europe/Madrid" >Europe/Madrid</option>
|
|
<option value="Europe/Malta" >Europe/Malta</option>
|
|
<option value="Europe/Mariehamn" >Europe/Mariehamn</option>
|
|
<option value="Europe/Minsk" >Europe/Minsk</option>
|
|
<option value="Europe/Monaco" >Europe/Monaco</option>
|
|
<option value="Europe/Moscow" >Europe/Moscow</option>
|
|
<option value="Europe/Oslo" >Europe/Oslo</option>
|
|
<option value="Europe/Paris" >Europe/Paris</option>
|
|
<option value="Europe/Podgorica" >Europe/Podgorica</option>
|
|
<option value="Europe/Prague" >Europe/Prague</option>
|
|
<option value="Europe/Riga" >Europe/Riga</option>
|
|
<option value="Europe/Rome" >Europe/Rome</option>
|
|
<option value="Europe/Samara" >Europe/Samara</option>
|
|
<option value="Europe/San_Marino" >Europe/San_Marino</option>
|
|
<option value="Europe/Sarajevo" >Europe/Sarajevo</option>
|
|
<option value="Europe/Saratov" >Europe/Saratov</option>
|
|
<option value="Europe/Simferopol" >Europe/Simferopol</option>
|
|
<option value="Europe/Skopje" >Europe/Skopje</option>
|
|
<option value="Europe/Sofia" >Europe/Sofia</option>
|
|
<option value="Europe/Stockholm" >Europe/Stockholm</option>
|
|
<option value="Europe/Tallinn" >Europe/Tallinn</option>
|
|
<option value="Europe/Tirane" >Europe/Tirane</option>
|
|
<option value="Europe/Ulyanovsk" >Europe/Ulyanovsk</option>
|
|
<option value="Europe/Vaduz" >Europe/Vaduz</option>
|
|
<option value="Europe/Vatican" >Europe/Vatican</option>
|
|
<option value="Europe/Vienna" >Europe/Vienna</option>
|
|
<option value="Europe/Vilnius" >Europe/Vilnius</option>
|
|
<option value="Europe/Volgograd" >Europe/Volgograd</option>
|
|
<option value="Europe/Warsaw" >Europe/Warsaw</option>
|
|
<option value="Europe/Zagreb" >Europe/Zagreb</option>
|
|
<option value="Europe/Zurich" >Europe/Zurich</option>
|
|
<option value="Indian/Antananarivo" >Indian/Antananarivo</option>
|
|
<option value="Indian/Chagos" >Indian/Chagos</option>
|
|
<option value="Indian/Christmas" >Indian/Christmas</option>
|
|
<option value="Indian/Cocos" >Indian/Cocos</option>
|
|
<option value="Indian/Comoro" >Indian/Comoro</option>
|
|
<option value="Indian/Kerguelen" >Indian/Kerguelen</option>
|
|
<option value="Indian/Mahe" >Indian/Mahe</option>
|
|
<option value="Indian/Maldives" >Indian/Maldives</option>
|
|
<option value="Indian/Mauritius" >Indian/Mauritius</option>
|
|
<option value="Indian/Mayotte" >Indian/Mayotte</option>
|
|
<option value="Indian/Reunion" >Indian/Reunion</option>
|
|
<option value="Pacific/Apia" >Pacific/Apia</option>
|
|
<option value="Pacific/Auckland" >Pacific/Auckland</option>
|
|
<option value="Pacific/Bougainville" >Pacific/Bougainville</option>
|
|
<option value="Pacific/Chatham" >Pacific/Chatham</option>
|
|
<option value="Pacific/Chuuk" >Pacific/Chuuk</option>
|
|
<option value="Pacific/Easter" >Pacific/Easter</option>
|
|
<option value="Pacific/Efate" >Pacific/Efate</option>
|
|
<option value="Pacific/Fakaofo" >Pacific/Fakaofo</option>
|
|
<option value="Pacific/Fiji" >Pacific/Fiji</option>
|
|
<option value="Pacific/Funafuti" >Pacific/Funafuti</option>
|
|
<option value="Pacific/Galapagos" >Pacific/Galapagos</option>
|
|
<option value="Pacific/Gambier" >Pacific/Gambier</option>
|
|
<option value="Pacific/Guadalcanal" >Pacific/Guadalcanal</option>
|
|
<option value="Pacific/Guam" >Pacific/Guam</option>
|
|
<option value="Pacific/Honolulu" >Pacific/Honolulu</option>
|
|
<option value="Pacific/Kanton" >Pacific/Kanton</option>
|
|
<option value="Pacific/Kiritimati" >Pacific/Kiritimati</option>
|
|
<option value="Pacific/Kosrae" >Pacific/Kosrae</option>
|
|
<option value="Pacific/Kwajalein" >Pacific/Kwajalein</option>
|
|
<option value="Pacific/Majuro" >Pacific/Majuro</option>
|
|
<option value="Pacific/Marquesas" >Pacific/Marquesas</option>
|
|
<option value="Pacific/Midway" >Pacific/Midway</option>
|
|
<option value="Pacific/Nauru" >Pacific/Nauru</option>
|
|
<option value="Pacific/Niue" >Pacific/Niue</option>
|
|
<option value="Pacific/Norfolk" >Pacific/Norfolk</option>
|
|
<option value="Pacific/Noumea" >Pacific/Noumea</option>
|
|
<option value="Pacific/Pago_Pago" >Pacific/Pago_Pago</option>
|
|
<option value="Pacific/Palau" >Pacific/Palau</option>
|
|
<option value="Pacific/Pitcairn" >Pacific/Pitcairn</option>
|
|
<option value="Pacific/Pohnpei" >Pacific/Pohnpei</option>
|
|
<option value="Pacific/Port_Moresby" >Pacific/Port_Moresby</option>
|
|
<option value="Pacific/Rarotonga" >Pacific/Rarotonga</option>
|
|
<option value="Pacific/Saipan" >Pacific/Saipan</option>
|
|
<option value="Pacific/Tahiti" >Pacific/Tahiti</option>
|
|
<option value="Pacific/Tarawa" >Pacific/Tarawa</option>
|
|
<option value="Pacific/Tongatapu" >Pacific/Tongatapu</option>
|
|
<option value="Pacific/Wake" >Pacific/Wake</option>
|
|
<option value="Pacific/Wallis" >Pacific/Wallis</option>
|
|
<option value="UTC" >UTC</option>
|
|
</select>
|
|
</div>
|
|
<div class="col-md-6">
|
|
<label class="form-label">اسم الشركة (عربي)</label>
|
|
<input type="text" class="form-control" name="company_name_ar" value="حلوى الريامي" required>
|
|
</div>
|
|
<div class="col-md-6">
|
|
<label class="form-label">اسم الشركة (إنجليزي)</label>
|
|
<input type="text" class="form-control" name="company_name_en" value="Al Riyami Sweets" required>
|
|
</div>
|
|
<div class="col-md-6">
|
|
<label class="form-label">النسبة الضريبية %</label>
|
|
<input type="number" step="0.01" class="form-control" name="vat_percentage" value="5" required>
|
|
</div>
|
|
<div class="col-md-6">
|
|
<label class="form-label">الرقم الضريبي</label>
|
|
<input type="text" class="form-control" name="company_vat_number" value="">
|
|
</div>
|
|
<div class="col-md-6">
|
|
<label class="form-label">رقم الهاتف</label>
|
|
<div class="input-group" dir="ltr">
|
|
<span class="input-group-text">968</span>
|
|
<input type="text" class="form-control" name="company_phone" value="" inputmode="numeric" maxlength="8" pattern="\d{8}" placeholder="91234567">
|
|
</div>
|
|
<div class="form-text">يُحفظ الرقم محلياً من 8 خانات ويُرسل مع المقدمة 968.</div>
|
|
</div>
|
|
<div class="col-md-6">
|
|
<label class="form-label">البريد الإلكتروني</label>
|
|
<input type="email" class="form-control" name="company_email" value="">
|
|
</div>
|
|
<div class="col-md-12">
|
|
<label class="form-label">العنوان</label>
|
|
<textarea class="form-control" name="company_address" rows="2"></textarea>
|
|
</div>
|
|
<div class="col-md-6">
|
|
<label class="form-label">الشعار (Logo)</label>
|
|
<input type="file" class="form-control" name="company_logo" accept="image/*">
|
|
</div>
|
|
<div class="col-md-6">
|
|
<label class="form-label">الأيقونة (Favicon)</label>
|
|
<input type="file" class="form-control" name="company_favicon" accept="image/x-icon,image/png,image/jpeg">
|
|
</div>
|
|
</div>
|
|
</div>
|
|
<div class="tab-pane fade" id="settings-wablas-pane" role="tabpanel" aria-labelledby="settings-wablas-tab" tabindex="0">
|
|
<div class="rounded-4 border bg-body-tertiary p-4">
|
|
<div class="d-flex flex-column flex-lg-row justify-content-between align-items-lg-center gap-3">
|
|
<div>
|
|
<h5 class="mb-1 fw-bold">إعدادات واتساب في نافذة مستقلة</h5>
|
|
<p class="text-muted mb-0">تم نقل جميع قوالب واتساب إلى نافذة مستقلة قابلة للتمرير حتى تظهر كل القوالب بوضوح بدون ازدحام داخل إعدادات الشركة.</p>
|
|
</div>
|
|
<div class="d-flex gap-2">
|
|
<button type="button" class="btn btn-success" data-open-wablas-settings="1">
|
|
<i class="bi bi-whatsapp me-1"></i>فتح إعدادات واتساب </button>
|
|
</div>
|
|
</div>
|
|
|
|
<div class="row g-3 mt-1">
|
|
<div class="col-md-4">
|
|
<div class="border rounded-3 bg-white p-3 h-100">
|
|
<div class="small text-muted mb-1">حالة الإرسال</div>
|
|
<div class="fw-semibold">مفعل</div>
|
|
</div>
|
|
</div>
|
|
<div class="col-md-4">
|
|
<div class="border rounded-3 bg-white p-3 h-100">
|
|
<div class="small text-muted mb-1">الفواتير</div>
|
|
<div class="fw-semibold">للعميل فقط</div>
|
|
</div>
|
|
</div>
|
|
<div class="col-md-4">
|
|
<div class="border rounded-3 bg-white p-3 h-100">
|
|
<div class="small text-muted mb-1">الملخص اليومي</div>
|
|
<div class="fw-semibold">يدوي فقط</div>
|
|
<div class="small text-muted mt-1">0 رقم مستلم</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
|
|
<div class="tab-pane fade" id="settings-payment-pane" role="tabpanel" aria-labelledby="settings-payment-tab" tabindex="0">
|
|
<div class="row g-3">
|
|
<div class="col-12">
|
|
<div class="border rounded-4 p-3 bg-body-tertiary">
|
|
<div class="form-check form-switch mb-2">
|
|
<input class="form-check-input" type="checkbox" role="switch" id="thawaniEnabled" name="thawani_enabled" value="1" >
|
|
<label class="form-check-label fw-semibold" for="thawaniEnabled">تفعيل بوابة ثواني</label>
|
|
</div>
|
|
<div class="small text-muted">فعّلها ليظهر خيارا الدفع أونلاين أو الدفع لاحقاً في طلبات المتجر.</div>
|
|
</div>
|
|
</div>
|
|
<div class="col-md-4">
|
|
<label class="form-label">البيئة</label>
|
|
<select class="form-select" name="thawani_mode">
|
|
<option value="sandbox" selected>تجريبية (Sandbox)</option>
|
|
<option value="live" >حقيقية (Live)</option>
|
|
</select>
|
|
</div>
|
|
<div class="col-md-8">
|
|
<label class="form-label">المفتاح العام (Publishable Key)</label>
|
|
<input type="text" class="form-control" name="thawani_publishable_key" value="" placeholder="pk_...">
|
|
</div>
|
|
<div class="col-md-12">
|
|
<label class="form-label">المفتاح السري (Secret Key)</label>
|
|
<input type="password" class="form-control" name="thawani_secret_key" value="" placeholder="sk_...">
|
|
</div>
|
|
<div class="col-md-6">
|
|
<label class="form-label">رابط نجاح الدفع</label>
|
|
<input type="url" class="form-control" name="thawani_success_url" value="" placeholder="http://127.0.0.1/thawani_return.php?result=success">
|
|
<div class="form-text">اختياري. إذا تركته فارغاً سيستخدم النظام رابط الرجوع الداخلي تلقائياً.</div>
|
|
</div>
|
|
<div class="col-md-6">
|
|
<label class="form-label">رابط إلغاء الدفع</label>
|
|
<input type="url" class="form-control" name="thawani_cancel_url" value="" placeholder="http://127.0.0.1/thawani_return.php?result=cancel">
|
|
<div class="form-text">اختياري. يستخدم عندما يُلغى الدفع أو يعود العميل بدون إتمام العملية.</div>
|
|
</div>
|
|
<div class="col-12">
|
|
<div class="alert alert-info rounded-4 mb-0">
|
|
<div class="fw-semibold mb-1">معلومة</div>
|
|
<div class="small mb-0">عند اختيار الدفع أونلاين سيُنشئ النظام جلسة Thawani ويرسل العميل مباشرةً لصفحة الدفع.</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
|
|
<div class="tab-pane fade" id="settings-email-pane" role="tabpanel" aria-labelledby="settings-email-tab" tabindex="0">
|
|
<div class="row g-3">
|
|
<div class="col-md-12">
|
|
<h6 class="mb-0 fw-bold">إعدادات البريد الإلكتروني (SMTP)</h6>
|
|
</div>
|
|
<div class="col-md-6">
|
|
<label class="form-label">خادم SMTP (Host)</label>
|
|
<input type="text" class="form-control" name="smtp_host" value="">
|
|
</div>
|
|
<div class="col-md-6">
|
|
<label class="form-label">منفذ SMTP (Port)</label>
|
|
<input type="number" class="form-control" name="smtp_port" value="587">
|
|
</div>
|
|
<div class="col-md-6">
|
|
<label class="form-label">مستخدم SMTP (User)</label>
|
|
<input type="text" class="form-control" name="smtp_user" value="">
|
|
</div>
|
|
<div class="col-md-6">
|
|
<label class="form-label">كلمة مرور SMTP (Pass)</label>
|
|
<input type="password" class="form-control" name="smtp_pass" value="">
|
|
</div>
|
|
<div class="col-md-6">
|
|
<label class="form-label">تشفير SMTP (Secure)</label>
|
|
<select class="form-select" name="smtp_secure">
|
|
<option value="tls" >TLS</option>
|
|
<option value="ssl" >SSL</option>
|
|
<option value="" selected>None</option>
|
|
</select>
|
|
</div>
|
|
<div class="col-md-6">
|
|
<label class="form-label">البريد المرسل (From Email)</label>
|
|
<input type="email" class="form-control" name="mail_from" value="">
|
|
</div>
|
|
<div class="col-md-12">
|
|
<label class="form-label">اسم المرسل (From Name)</label>
|
|
<input type="text" class="form-control" name="mail_from_name" value="">
|
|
</div>
|
|
</div>
|
|
</div>
|
|
|
|
<div class="tab-pane fade" id="settings-policies-pane" role="tabpanel" aria-labelledby="settings-policies-tab" tabindex="0">
|
|
<div class="row g-3">
|
|
<div class="col-12">
|
|
<div class="alert alert-light border rounded-4 mb-0">
|
|
<div class="fw-semibold mb-1">روابط التذييل</div>
|
|
<div class="small text-muted mb-0">سيتم ربط صفحات سياسة الخصوصية والشروط والأحكام تلقائياً في تذييل النظام والمتجر.</div>
|
|
</div>
|
|
</div>
|
|
<div class="col-12">
|
|
<label class="form-label">سياسة الخصوصية</label>
|
|
<textarea class="form-control" name="privacy_policy_content" rows="12" placeholder="أدخل نص سياسة الخصوصية هنا..."></textarea>
|
|
<div class="form-text">يظهر هذا النص في صفحة سياسة الخصوصية العامة.</div>
|
|
</div>
|
|
<div class="col-12">
|
|
<label class="form-label">الشروط والأحكام</label>
|
|
<textarea class="form-control" name="terms_conditions_content" rows="12" placeholder="أدخل نص الشروط والأحكام هنا..."></textarea>
|
|
<div class="form-text">يظهر هذا النص في صفحة الشروط والأحكام العامة.</div>
|
|
</div>
|
|
<div class="col-12">
|
|
<div class="settings-inline-save border rounded-4 bg-body-tertiary px-3 py-3 d-flex flex-column flex-md-row justify-content-between align-items-md-center gap-3">
|
|
<div>
|
|
<div class="fw-semibold">حفظ السياسات</div>
|
|
<div class="small text-muted">يمكنك الحفظ من هنا أيضاً إذا كان زر التذييل خارج الشاشة.</div>
|
|
</div>
|
|
<button type="submit" class="btn btn-primary px-4 align-self-md-start">
|
|
<i class="bi bi-save me-1"></i>حفظ التغييرات </button>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
<div class="modal-footer">
|
|
<button type="button" class="btn btn-secondary" data-bs-dismiss="modal">إلغاء</button>
|
|
<button type="submit" class="btn btn-primary">حفظ التغييرات</button>
|
|
</div>
|
|
</form>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
|
|
<style>
|
|
#settingsModal .modal-header,
|
|
#settingsModal .modal-footer {
|
|
position: sticky;
|
|
z-index: 3;
|
|
background: var(--bs-body-bg);
|
|
}
|
|
|
|
#settingsModal .modal-header {
|
|
top: 0;
|
|
border-bottom: 1px solid var(--bs-border-color);
|
|
}
|
|
|
|
#settingsModal .modal-footer {
|
|
bottom: 0;
|
|
border-top: 1px solid var(--bs-border-color);
|
|
box-shadow: 0 -10px 30px rgba(15, 23, 42, 0.06);
|
|
}
|
|
|
|
#settingsModal .modal-body {
|
|
padding-bottom: 1.25rem;
|
|
}
|
|
|
|
#settingsModal .settings-inline-save {
|
|
position: sticky;
|
|
bottom: -0.5rem;
|
|
z-index: 2;
|
|
box-shadow: 0 12px 30px rgba(15, 23, 42, 0.08);
|
|
}
|
|
|
|
#wablasSettingsModal {
|
|
overflow-y: auto;
|
|
}
|
|
|
|
#wablasSettingsModal .modal-dialog {
|
|
margin: 0;
|
|
max-width: none;
|
|
min-height: 100%;
|
|
}
|
|
|
|
#wablasSettingsModal .modal-content {
|
|
min-height: 100vh;
|
|
border-radius: 0;
|
|
}
|
|
|
|
#wablasSettingsModal .modal-header,
|
|
#wablasSettingsModal .modal-footer {
|
|
position: sticky;
|
|
z-index: 3;
|
|
background: var(--bs-body-bg);
|
|
}
|
|
|
|
#wablasSettingsModal .modal-header {
|
|
top: 0;
|
|
border-bottom: 1px solid var(--bs-border-color);
|
|
}
|
|
|
|
#wablasSettingsModal .modal-footer {
|
|
bottom: 0;
|
|
border-top: 1px solid var(--bs-border-color);
|
|
}
|
|
|
|
#wablasSettingsModal .modal-body {
|
|
overflow: visible;
|
|
padding-bottom: 2rem;
|
|
}
|
|
|
|
#wablasSettingsModal .wablas-template-preview {
|
|
white-space: pre-wrap;
|
|
word-break: break-word;
|
|
}
|
|
</style>
|
|
|
|
<!-- WhatsApp Settings Modal -->
|
|
<div class="modal fade" id="wablasSettingsModal" tabindex="-1" aria-hidden="true">
|
|
<div class="modal-dialog modal-fullscreen">
|
|
<div class="modal-content border-0 rounded-0">
|
|
<form action="api/settings.php" method="POST" id="wablasSettingsForm">
|
|
<input type="hidden" name="return_modal" value="wablas">
|
|
<div class="modal-header">
|
|
<div>
|
|
<h5 class="modal-title mb-1">إعدادات واتساب</h5>
|
|
<div class="small text-muted">نافذة مستقلة قابلة للتمرير لعرض جميع القوالب والحقول بشكل واضح.</div>
|
|
</div>
|
|
<button type="button" class="btn-close" data-bs-dismiss="modal" aria-label="Close"></button>
|
|
</div>
|
|
<div class="modal-body">
|
|
<div class="alert d-none" id="wablasSettingsAlert" role="alert"></div>
|
|
<div class="row g-3">
|
|
<div class="col-12">
|
|
<div class="border rounded-4 px-3 py-3 bg-body-tertiary">
|
|
<div class="d-flex flex-column flex-lg-row justify-content-between align-items-lg-center gap-3">
|
|
<div>
|
|
<h6 class="mb-1 fw-bold">ربط Wablas</h6>
|
|
<div class="small text-muted">فعّل الإرسال ثم احفظ، ويمكنك إرسال رسالة اختبار مباشرة من هنا.</div>
|
|
</div>
|
|
<div class="form-check form-switch m-0">
|
|
<input type="hidden" name="wablas_enabled" value="0">
|
|
<input class="form-check-input" type="checkbox" role="switch" id="wablasEnabledSwitchModal" name="wablas_enabled" value="1" checked>
|
|
<label class="form-check-label fw-semibold" for="wablasEnabledSwitchModal">تفعيل واتساب</label>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
|
|
<div class="col-md-6">
|
|
<label class="form-label mb-1">Wablas Token</label>
|
|
<input type="text" class="form-control" name="wablas_token" value="5I5ey7o1zGSwwJecJ7OdaCeZPjhcyuWwwiWo6f5ziyDYZ1iYFtnU87a">
|
|
</div>
|
|
<div class="col-md-6">
|
|
<label class="form-label mb-1">Wablas Secret Key</label>
|
|
<input type="password" class="form-control" name="wablas_secret_key" value="ACpHiGRx">
|
|
</div>
|
|
<div class="col-12">
|
|
<label class="form-label mb-1">رابط بوابة Wablas</label>
|
|
<input type="text" class="form-control" name="wablas_api_url" value="https://deu.wablas.com" placeholder="https://wablas.com/api/send-message">
|
|
<div class="small text-muted mt-1">إذا كان حسابك مربوطاً بسيرفر محدد مثل tegal.wablas.com أو texas.wablas.com فاكتب رابط ذلك السيرفر هنا. يمكنك إدخال الدومين فقط أو رابط /api/send-message الكامل.</div>
|
|
</div>
|
|
|
|
<div class="col-md-4">
|
|
<label class="form-label mb-1">رقم الاختبار</label>
|
|
<div class="input-group" dir="ltr">
|
|
<span class="input-group-text">968</span>
|
|
<input type="text" class="form-control" name="wablas_test_phone" value="" inputmode="numeric" maxlength="8" pattern="\d{8}" placeholder="91234567">
|
|
</div>
|
|
</div>
|
|
<div class="col-md-6">
|
|
<label class="form-label mb-1">رسالة الاختبار</label>
|
|
<textarea class="form-control" name="wablas_test_message" rows="2">هذه رسالة واتساب تجريبية من النظام.</textarea>
|
|
</div>
|
|
<div class="col-md-2 d-grid align-self-end">
|
|
<button type="submit" class="btn btn-outline-success" formaction="api/wablas_test.php" formmethod="POST">
|
|
<i class="bi bi-whatsapp me-1"></i>إرسال اختبار </button>
|
|
</div>
|
|
|
|
<div class="col-12">
|
|
<div class="border rounded-4 p-3 bg-white">
|
|
<div class="d-flex flex-column flex-lg-row justify-content-between align-items-lg-start gap-2 mb-3">
|
|
<div>
|
|
<h6 class="mb-1 fw-semibold">قالب الفاتورة</h6>
|
|
<div class="small text-muted">يرسل تلقائياً إلى رقم العميل الموجود في الفاتورة فقط.</div>
|
|
</div>
|
|
<span class="badge text-bg-success-subtle border border-success-subtle text-success-emphasis">للعميل فقط</span>
|
|
</div>
|
|
<div class="alert alert-light border small mb-3">
|
|
<strong>مهم:</strong> لن يتم إرسال الفاتورة لأي رقم إداري. إذا لم يكن للعميل رقم واتساب محفوظ فلن يتم الإرسال. </div>
|
|
<label class="form-label mb-1">قالب الفاتورة</label>
|
|
<textarea class="form-control" id="wablasInvoiceTemplate" name="wablas_template_invoice" rows="12" data-wablas-preview-source="invoice">🧾 فاتورة جديدة #{receipt_no}
|
|
الفرع: {branch_name}
|
|
النوع: {sale_mode_label}
|
|
العميل: {customer_name}
|
|
الهاتف: {customer_phone}
|
|
الدفع: {payment_method_label} / {payment_status_label}
|
|
|
|
الأصناف:
|
|
{items_summary}
|
|
|
|
قبل الضريبة: {subtotal}
|
|
الضريبة: {vat_amount}
|
|
الإجمالي: {total_amount}
|
|
|
|
الكاشير: {cashier_name}
|
|
التاريخ: {sale_date}</textarea>
|
|
<div class="small text-muted mt-2">المتغيرات المتاحة: {receipt_no}, {customer_name}, {customer_phone}, {branch_name}, {payment_method_label}, {payment_status_label}, {total_amount}, {due_amount}, {sale_date}, {items_summary}, {notes}</div>
|
|
<div class="border rounded-3 bg-light-subtle p-3 mt-3">
|
|
<div class="small text-muted mb-2">معاينة مباشرة</div>
|
|
<pre class="small mb-0 text-wrap wablas-template-preview" data-wablas-preview="invoice" data-preview-vars='{"sale_id":"30","receipt_no":"8","branch_name":"الفرع الرئيسي","sale_mode":"normal","sale_mode_label":"فاتورة","customer_name":"Moosa Ali Al-Abri - 968 99359472","customer_phone":"99359472","payment_method":"cash","payment_method_label":"كاش","payment_status":"paid","payment_status_label":"مدفوع","cashier_name":"مالك النظام","subtotal":"26.000 ر.ع","vat_amount":"0.900 ر.ع","total_amount":"26.900 ر.ع","paid_amount":"26.900 ر.ع","due_amount":"0.000 ر.ع","sale_date":"2026-04-23 06:57","notes":"","items_summary":"- حلوى بالزعفران x1 = 3.000 ر.ع\n- حلوى الفرصاد x3 = 15.000 ر.ع\n- حلوى عادية x4 = 8.000 ر.ع"}'>🧾 فاتورة جديدة #8
|
|
الفرع: الفرع الرئيسي
|
|
النوع: فاتورة
|
|
العميل: Moosa Ali Al-Abri - 968 99359472
|
|
الهاتف: 99359472
|
|
الدفع: كاش / مدفوع
|
|
|
|
الأصناف:
|
|
- حلوى بالزعفران x1 = 3.000 ر.ع
|
|
- حلوى الفرصاد x3 = 15.000 ر.ع
|
|
- حلوى عادية x4 = 8.000 ر.ع
|
|
|
|
قبل الضريبة: 26.000 ر.ع
|
|
الضريبة: 0.900 ر.ع
|
|
الإجمالي: 26.900 ر.ع
|
|
|
|
الكاشير: مالك النظام
|
|
التاريخ: 2026-04-23 06:57</pre>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
|
|
<div class="col-12">
|
|
<div class="border rounded-4 p-3 bg-white">
|
|
<div class="d-flex flex-column flex-lg-row justify-content-between align-items-lg-start gap-2 mb-3">
|
|
<div>
|
|
<h6 class="mb-1 fw-semibold">قالب الملخص اليومي</h6>
|
|
<div class="small text-muted">يرسل إلى أرقام الإدارة المحددة فقط، ويمكن تشغيله تلقائياً كل يوم في وقت محدد.</div>
|
|
</div>
|
|
<span class="badge text-bg-light border">0 مستلمين</span>
|
|
</div>
|
|
<div class="row g-3">
|
|
<div class="col-lg-6">
|
|
<label class="form-label mb-1">أرقام واتساب الملخص اليومي</label>
|
|
<textarea class="form-control" name="wablas_report_recipients" rows="5" dir="ltr"></textarea>
|
|
<div class="form-text">هذه الأرقام فقط ستستلم الملخص اليومي.</div>
|
|
</div>
|
|
<div class="col-lg-6">
|
|
<div class="border rounded-4 bg-body-tertiary p-3 h-100">
|
|
<div class="form-check form-switch mb-3">
|
|
<input type="hidden" name="wablas_daily_auto_send" value="0">
|
|
<input class="form-check-input" type="checkbox" role="switch" id="wablasDailyAutoSend" name="wablas_daily_auto_send" value="1" >
|
|
<label class="form-check-label fw-semibold" for="wablasDailyAutoSend">تفعيل الإرسال التلقائي للملخص اليومي</label>
|
|
</div>
|
|
<label class="form-label mb-1" for="wablasDailyAutoTime">وقت الإرسال اليومي</label>
|
|
<input type="time" class="form-control" id="wablasDailyAutoTime" name="wablas_daily_auto_time" value="21:00">
|
|
<div class="form-text mt-2">سيتم الإرسال مرة واحدة يومياً بعد هذا الوقت عند أول استخدام للنظام.</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
<label class="form-label mb-1 mt-3">قالب الملخص اليومي</label>
|
|
<textarea class="form-control" id="wablasDailyTemplate" name="wablas_template_daily_report" rows="12" data-wablas-preview-source="daily">📊 ملخص المبيعات اليومي
|
|
📅 التاريخ: {report_date}
|
|
🏪 الفرع: {branch_name}
|
|
🛒 عدد الفواتير: {invoice_count}
|
|
💰 إجمالي المبيعات: {total_sales}
|
|
|
|
🧑🍳حسب الموظف:
|
|
{seller_summary}
|
|
|
|
🏪 حسب الفرع:
|
|
{outlet_summary}
|
|
|
|
💳 حسب الدفع:
|
|
{payment_summary}
|
|
|
|
وقت الإرسال: {generated_at}</textarea>
|
|
<div class="small text-muted mt-2">المتغيرات المتاحة: {report_date}, {branch_name}, {invoice_count}, {total_sales}, {seller_summary}, {outlet_summary}, {payment_summary}, {generated_at}</div>
|
|
<div class="border rounded-3 bg-light-subtle p-3 mt-3">
|
|
<div class="small text-muted mb-2">معاينة مباشرة</div>
|
|
<pre class="small mb-0 text-wrap wablas-template-preview" data-wablas-preview="daily" data-preview-vars='{"report_date":"2026-04-23","branch_name":"main","invoice_count":"8","total_sales":"182.750 ر.ع","seller_summary":"- الموظف 1: 95.500 ر.ع\n- الموظف 2: 87.250 ر.ع","outlet_summary":"- main: 182.750 ر.ع","payment_summary":"- كاش: 120.000 ر.ع\n- بطاقة: 62.750 ر.ع","generated_at":"2026-04-23 20:10"}'>📊 ملخص المبيعات اليومي
|
|
📅 التاريخ: 2026-04-23
|
|
🏪 الفرع: main
|
|
🛒 عدد الفواتير: 8
|
|
💰 إجمالي المبيعات: 182.750 ر.ع
|
|
|
|
🧑🍳حسب الموظف:
|
|
- الموظف 1: 95.500 ر.ع
|
|
- الموظف 2: 87.250 ر.ع
|
|
|
|
🏪 حسب الفرع:
|
|
- main: 182.750 ر.ع
|
|
|
|
💳 حسب الدفع:
|
|
- كاش: 120.000 ر.ع
|
|
- بطاقة: 62.750 ر.ع
|
|
|
|
وقت الإرسال: 2026-04-23 20:10</pre>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
|
|
<div class="col-12">
|
|
<div class="border rounded-4 p-3 bg-white">
|
|
<div class="d-flex flex-column flex-lg-row justify-content-between align-items-lg-center gap-2 mb-3">
|
|
<div>
|
|
<h6 class="mb-1 fw-semibold">قوالب طلبات المتجر الإلكتروني</h6>
|
|
<div class="small text-muted">هذه القوالب تُرسل لعميل الطلب حسب حالة الطلب.</div>
|
|
</div>
|
|
</div>
|
|
<div class="row g-3">
|
|
<div class="col-12">
|
|
<label class="form-label mb-1">قالب رسالة إنشاء الطلب</label>
|
|
<textarea class="form-control" name="wablas_template_created" rows="4">مرحباً {customer_name}، تم استلام طلبك رقم #{order_id}.
|
|
الحالة: {status_label}
|
|
الإجمالي: {total_amount}
|
|
العنوان: {customer_address}
|
|
شكراً لتسوقك معنا.</textarea>
|
|
</div>
|
|
<div class="col-md-6">
|
|
<label class="form-label mb-1">قالب قيد الانتظار</label>
|
|
<textarea class="form-control" name="wablas_template_pending" rows="4">مرحباً {customer_name}، طلبك رقم #{order_id} ما زال {status_label}.
|
|
الإجمالي: {total_amount}
|
|
سنوافيك بأي تحديث جديد.</textarea>
|
|
</div>
|
|
<div class="col-md-6">
|
|
<label class="form-label mb-1">قالب مقبول</label>
|
|
<textarea class="form-control" name="wablas_template_accepted" rows="4">مرحباً {customer_name}، تم قبول طلبك رقم #{order_id}.
|
|
الإجمالي: {total_amount}
|
|
سنبدأ التجهيز الآن.</textarea>
|
|
</div>
|
|
<div class="col-md-6">
|
|
<label class="form-label mb-1">قالب مكتمل</label>
|
|
<textarea class="form-control" name="wablas_template_completed" rows="4">مرحباً {customer_name}، طلبك رقم #{order_id} أصبح {status_label}.
|
|
الإجمالي: {total_amount}
|
|
شكراً لك.</textarea>
|
|
</div>
|
|
<div class="col-md-6">
|
|
<label class="form-label mb-1">قالب مرفوض</label>
|
|
<textarea class="form-control" name="wablas_template_rejected" rows="4">مرحباً {customer_name}، نعتذر، تم تحديث طلبك رقم #{order_id} إلى {status_label}.
|
|
إذا رغبت بالمساعدة تواصل معنا.</textarea>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
<div class="modal-footer">
|
|
<button type="button" class="btn btn-secondary" data-bs-dismiss="modal">إلغاء</button>
|
|
<button type="submit" class="btn btn-success">حفظ إعدادات واتساب</button>
|
|
</div>
|
|
</form>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
<script>
|
|
document.addEventListener('DOMContentLoaded', function () {
|
|
var settingsModalEl = document.getElementById('settingsModal');
|
|
var wablasModalEl = document.getElementById('wablasSettingsModal');
|
|
var wablasForm = document.getElementById('wablasSettingsForm');
|
|
var wablasAlertEl = document.getElementById('wablasSettingsAlert');
|
|
var reopenSettingsAfterWablas = false;
|
|
|
|
var showWablasAlert = function (type, message) {
|
|
if (!wablasAlertEl) {
|
|
return;
|
|
}
|
|
var alertClass = type === 'success' ? 'alert-success' : (type === 'warning' ? 'alert-warning' : 'alert-danger');
|
|
wablasAlertEl.className = 'alert ' + alertClass;
|
|
wablasAlertEl.textContent = message || '';
|
|
wablasAlertEl.classList.remove('d-none');
|
|
};
|
|
|
|
var clearWablasAlert = function () {
|
|
if (!wablasAlertEl) {
|
|
return;
|
|
}
|
|
wablasAlertEl.className = 'alert d-none';
|
|
wablasAlertEl.textContent = '';
|
|
};
|
|
|
|
document.querySelectorAll('[data-open-wablas-settings]').forEach(function (trigger) {
|
|
trigger.addEventListener('click', function () {
|
|
if (!wablasModalEl || typeof bootstrap === 'undefined') {
|
|
return;
|
|
}
|
|
|
|
var wablasModal = bootstrap.Modal.getOrCreateInstance(wablasModalEl);
|
|
if (settingsModalEl && settingsModalEl.classList.contains('show')) {
|
|
reopenSettingsAfterWablas = true;
|
|
settingsModalEl.addEventListener('hidden.bs.modal', function handleSettingsHidden() {
|
|
settingsModalEl.removeEventListener('hidden.bs.modal', handleSettingsHidden);
|
|
wablasModal.show();
|
|
});
|
|
bootstrap.Modal.getOrCreateInstance(settingsModalEl).hide();
|
|
return;
|
|
}
|
|
|
|
wablasModal.show();
|
|
});
|
|
});
|
|
|
|
if (settingsModalEl && wablasModalEl && typeof bootstrap !== 'undefined') {
|
|
wablasModalEl.addEventListener('hidden.bs.modal', function () {
|
|
clearWablasAlert();
|
|
if (!reopenSettingsAfterWablas) {
|
|
return;
|
|
}
|
|
reopenSettingsAfterWablas = false;
|
|
bootstrap.Modal.getOrCreateInstance(settingsModalEl).show();
|
|
});
|
|
}
|
|
|
|
if (wablasModalEl && typeof bootstrap !== 'undefined') {
|
|
var wablasUrl = new URL(window.location.href);
|
|
if (wablasUrl.searchParams.get('open_modal') === 'wablas') {
|
|
bootstrap.Modal.getOrCreateInstance(wablasModalEl).show();
|
|
wablasUrl.searchParams.delete('open_modal');
|
|
if (window.history && typeof window.history.replaceState === 'function') {
|
|
window.history.replaceState({}, document.title, wablasUrl.pathname + (wablasUrl.search ? '?' + wablasUrl.searchParams.toString() : '') + wablasUrl.hash);
|
|
}
|
|
}
|
|
}
|
|
|
|
if (wablasForm && window.fetch) {
|
|
wablasForm.addEventListener('submit', function (event) {
|
|
var submitter = event.submitter;
|
|
if (!submitter) {
|
|
return;
|
|
}
|
|
|
|
event.preventDefault();
|
|
clearWablasAlert();
|
|
|
|
var action = submitter.getAttribute('formaction') || wablasForm.getAttribute('action') || window.location.href;
|
|
var method = submitter.getAttribute('formmethod') || wablasForm.getAttribute('method') || 'POST';
|
|
var formData = new FormData(wablasForm, submitter);
|
|
var originalHtml = submitter.innerHTML;
|
|
|
|
submitter.disabled = true;
|
|
submitter.setAttribute('aria-busy', 'true');
|
|
submitter.innerHTML = '<span class="spinner-border spinner-border-sm me-2" role="status" aria-hidden="true"></span>جارٍ الحفظ...';
|
|
|
|
fetch(action, {
|
|
method: method.toUpperCase(),
|
|
body: formData,
|
|
headers: {
|
|
'X-Requested-With': 'XMLHttpRequest',
|
|
'Accept': 'application/json'
|
|
},
|
|
credentials: 'same-origin'
|
|
}).then(function (response) {
|
|
return response.json().catch(function () {
|
|
return { success: false, type: 'danger', message: 'Unexpected response.' };
|
|
});
|
|
}).then(function (data) {
|
|
var type = data && data.type ? data.type : (data && data.success ? 'success' : 'danger');
|
|
var message = data && data.message ? data.message : 'Request finished.';
|
|
showWablasAlert(type, message);
|
|
|
|
if (typeof Swal !== 'undefined') {
|
|
Swal.fire({
|
|
icon: type === 'success' ? 'success' : (type === 'warning' ? 'warning' : 'error'),
|
|
title: message,
|
|
toast: true,
|
|
position: 'top-end',
|
|
showConfirmButton: false,
|
|
timer: 3000,
|
|
timerProgressBar: true
|
|
});
|
|
}
|
|
}).catch(function () {
|
|
showWablasAlert('danger', 'تعذر حفظ الإعدادات حالياً. حاول مرة أخرى.');
|
|
}).finally(function () {
|
|
submitter.disabled = false;
|
|
submitter.removeAttribute('aria-busy');
|
|
submitter.innerHTML = originalHtml;
|
|
});
|
|
});
|
|
}
|
|
|
|
document.querySelectorAll('[data-wablas-preview-source]').forEach(function (field) {
|
|
var key = field.getAttribute('data-wablas-preview-source');
|
|
var preview = document.querySelector('[data-wablas-preview="' + key + '"]');
|
|
if (!preview) {
|
|
return;
|
|
}
|
|
|
|
var vars = {};
|
|
try {
|
|
vars = JSON.parse(preview.getAttribute('data-preview-vars') || '{}');
|
|
} catch (error) {
|
|
vars = {};
|
|
}
|
|
|
|
var render = function (template) {
|
|
return String(template || '').replace(/\{([a-z0-9_]+)\}/gi, function (match, token) {
|
|
return Object.prototype.hasOwnProperty.call(vars, token) ? String(vars[token]) : match;
|
|
});
|
|
};
|
|
|
|
var sync = function () {
|
|
preview.textContent = render(field.value);
|
|
};
|
|
|
|
field.addEventListener('input', sync);
|
|
sync();
|
|
});
|
|
});
|
|
</script>
|
|
|
|
<script src="https://cdn.jsdelivr.net/npm/bootstrap@5.3.3/dist/js/bootstrap.bundle.min.js" crossorigin="anonymous"></script>
|
|
<script>
|
|
// Menu Toggle Script
|
|
document.addEventListener('DOMContentLoaded', function() {
|
|
var toggleBtn = document.getElementById("menu-toggle");
|
|
if (toggleBtn) {
|
|
toggleBtn.addEventListener('click', function(e) {
|
|
e.preventDefault();
|
|
document.getElementById("wrapper").classList.toggle("toggled");
|
|
});
|
|
}
|
|
});
|
|
</script>
|
|
<script>
|
|
function confirmSwal(e, msg) {
|
|
e.preventDefault();
|
|
const form = e.target;
|
|
Swal.fire({
|
|
title: msg,
|
|
icon: 'warning',
|
|
showCancelButton: true,
|
|
confirmButtonText: 'نعم',
|
|
cancelButtonText: 'إلغاء',
|
|
confirmButtonColor: '#d33'
|
|
}).then((result) => {
|
|
if (result.isConfirmed) {
|
|
form.submit();
|
|
}
|
|
});
|
|
}
|
|
</script>
|
|
<script src="assets/js/main.js?v=202604232010"></script>
|
|
</body>
|
|
</html>
|