diff --git a/includes/lang.php b/includes/lang.php index fc26924..9b485c9 100644 --- a/includes/lang.php +++ b/includes/lang.php @@ -137,7 +137,17 @@ $translations = [ 'lab' => 'Lab Module', 'outlet' => 'Outlet', 'view_items' => 'View Items', - 'initial_letters' => 'Initial letters (3 letters)' + 'initial_letters' => 'Initial letters (3 letters)', + 'from_date' => 'From Date', + 'to_date' => 'To Date', + 'order_no' => 'Order No', + 'all_status' => 'All Status', + 'all_payments' => 'All Payments', + 'search_placeholder' => 'Search by Phone, Order No, Name...', + 'previous' => 'Previous', + 'next' => 'Next', + 'page' => 'Page', + 'of' => 'of' ], 'ar' => [ 'dashboard' => 'لوحة القيادة', @@ -268,7 +278,17 @@ $translations = [ 'lab' => 'وحدة المختبر', 'outlet' => 'المنفذ', 'view_items' => 'عرض الأصناف', - 'initial_letters' => 'الحروف الأولى (3 حروف)' + 'initial_letters' => 'الحروف الأولى (3 حروف)', + 'from_date' => 'من تاريخ', + 'to_date' => 'إلى تاريخ', + 'order_no' => 'رقم الطلب', + 'all_status' => 'جميع الحالات', + 'all_payments' => 'جميع المدفوعات', + 'search_placeholder' => 'بحث بالهاتف، رقم الطلب، الاسم...', + 'previous' => 'السابق', + 'next' => 'التالي', + 'page' => 'صفحة', + 'of' => 'من' ] ]; @@ -297,4 +317,4 @@ function decimals() { function format_amount($amount) { return number_format((float)$amount, decimals()) . ' ' . currency(); -} \ No newline at end of file +} diff --git a/lab.php b/lab.php index 66c1f91..505163a 100644 --- a/lab.php +++ b/lab.php @@ -4,27 +4,60 @@ require_once __DIR__ . '/includes/header.php'; $current_role = $_SESSION['role'] ?? 'cashier'; +// Filters $status_filter = $_GET['status'] ?? ''; $branch_filter = $_GET['branch_id'] ?? ''; +$from_date = $_GET['from_date'] ?? ''; +$to_date = $_GET['to_date'] ?? ''; +$search = $_GET['search'] ?? ''; -$sql = "SELECT o.*, c.name_en as customer_name_en, c.name_ar as customer_name_ar, - b.name_en as branch_name_en, b.name_ar as branch_name_ar - FROM orders o - LEFT JOIN customers c ON o.customer_id = c.id - LEFT JOIN branches b ON o.branch_id = b.id - WHERE 1=1"; +// Pagination +$page = isset($_GET['page']) ? (int)$_GET['page'] : 1; +if ($page < 1) $page = 1; +$limit = 10; +$offset = ($page - 1) * $limit; + +$sql_base = " FROM orders o + LEFT JOIN customers c ON o.customer_id = c.id + LEFT JOIN branches b ON o.branch_id = b.id + WHERE 1=1"; $params = []; if ($status_filter) { - $sql .= " AND o.status = ?"; + $sql_base .= " AND o.status = ?"; $params[] = $status_filter; } if ($branch_filter) { - $sql .= " AND o.branch_id = ?"; + $sql_base .= " AND o.branch_id = ?"; $params[] = $branch_filter; } +if ($from_date) { + $sql_base .= " AND DATE(o.created_at) >= ?"; + $params[] = $from_date; +} +if ($to_date) { + $sql_base .= " AND DATE(o.created_at) <= ?"; + $params[] = $to_date; +} +if ($search) { + $sql_base .= " AND (o.order_number LIKE ? OR c.phone LIKE ? OR c.name_en LIKE ? OR c.name_ar LIKE ?)"; + $search_param = "%$search%"; + $params[] = $search_param; + $params[] = $search_param; + $params[] = $search_param; + $params[] = $search_param; +} -$sql .= " ORDER BY o.created_at DESC"; +// Total count for pagination +$count_sql = "SELECT COUNT(*) " . $sql_base; +$stmt_count = db()->prepare($count_sql); +$stmt_count->execute($params); +$total_items = $stmt_count->fetchColumn(); +$total_pages = ceil($total_items / $limit); + +// Final data query +$sql = "SELECT o.*, c.name_en as customer_name_en, c.name_ar as customer_name_ar, c.phone as customer_phone, + b.name_en as branch_name_en, b.name_ar as branch_name_ar " . $sql_base . " ORDER BY o.created_at DESC LIMIT $limit OFFSET $offset"; $stmt = db()->prepare($sql); $stmt->execute($params); $orders = $stmt->fetchAll(); @@ -39,28 +72,40 @@ $branches = db()->query("SELECT id, name_en, name_ar FROM branches")->fetchAll()
= __('manage_orders_across_outlets') ?? 'Manage orders across all outlets' ?>
-|
= $lang === 'ar' ? ($order['customer_name_ar'] ?: $order['customer_name_en']) : $order['customer_name_en'] ?>
+ = $order['customer_phone'] ?>
|
= __($order['status']) ?> | = date('d/m/Y H:i', strtotime($order['created_at'])) ?> | @@ -112,6 +158,25 @@ $branches = db()->query("SELECT id, name_en, name_ar FROM branches")->fetchAll()