prepare("SELECT SUM(total_price) as total_revenue, COUNT(*) as total_orders, AVG(total_price) as avg_order_value FROM orders o $where"); $stmt->execute($params); $summary = $stmt->fetch(); // Revenue by Branch $stmt = db()->prepare("SELECT b.name_en, b.name_ar, SUM(o.total_price) as revenue FROM orders o JOIN branches b ON o.branch_id = b.id $where GROUP BY o.branch_id"); $stmt->execute($params); $revenue_by_branch = $stmt->fetchAll(); // Revenue by Cashier $stmt = db()->prepare("SELECT u.full_name_en, u.full_name_ar, SUM(o.total_price) as revenue FROM orders o JOIN users u ON o.user_id = u.id $where GROUP BY o.user_id"); $stmt->execute($params); $revenue_by_user = $stmt->fetchAll(); // Orders by Status $stmt = db()->prepare("SELECT status, COUNT(*) as count FROM orders o $where GROUP BY status"); $stmt->execute($params); $orders_by_status = $stmt->fetchAll(); // Revenue by Payment Method $stmt = db()->prepare("SELECT p.payment_method, SUM(p.amount) as revenue FROM payments p JOIN orders o ON p.order_id = o.id $where GROUP BY p.payment_method"); $stmt->execute($params); $revenue_by_method = $stmt->fetchAll(); // Top Items $stmt = db()->prepare("SELECT i.name_en, i.name_ar, SUM(oi.quantity) as total_qty, SUM(oi.subtotal) as total_revenue FROM order_items oi JOIN orders o ON oi.order_id = o.id JOIN items i ON oi.item_id = i.id $where GROUP BY oi.item_id ORDER BY total_qty DESC LIMIT 10"); $stmt->execute($params); $top_items = $stmt->fetchAll(); // Top Services $stmt = db()->prepare("SELECT s.name_en, s.name_ar, SUM(oi.quantity) as total_qty, SUM(oi.subtotal) as total_revenue FROM order_items oi JOIN orders o ON oi.order_id = o.id JOIN services s ON oi.service_id = s.id $where GROUP BY oi.service_id ORDER BY total_qty DESC LIMIT 10"); $stmt->execute($params); $top_services = $stmt->fetchAll(); // Fetch branches and users for filters $branches = db()->query("SELECT id, name_en, name_ar FROM branches")->fetchAll(); $users = db()->query("SELECT id, full_name_en, full_name_ar FROM users")->fetchAll(); // Filter display names $branch_name = __('all_branches'); if ($branch_filter !== 'all') { foreach($branches as $b) { if ($b['id'] == $branch_filter) { $branch_name = is_arabic() ? $b['name_ar'] : $b['name_en']; break; } } } $user_name = __('all'); if ($user_filter !== 'all') { foreach($users as $u) { if ($u['id'] == $user_filter) { $user_name = is_arabic() ? $u['full_name_ar'] : $u['full_name_en']; break; } } } // Fallback values if database is empty $display_company_name = ($lang === 'ar' ? ($company_info['name_ar'] ?: $company_info['name_en']) : $company_info['name_en']) ?: 'Laundry Brand'; $display_address = ($lang === 'ar' ? ($company_info['address_ar'] ?: $company_info['address_en']) : $company_info['address_en']); $display_phone = $company_info['phone']; $display_email = $company_info['email']; $display_vat = $company_info['vat_no'] ?: $company_info['vat_number']; $display_ctr = $company_info['ctr_no']; ?>
= __('date_range') ?>: = $from_date ?> - = $to_date ?>
= __('outlet') ?>: = $branch_name ?>
= __('cashier') ?>: = $user_name ?>
= __('print_date') ?? 'Print Date' ?>: = date('d/m/Y H:i') ?>
| = __('item') ?> | = __('qty') ?> | = __('revenue') ?> |
|---|---|---|
| = is_arabic() ? $item['name_ar'] : $item['name_en'] ?> | = $item['total_qty'] ?> | = format_amount($item['total_revenue']) ?> |
| = __('service') ?> | = __('qty') ?> | = __('revenue') ?> |
|---|---|---|
| = is_arabic() ? $service['name_ar'] : $service['name_en'] ?> | = $service['total_qty'] ?> | = format_amount($service['total_revenue']) ?> |