diff --git a/7796, b/7796, new file mode 100644 index 00000000..e69de29b diff --git a/call_center_pro.php b/call_center_pro.php index 2ef0524e..e59983e6 100644 --- a/call_center_pro.php +++ b/call_center_pro.php @@ -267,6 +267,24 @@ function cc_test_import_time(array $order): int return (int) ($order['id'] ?? 0); } + +function cc_test_order_priority_value(array $order): int +{ + $codigo = trim((string) ($order['codigo'] ?? '')); + if ($codigo !== '') { + $digits = preg_replace('/\D+/', '', $codigo); + if ($digits !== '') { + return (int) $digits; + } + } + + $sourceRow = (int) ($order['source_row'] ?? 0); + if ($sourceRow > 0) { + return $sourceRow; + } + + return (int) ($order['id'] ?? 0); +} function cc_test_followup_semaforo(array $order): ?array { if (cc_test_normalize_state((string) ($order['estado'] ?? '')) !== 'SE ENVIO NUMERO DE CUENTA') { @@ -845,6 +863,12 @@ try { $bImport = cc_test_import_time($b); if ($view === 'nuevos_hoy') { + $aOrderNumberValue = cc_test_order_priority_value($a); + $bOrderNumberValue = cc_test_order_priority_value($b); + if ($aOrderNumberValue !== $bOrderNumberValue) { + return $bOrderNumberValue <=> $aOrderNumberValue; + } + $aAssigned = cc_test_parse_datetime($a['assigned_at'] ?? null); $bAssigned = cc_test_parse_datetime($b['assigned_at'] ?? null); if ($aAssigned && $bAssigned && $aAssigned != $bAssigned) { @@ -859,24 +883,8 @@ try { } if ($view === 'ultimos_3_dias') { - $aOrderNumber = static function (array $order): int { - $codigo = trim((string) ($order['codigo'] ?? '')); - if ($codigo !== '') { - $digits = preg_replace("/[^0-9]+/", '', $codigo); - if ($digits !== '') { - return (int) $digits; - } - } - - $sourceRow = (int) ($order['source_row'] ?? 0); - if ($sourceRow > 0) { - return $sourceRow; - } - - return (int) ($order['id'] ?? 0); - }; - $aOrderNumberValue = $aOrderNumber($a); - $bOrderNumberValue = $aOrderNumber($b); + $aOrderNumberValue = cc_test_order_priority_value($a); + $bOrderNumberValue = cc_test_order_priority_value($b); if ($aOrderNumberValue !== $bOrderNumberValue) { return $bOrderNumberValue <=> $aOrderNumberValue; } @@ -1077,6 +1085,26 @@ if ($selectedAssessorFilter !== '') { $callCenterParams['assessor'] = $selectedAssessorFilter; } +$panelOrdersSignature = isset($visibleOrders) && is_array($visibleOrders) ? cc_test_panel_orders_signature($visibleOrders) : ''; +if (!empty($_GET['ajax_refresh'])) { + header('Content-Type: application/json; charset=utf-8'); + if ($errorMessage !== null) { + echo json_encode([ + 'success' => false, + 'error' => $errorMessage, + ], JSON_UNESCAPED_UNICODE | JSON_UNESCAPED_SLASHES); + } else { + echo json_encode([ + 'success' => true, + 'signature' => $panelOrdersSignature, + 'count' => $visibleOrdersTotalCount, + 'view' => $view, + 'store' => $storeKey, + ], JSON_UNESCAPED_UNICODE | JSON_UNESCAPED_SLASHES); + } + exit; +} + if ($isTuaniRecuperablesStore) { $pageTitle = 'Carritos recuperables | Bandeja compartida'; $pageDescription = 'Bandeja compartida para que cualquier asesora gestione carritos recuperables con vistas de seguimiento y observados desde Drive.'; @@ -1307,9 +1335,9 @@ require_once 'layout_header.php'; Drive detectado: filas Agregados: : distribución desde fila · último procesado Extracción: desde fila - Actualización manual + Actualización en vivo cada 10 min Ver vista previa Drive - + @@ -2263,6 +2291,15 @@ require_once 'layout_header.php';