diff --git a/gestiones_callcenter.php b/gestiones_callcenter.php new file mode 100644 index 00000000..d3f1f0b6 --- /dev/null +++ b/gestiones_callcenter.php @@ -0,0 +1,301 @@ +prepare("SELECT + COUNT(*) as total, + SUM(CASE WHEN estado = 'Gestion' THEN 1 ELSE 0 END) as pendientes, + SUM(CASE WHEN estado = 'NO CONTESTO, DEVOLVER LLAMADA' THEN 1 ELSE 0 END) as reintentos, + SUM(CASE WHEN estado = 'COMPLETADO ✅' THEN 1 ELSE 0 END) as cerrados +FROM pedidos WHERE asesor_id = ?"); +$stmt_stats->execute([$mi_id_asesora]); +$stats = $stmt_stats->fetch(PDO::FETCH_ASSOC); + +// 2. Determinar qué vista mostrar +$view = $_GET['view'] ?? 'pendientes'; +$where_clause = "AND estado = 'Gestion'"; +$titulo_tabla = "Pedidos Pendientes de Atención"; + +if ($view === 'reintentos') { + $where_clause = "AND estado = 'NO CONTESTO, DEVOLVER LLAMADA'"; + $titulo_tabla = "Reintentos (No contestaron)"; +} elseif ($view === 'cerrados') { + $where_clause = "AND estado = 'COMPLETADO ✅'"; + $titulo_tabla = "Ventas Cerradas (Confirmadas)"; +} elseif ($view === 'todos') { + $where_clause = ""; + $titulo_tabla = "Todos mis Pedidos Asignados"; +} + +// 3. Obtener la lista de pedidos según el filtro +$stmt_pedidos = $db->prepare("SELECT * FROM pedidos + WHERE asesor_id = ? + $where_clause + ORDER BY created_at DESC"); +$stmt_pedidos->execute([$mi_id_asesora]); +$pedidos = $stmt_pedidos->fetchAll(PDO::FETCH_ASSOC); + +include 'layout_header.php'; +?> + +
+
+
+

Mi Panel de Gestión (Call Center)

+

Haz clic en las tarjetas para filtrar los pedidos por estado.

+
+
+ + +
+ + + + +
+ + + + +
+
+
+ registros +
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Cliente / CelularUbicaciónProductoMontoEstado ActualAcciones de Gestión
+ + No hay pedidos en esta categoría. +
+
+
DNI:
+ + + +
+
+
+ +
+
+
+
Cant:
+
+ S/ + + + + + + +
+ + + + + + + + +
+ + + +
+
+
+
+
+ + + + diff --git a/layout_header.php b/layout_header.php index cbf77013..d5a4b9a3 100644 --- a/layout_header.php +++ b/layout_header.php @@ -273,8 +273,20 @@ $navItems = [ 'modulo_pruebas_group' => [ 'icon' => 'fa-flask', 'text' => 'Módulo de Pruebas', - 'roles' => ['Administrador', 'admin'], + 'roles' => ['Administrador', 'admin', 'Asesor'], 'submenu' => [ + 'call_center' => [ + 'url' => 'gestiones_callcenter.php', + 'icon' => 'fa-headset', + 'text' => 'Call Center (Mis Gestiones)', + 'roles' => ['Administrador', 'admin', 'Asesor'] + ], + 'simular_asignacion' => [ + 'url' => 'simular_asignacion.php', + 'icon' => 'fa-magic', + 'text' => 'Simular Asignación', + 'roles' => ['Administrador', 'admin'] + ], 'test_importar_drive' => [ 'url' => 'test_importar_drive.php', 'icon' => 'fa-google-drive', diff --git a/simular_asignacion.php b/simular_asignacion.php new file mode 100644 index 00000000..cf3df962 --- /dev/null +++ b/simular_asignacion.php @@ -0,0 +1,30 @@ +query("SELECT id, username FROM users LIMIT 1")->fetch(PDO::FETCH_ASSOC); +if (!$user) { + die("No hay usuarios en la base de datos para asignar."); +} + +$userId = $user['id']; +$username = $user['username']; + +// 2. Buscamos 5 pedidos que no tengan asesor o que estén en estado 'PENDIENTE' +$pedidos = $db->query("SELECT id FROM pedidos LIMIT 5")->fetchAll(PDO::FETCH_COLUMN); + +if (empty($pedidos)) { + die("No hay pedidos en la tabla 'pedidos' para simular."); +} + +// 3. Asignamos los pedidos al usuario y cambiamos el estado a 'Gestion' +$stmt = $db->prepare("UPDATE pedidos SET asesor_id = ?, estado = 'Gestion' WHERE id = ?"); + +foreach ($pedidos as $id) { + $stmt->execute([$userId, $id]); +} + +echo "

Simulación Exitosa

"; +echo "Se han asignado " . count($pedidos) . " pedidos al usuario $username (ID: $userId).
"; +echo "Ahora puedes verlos en el panel de gestión: Ir al Panel de Call Center"; diff --git a/update_estado.php b/update_estado.php index cdbbce6b..3e30704d 100644 --- a/update_estado.php +++ b/update_estado.php @@ -10,7 +10,7 @@ if (!isset($_SESSION['user_id'])) { } if ($_SERVER['REQUEST_METHOD'] === 'POST') { - $pedido_id = $_POST['pedido_id'] ?? null; + $pedido_id = $_POST['pedido_id'] ?? $_POST['id'] ?? null; $estado = $_POST['estado'] ?? null; if (!$pedido_id) { @@ -21,9 +21,9 @@ if ($_SERVER['REQUEST_METHOD'] === 'POST') { try { $pdo = db(); - $valid_states = ['RUTA_CONTRAENTREGA', 'PENDIENTE', 'NO CONTESTO, VOLVER A LLAMAR', 'CANCELADO', 'REPROGRAMADO', 'ENTREGA EXITOSA', 'RETORNADO', 'NO CONTESTO, DEVOLVER LLAMADA']; + $valid_states = ['RUTA_CONTRAENTREGA', 'PENDIENTE', 'NO CONTESTO, VOLVER A LLAMAR', 'CANCELADO', 'REPROGRAMADO', 'ENTREGA EXITOSA', 'RETORNADO', 'NO CONTESTO, DEVOLVER LLAMADA', 'COMPLETADO ✅', 'Gestion']; if (!in_array($estado, $valid_states)) { - echo json_encode(['success' => false, 'message' => 'Estado inválido']); + echo json_encode(['success' => false, 'message' => 'Estado inválido: ' . $estado]); exit; }