= :date_from AND DATE(sale_date) <= :date_to'; $params[':date_from'] = $dateFrom; $params[':date_to'] = $dateTo; $sql = 'SELECT * FROM sales_orders' . $where . ' ORDER BY sale_date DESC'; try { $stmt = db()->prepare($sql); foreach ($params as $k => $v) { $stmt->bindValue($k, $v); } $stmt->execute(); $salesReport = $stmt->fetchAll(); } catch(Throwable $e) { $dbError = $e->getMessage(); $salesReport = []; } } elseif ($tab === 'orders') { $branchFilter = $_GET['branch'] ?? ''; $params = []; $where = base_sales_query_filters($params, null, $branchFilter ?: null); $where .= " AND status = 'order'"; $sql = 'SELECT * FROM sales_orders' . $where . ' ORDER BY sale_date ASC'; try { $stmt = db()->prepare($sql); foreach ($params as $k => $v) { $stmt->bindValue($k, $v); } $stmt->execute(); $followUpOrders = $stmt->fetchAll(); } catch(Throwable $e) { $dbError = $e->getMessage(); $followUpOrders = []; } } elseif ($tab === 'daily') { $reportDate = $_GET['date'] ?? date('Y-m-d'); $branchFilter = $_GET['branch'] ?? ''; $params = []; $where = base_sales_query_filters($params, null, $branchFilter ?: null); $where .= " AND DATE(sale_date) = :rdate AND status != 'order'"; $params[':rdate'] = $reportDate; $dailyTotals = [ 'seller' => [], 'outlet' => [], 'payment' => [], 'total' => 0 ]; try { // By Seller $sql = "SELECT cashier_name, SUM(total_amount) as total FROM sales_orders" . $where . " GROUP BY cashier_name"; $stmt = db()->prepare($sql); $stmt->execute($params); $dailyTotals['seller'] = $stmt->fetchAll(PDO::FETCH_KEY_PAIR); // By Outlet $sql = "SELECT branch_code, SUM(total_amount) as total FROM sales_orders" . $where . " GROUP BY branch_code"; $stmt = db()->prepare($sql); $stmt->execute($params); $dailyTotals['outlet'] = $stmt->fetchAll(PDO::FETCH_KEY_PAIR); // By Payment $sql = "SELECT payment_method, SUM(total_amount) as total FROM sales_orders" . $where . " GROUP BY payment_method"; $stmt = db()->prepare($sql); $stmt->execute($params); $dailyTotals['payment'] = $stmt->fetchAll(PDO::FETCH_KEY_PAIR); // Grand total $sql = "SELECT SUM(total_amount) as total FROM sales_orders" . $where; $stmt = db()->prepare($sql); $stmt->execute($params); $dailyTotals['total'] = (float) $stmt->fetchColumn(); } catch(Throwable $e) { $dbError = $e->getMessage(); } } else { $report = ['gross' => 0.0, 'branch_totals' => [], 'payment_totals' => [], 'product_totals' => [], 'sales_count' => 0]; try { $report = report_metrics(); } catch (Throwable $e) { $dbError = $e->getMessage(); } } require __DIR__ . '/includes/header.php'; ?>

    $amount): ?>

    $amount): ?>

    tr('كاش', 'Cash'), 'card' => tr('بطاقة', 'Card'), 'bank' => tr('تحويل بنكي', 'Bank'), 'mixed' => tr('متعدد', 'Mixed')]; foreach($dailyTotals['payment'] as $payment => $amount): ?>

$amount): $percent = $report['gross'] > 0 ? ($amount / $report['gross']) * 100 : 0; ?>
%

'success', 'card' => 'info', 'bank' => 'warning', 'mixed' => 'secondary']; foreach ($report['payment_totals'] as $payment => $amount): $percent = $report['gross'] > 0 ? ($amount / $report['gross']) * 100 : 0; $bg = $colors[$payment] ?? 'primary'; ?>
%