diff --git a/call_center_pro.php b/call_center_pro.php index 4ec2e54c..3d88053d 100644 --- a/call_center_pro.php +++ b/call_center_pro.php @@ -146,7 +146,7 @@ $orders = []; $visibleOrders = []; $modalsHtml = []; $totalRows = 0; -$loadLimit = 20; +$loadLimit = $storeKey === 'otra_tienda' ? 0 : 100; $startRow = (int) ($storeConfig['startRow'] ?? 5552); $catalogoProductos = []; $stats = [ diff --git a/duplicados.php b/duplicados.php index 936fb3e5..17ffbbc9 100644 --- a/duplicados.php +++ b/duplicados.php @@ -39,11 +39,23 @@ function getStatusStyle($status) { } function getPendientesStyle($pendientes) { - if ($pendientes === 'PENDIENTE') return 'background-color: #ffc107; color: black;'; // Warning yellow - if ($pendientes === 'GESTIONADO') return 'background-color: #198754; color: white;'; // Success green + $v = strtoupper(trim((string)$pendientes)); + if ($v === 'PENDIENTE') return 'background-color: #ffc107; color: black;'; // Warning yellow + if ($v === 'GESTIONADO') return 'background-color: #198754; color: white;'; // Success green return 'background-color: #6c757d; color: white;'; // Secondary grey } +function formatPendientesLabel($pendientes) { + $raw = (string)$pendientes; + $v = strtoupper(trim($raw)); + + if ($v === 'PENDIENTE') return 'PENDIENTE A GESTIONAR'; + if ($v === 'GESTIONADO') return 'GESTIONADO'; + if ($v === '') return 'Seleccionar'; + + return $raw; +} + $pdo = db(); $user_id = $_SESSION['user_id']; @@ -203,7 +215,7 @@ include 'layout_header.php'; - + @@ -251,11 +263,19 @@ $(document).ready(function() { }); function getPendientesStyleJS(pendientes) { - if (pendientes === 'PENDIENTE') return 'background-color: #ffc107; color: black;'; - if (pendientes === 'GESTIONADO') return 'background-color: #198754; color: white;'; + const v = (pendientes || '').toString().toUpperCase().trim(); + if (v === 'PENDIENTE') return 'background-color: #ffc107; color: black;'; + if (v === 'GESTIONADO') return 'background-color: #198754; color: white;'; return 'background-color: #6c757d; color: white;'; } +function formatPendientesLabelJS(value) { + const v = (value || '').toString().toUpperCase().trim(); + if (!v) return 'Seleccionar'; + if (v === 'PENDIENTE') return 'PENDIENTE A GESTIONAR'; + return v; +} + document.addEventListener('DOMContentLoaded', function() { const table = document.querySelector('.table'); @@ -274,7 +294,7 @@ document.addEventListener('DOMContentLoaded', function() { const options = [ {val: '', text: 'Seleccionar'}, - {val: 'PENDIENTE', text: 'PENDIENTE'}, + {val: 'PENDIENTE', text: 'PENDIENTE A GESTIONAR'}, {val: 'GESTIONADO', text: 'GESTIONADO'} ]; @@ -298,7 +318,7 @@ document.addEventListener('DOMContentLoaded', function() { // Optimistic update cell.dataset.value = newVal; - cell.innerHTML = `${newVal || 'Seleccionar'}`; + cell.innerHTML = `${formatPendientesLabelJS(newVal)}`; if (newVal === currentVal) return; // No change diff --git a/gestiones.php b/gestiones.php index aae04f91..2ba75167 100644 --- a/gestiones.php +++ b/gestiones.php @@ -35,11 +35,23 @@ function getStatusStyle($status) { } function getPendientesStyle($pendientes) { - if ($pendientes === 'PENDIENTE') return 'background-color: #ffc107; color: black;'; // Warning yellow - if ($pendientes === 'GESTIONADO') return 'background-color: #198754; color: white;'; // Success green + $v = strtoupper(trim((string)$pendientes)); + if ($v === 'PENDIENTE') return 'background-color: #ffc107; color: black;'; // Warning yellow + if ($v === 'GESTIONADO') return 'background-color: #198754; color: white;'; // Success green return 'background-color: #6c757d; color: white;'; // Secondary grey } +function formatPendientesLabel($pendientes) { + $raw = (string)$pendientes; + $v = strtoupper(trim($raw)); + + if ($v === 'PENDIENTE') return 'PENDIENTE A GESTIONAR'; + if ($v === 'GESTIONADO') return 'GESTIONADO'; + if ($v === '') return 'Seleccionar'; + + return $raw; +} + $pdo = db(); $user_id = $_SESSION['user_id']; @@ -199,7 +211,7 @@ include 'layout_header.php'; - + @@ -247,11 +259,19 @@ $(document).ready(function() { }); function getPendientesStyleJS(pendientes) { - if (pendientes === 'PENDIENTE') return 'background-color: #ffc107; color: black;'; - if (pendientes === 'GESTIONADO') return 'background-color: #198754; color: white;'; + const v = (pendientes || '').toString().toUpperCase().trim(); + if (v === 'PENDIENTE') return 'background-color: #ffc107; color: black;'; + if (v === 'GESTIONADO') return 'background-color: #198754; color: white;'; return 'background-color: #6c757d; color: white;'; } +function formatPendientesLabelJS(value) { + const v = (value || '').toString().toUpperCase().trim(); + if (!v) return 'Seleccionar'; + if (v === 'PENDIENTE') return 'PENDIENTE A GESTIONAR'; + return v; +} + document.addEventListener('DOMContentLoaded', function() { const table = document.querySelector('.table'); @@ -270,7 +290,7 @@ document.addEventListener('DOMContentLoaded', function() { const options = [ {val: '', text: 'Seleccionar'}, - {val: 'PENDIENTE', text: 'PENDIENTE'}, + {val: 'PENDIENTE', text: 'PENDIENTE A GESTIONAR'}, {val: 'GESTIONADO', text: 'GESTIONADO'} ]; @@ -294,7 +314,7 @@ document.addEventListener('DOMContentLoaded', function() { // Optimistic update cell.dataset.value = newVal; - cell.innerHTML = `${newVal || 'Seleccionar'}`; + cell.innerHTML = `${formatPendientesLabelJS(newVal)}`; if (newVal === currentVal) return; // No change diff --git a/gestiones_callcenter.php b/gestiones_callcenter.php index 33aa2c67..0f835212 100644 --- a/gestiones_callcenter.php +++ b/gestiones_callcenter.php @@ -146,7 +146,7 @@ $orders = []; $visibleOrders = []; $modalsHtml = []; $totalRows = 0; -$loadLimit = 20; +$loadLimit = $storeKey === 'otra_tienda' ? 0 : 100; $cupoObjetivoPorAsesora = 10; $advisorOpenCounts = []; diff --git a/includes/drive_test_orders.php b/includes/drive_test_orders.php index 34f552c1..88f299a0 100644 --- a/includes/drive_test_orders.php +++ b/includes/drive_test_orders.php @@ -25,7 +25,7 @@ function drive_test_available_stores(): array 'label' => 'TUANI', 'spreadsheet_id' => '1QYKeBJIIqYm6yW6Ka-5gKdxhUHwXOAc0No7RjnimxTw', 'sheet_gid' => 1523126328, - 'startRow' => 5552, + 'startRow' => 6710, ], ]; } diff --git a/pedidos.php b/pedidos.php index a4106d02..ab120cf9 100644 --- a/pedidos.php +++ b/pedidos.php @@ -10,6 +10,7 @@ require_once 'db/config.php'; function getStatusStyle($status) { $style = 'color: white;'; // Default text color $bgColor = '#0dcaf0'; // Default info blue + $shadow = ''; // Default no shadow switch (strtoupper(trim($status))) { case 'ROTULADO': @@ -30,6 +31,11 @@ function getStatusStyle($status) { case 'COMPLETADO ✅': $bgColor = '#198754'; // dark green break; + case 'PENDIENTE': + $bgColor = '#dc3545'; // red + $style = 'color: white;'; + $shadow = 'box-shadow: 0 0.6rem 1.2rem rgba(220, 53, 69, 0.35) !important;'; + break; case 'GESTION': $bgColor = '#6c757d'; // secondary grey break; @@ -53,11 +59,34 @@ function getStatusStyle($status) { $bgColor = '#6f42c1'; // indigo/purple break; } - return "background-color: {$bgColor} !important; {$style}"; + return "background-color: {$bgColor} !important; {$style} {$shadow}"; } $pdo = db(); +// Auto-promoción: los pedidos rotulados que ya superaron 1 día pasan a estado PENDIENTE +// (para que se vean más resaltantes en la operación). +$auto_promoted_count = 0; +try { + $auto_stmt = $pdo->prepare(" + UPDATE pedidos + SET estado = 'PENDIENTE' + WHERE estado = 'ROTULADO 📦' + AND created_at <= NOW() - INTERVAL 1 DAY + "); + $auto_stmt->execute(); + $auto_promoted_count = (int)$auto_stmt->rowCount(); +} catch (PDOException $e) { + error_log('Auto-promote ROTULADO 📦 -> PENDIENTE failed: ' . $e->getMessage()); +} + +if ($auto_promoted_count > 0 && empty($_SESSION['flash_message'])) { + $_SESSION['flash_message'] = [ + 'type' => 'warning', + 'message' => 'Se marcaron automáticamente ' . $auto_promoted_count . ' pedido(s) como "PENDIENTE" (pasaron 1 día desde su creación) y siguen visibles en Pedidos Rotulados.' + ]; +} + $user_id = $_SESSION['user_id']; $user_role = $_SESSION['user_role'] ?? 'Asesor'; @@ -78,7 +107,7 @@ $selected_month = $_GET['mes'] ?? ''; $selected_year = $_GET['año'] ?? ''; $search_query = $_GET['q'] ?? ''; -$sql = "SELECT p.*, u.nombre_asesor as asesor_nombre FROM pedidos p LEFT JOIN users u ON p.asesor_id = u.id WHERE p.estado = 'ROTULADO 📦'"; +$sql = "SELECT p.*, u.nombre_asesor as asesor_nombre FROM pedidos p LEFT JOIN users u ON p.asesor_id = u.id WHERE (p.estado = 'ROTULADO 📦' OR (p.estado = 'PENDIENTE' AND p.created_at <= NOW() - INTERVAL 1 DAY))"; $params = []; if ($user_role === 'Asesor') {