prepare("UPDATE sales_orders SET status = 'completed' WHERE id = ?")->execute([$id]); } catch(Throwable $e) {} $redirect = $_GET["redirect"] ?? "sales.php"; header("Location: " . $redirect); exit; } $dbError = null; $sales = []; $totalPages = 1; $page = max(1, (int)($_GET['p'] ?? 1)); $limit = 10; $offset = ($page - 1) * $limit; try { ensure_sales_table(); $params = []; $where = ' WHERE 1=1 '; if ($mode) { $where .= ' AND sale_mode = :sale_mode '; $params[':sale_mode'] = $mode; } if ($branch) { $where .= ' AND branch_code = :branch_code '; $params[':branch_code'] = $branch; } if ($user && $user['role'] !== 'owner') { $ubranches = get_user_branches($user); if (empty($ubranches)) { $where .= ' AND 1=0 '; } else { $namedParams = []; foreach ($ubranches as $i => $ub) { $key = ':v_branch_' . $i; $namedParams[] = $key; $params[$key] = $ub; } $where .= ' AND branch_code IN (' . implode(', ', $namedParams) . ') '; } } if ($search) { $where .= ' AND (receipt_no LIKE :search OR cashier_name LIKE :search OR customer_name LIKE :search)'; $params[':search'] = "%$search%"; } if ($statusFilter === 'order') { $where .= " AND status = 'order' "; } elseif ($statusFilter === 'completed') { $where .= " AND status = 'completed' "; } // Pagination counts $countSql = 'SELECT COUNT(*) FROM sales_orders' . $where; $countStmt = db()->prepare($countSql); foreach ($params as $key => $value) { $countStmt->bindValue($key, $value); } $countStmt->execute(); $total = $countStmt->fetchColumn(); $totalPages = max(1, ceil($total / $limit)); // Fetch Data $sql = 'SELECT * FROM sales_orders' . $where . ' ORDER BY sale_date DESC LIMIT :limit OFFSET :offset'; $stmt = db()->prepare($sql); foreach ($params as $key => $value) { $stmt->bindValue($key, $value); } $stmt->bindValue(':limit', $limit, PDO::PARAM_INT); $stmt->bindValue(':offset', $offset, PDO::PARAM_INT); $stmt->execute(); $sales = $stmt->fetchAll(); } catch (Throwable $e) { $dbError = $e->getMessage(); } require __DIR__ . '/includes/header.php'; ?>

POS

POS
1): ?>