diff --git a/call_center_pro.php b/call_center_pro.php index 687cfd99..b4b6778c 100644 --- a/call_center_pro.php +++ b/call_center_pro.php @@ -326,6 +326,12 @@ if (!isset($availableStores[$storeKey])) { } $storeConfig = $availableStores[$storeKey]; $storeLabel = (string) ($storeConfig['label'] ?? strtoupper($storeKey)); +$recoverablesStoreKey = trim((string) ($storeConfig['recoverables_store_key'] ?? '')); +$recoverablesStoreLabel = $recoverablesStoreKey !== '' && isset($availableStores[$recoverablesStoreKey]) ? (string) ($availableStores[$recoverablesStoreKey]['label'] ?? strtoupper($recoverablesStoreKey)) : ''; +$recoverablesMainStoreKey = trim((string) ($storeConfig['main_store_key'] ?? '')); +$recoverablesMainStoreLabel = $recoverablesMainStoreKey !== '' && isset($availableStores[$recoverablesMainStoreKey]) ? (string) ($availableStores[$recoverablesMainStoreKey]['label'] ?? strtoupper($recoverablesMainStoreKey)) : $storeLabel; +$recoverablesStoreLabelHtml = htmlspecialchars($storeLabel); +$recoverablesMainStoreLabelHtml = htmlspecialchars($recoverablesMainStoreLabel); $usesIncrementalSync = !empty($storeConfig['incremental_sync']); $storeNav = drive_test_store_navigation_state($availableStores, $storeKey); $storeNavGroups = $storeNav['groups']; @@ -335,7 +341,7 @@ $activeStoreGroupChildren = $storeNav['active_group_children'] ?? []; $parentStoreLabel = (string) ($storeNav['parent_label'] ?? ''); $isMainTuaniStore = cc_test_is_tuani_main_store_key($storeKey); -$isTuaniRecuperablesStore = $storeKey === 'tuani_recuperables'; +$isTuaniRecuperablesStore = cc_test_is_recoverables_store_key($storeKey); if ($isTuaniRecuperablesStore && trim((string) ($_GET['view'] ?? '')) === '') { $view = 'todos'; } @@ -347,17 +353,11 @@ $viewCardColumnClass = $isTuaniRecuperablesStore ? 'col-md-6 col-xl-2' : 'col-md $defaultView = cc_test_callcenter_pro_default_view_key($storeKey); $viewCards = $isTuaniRecuperablesStore ? [ - 'pendientes_hoy' => [ - 'label' => 'Carritos recuperables', - 'heading' => 'Carritos recuperables', - 'stat_key' => 'pendientes_hoy', - 'active_class' => 'bg-dark text-white', - ], - 'nuevos_hoy' => [ - 'label' => 'Nuevos hoy', - 'heading' => 'Nuevos hoy', - 'stat_key' => 'nuevos_hoy', - 'active_class' => 'bg-primary-subtle border border-primary', + 'todos' => [ + 'label' => 'Todos', + 'heading' => 'Todos los pedidos cargados', + 'stat_key' => 'total', + 'active_class' => 'bg-light border', ], 'confirmados' => [ 'label' => 'Confirmados', @@ -383,11 +383,11 @@ $viewCards = $isTuaniRecuperablesStore ? [ 'stat_key' => 'observados', 'active_class' => 'bg-warning-subtle border border-warning', ], - 'todos' => [ - 'label' => 'Todos', - 'heading' => 'Todos los pedidos cargados', - 'stat_key' => 'total', - 'active_class' => 'bg-light border', + 'pendientes_hoy' => [ + 'label' => $storeLabel, + 'heading' => $storeLabel, + 'stat_key' => 'pendientes_hoy', + 'active_class' => 'bg-dark text-white', ], ] : [ 'nuevos_hoy' => [ @@ -467,7 +467,7 @@ $_SESSION[cc_test_callcenter_store_session_key()] = cc_test_normalize_context_ke $_SESSION[cc_test_callcenter_view_session_key()] = cc_test_normalize_context_key($view); $viewStatesNote = $isTuaniRecuperablesStore - ? 'Estados disponibles: Carritos recuperables, Nuevos hoy, Seguimiento, Observados, Confirmados, Recuperados y Todos. La vista Nuevos hoy agrupa los pedidos más recientes agregados desde Drive. Esta bandeja compartida está disponible para cualquier asesora y, cuando una asesora gestiona un carrito recuperable, el sistema lo asigna automáticamente a quien lo trabaja. Si el teléfono ya existe en TUANI principal, se marca en gris como Pedido repetido en tienda solo en esta bandeja. Las vistas Carritos recuperables y Todos arrancan en la fila 2000, solo toman pedidos desde esa fila y se ordenan por el número #D más alto, lo que mantiene arriba el código más reciente, al más antiguo, en bloques de 200 pedidos.' + ? 'Estados disponibles: ' . $recoverablesStoreLabelHtml . ', Seguimiento, Observados, Confirmados, Recuperados y Todos. Esta bandeja abre por defecto en Todos. La bandeja compartida está disponible para cualquier asesora y, cuando una asesora gestiona un carrito recuperable, el sistema lo asigna automáticamente a quien lo trabaja. Si el teléfono ya existe en ' . $recoverablesMainStoreLabelHtml . ' principal, se marca en gris como Pedido repetido en tienda solo en esta bandeja. Las vistas ' . $recoverablesStoreLabelHtml . ' y Todos arrancan en la fila ' . (int) ($storeConfig['startRow'] ?? 0) . ', solo toman pedidos desde esa fila y se ordenan por el número #D más alto, lo que mantiene arriba el código más reciente, al más antiguo, en bloques de 200 pedidos.' : 'Estados disponibles: Por llamar, Devolver llamada, Observado, Se envió número de cuenta, Confirmado contraentrega, Confirmado envío, Cancelado y Repetido. Promo Final se habilita para mover el pedido desde el Día 4; la imagen de sustento se puede cargar desde el Día 3 para dejarlo listo antes del pase. Además, esta bandeja principal incluye reparto intercalado diario: en modo automático reparte pedidos sin asignar entre asesoras activas; en modo manual el supervisor los mueve pedido por pedido. También puedes usar la vista Últimos 4 días hábiles para concentrar el seguimiento reciente.'; $errorMessage = null; @@ -922,7 +922,7 @@ try { $aImport = cc_test_import_time($a); $bImport = cc_test_import_time($b); - if (cc_test_is_tuani_recoverables_store_key($storeKey) && in_array($view, ['pendientes_hoy', 'todos'], true)) { + if (cc_test_is_recoverables_store_key($storeKey) && in_array($view, ['pendientes_hoy', 'todos'], true)) { return cc_test_compare_recoverables_orders_desc($a, $b); } @@ -1042,7 +1042,7 @@ try { } if ($view === 'todos') { - if (cc_test_is_tuani_recoverables_store_key($storeKey)) { + if (cc_test_is_recoverables_store_key($storeKey)) { return cc_test_compare_recoverables_orders_desc($a, $b); } @@ -1179,14 +1179,14 @@ if (!empty($_GET['ajax_refresh'])) { } 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.'; + $pageTitle = $storeLabel . ' | Bandeja compartida'; + $pageDescription = 'Bandeja compartida para que cualquier asesora gestione ' . mb_strtolower($storeLabel) . ' con vistas de seguimiento y observados desde Drive.'; } else { $pageTitle = 'Pedidos Asignados | Bandeja de la asesora'; $pageDescription = 'Bandeja para que cada asesora gestione sus pedidos asignados con vistas de hoy, últimos 4 días hábiles, estados, historial y acciones.'; } -$callCenterSectionLabel = $isTuaniRecuperablesStore ? 'Carritos recuperables' : 'Pedidos Asignados'; +$callCenterSectionLabel = $isTuaniRecuperablesStore ? $storeLabel : 'Pedidos Asignados'; require_once 'layout_header.php'; ?> @@ -1399,7 +1399,7 @@ require_once 'layout_header.php'; Solo pedidos válidos: IDs #D... - Abrir Carritos recuperables (#D...) + Abrir (#D...)