prepare("SELECT * FROM online_orders WHERE id = ?"); $beforeStmt->execute([$id]); $order = $beforeStmt->fetch(PDO::FETCH_ASSOC); if ($order) { $previousItems = json_decode((string) ($order['items_json'] ?? '[]'), true) ?: []; $oldStatus = (string) ($order['status'] ?? 'pending'); $db->beginTransaction(); try { sync_online_order_stock_reservation($previousItems, $oldStatus, $previousItems, $status); $stmt = $db->prepare("UPDATE online_orders SET status = ? WHERE id = ?"); $stmt->execute([$status, $id]); $db->commit(); } catch (Throwable $e) { if ($db->inTransaction()) { $db->rollBack(); } throw $e; } } if ($order && ($order['status'] ?? 'pending') !== $status) { $order['status'] = $status; if (($order['customer_phone'] ?? '') !== '' && wablas_is_configured()) { wablas_notify_online_order($order, $status); } } set_flash('success', tr('تم تحديث حالة الطلب', 'Order status updated')); redirect_to('online_orders.php'); } elseif ($_POST['action'] === 'delete') { $id = (int)$_POST['id']; $beforeStmt = $db->prepare("SELECT * FROM online_orders WHERE id = ?"); $beforeStmt->execute([$id]); $order = $beforeStmt->fetch(PDO::FETCH_ASSOC); $db->beginTransaction(); try { if ($order) { $previousItems = json_decode((string) ($order['items_json'] ?? '[]'), true) ?: []; sync_online_order_stock_reservation($previousItems, (string) ($order['status'] ?? 'pending'), [], 'rejected'); } $stmt = $db->prepare("DELETE FROM online_orders WHERE id = ?"); $stmt->execute([$id]); $db->commit(); } catch (Throwable $e) { if ($db->inTransaction()) { $db->rollBack(); } throw $e; } set_flash('success', tr('تم حذف الطلب بنجاح', 'Order deleted successfully')); redirect_to('online_orders.php'); } } $search = $_GET['search'] ?? ''; $date_from = $_GET['date_from'] ?? date('Y-m-d', strtotime('-30 days')); $date_to = $_GET['date_to'] ?? date('Y-m-d'); $query = "SELECT * FROM online_orders WHERE DATE(created_at) >= ? AND DATE(created_at) <= ?"; $params = [$date_from, $date_to]; if ($search !== '') { $query .= " AND (customer_name LIKE ? OR customer_phone LIKE ? OR CONCAT('968', customer_phone) LIKE ?)"; $params[] = "%$search%"; $params[] = "%$search%"; $params[] = "%$search%"; } $query .= " ORDER BY created_at DESC"; $stmt = $db->prepare($query); $stmt->execute($params); $orders = $stmt->fetchAll(PDO::FETCH_ASSOC); require __DIR__ . '/includes/header.php'; ?>

-

#
#