diff --git a/servicios.html b/servicios.html
index f92a689..14acc1a 100644
--- a/servicios.html
+++ b/servicios.html
@@ -305,7 +305,6 @@
systemStatuses = data.statuses;
renderStatusPills();
- // Llenar el selector del Modal
const modalSelect = document.getElementById('detStatusMap');
modalSelect.innerHTML = '';
systemStatuses.forEach(st => {
@@ -384,7 +383,7 @@
}
// 2. Si viene limpio del scraper sin estado -> Pendiente de Asignar
- if (!dbStat || dbStat === 'sin_asignar') {
+ if (!s.assigned_name || dbStat === 'sin_asignar') {
const found = systemStatuses.find(st => st.name.toLowerCase().includes('pendiente de asignar')) || systemStatuses[0];
return { ...found, isBlocked: false };
}
@@ -401,7 +400,16 @@
if (dbStat === 'incidencia') return { ...systemStatuses.find(st => st.name.toLowerCase().includes('incidencia')), isBlocked: false };
if (dbStat === 'terminado') return { ...systemStatuses.find(st => st.name.toLowerCase().includes('terminado') || st.name.toLowerCase().includes('finalizado')), isBlocked: false };
- // 5. Fallback final
+ // 5. Fallback final para asignados: Si tiene operario pero NO status_operativo
+ if (s.assigned_name && (!raw.scheduled_date || raw.scheduled_date === "")) {
+ const f = systemStatuses.find(st => st.name.toLowerCase() === 'asignado') || systemStatuses[1];
+ return { ...f, isBlocked: false };
+ }
+ if (s.assigned_name && raw.scheduled_date) {
+ const f = systemStatuses.find(st => st.name.toLowerCase().includes('citado')) || systemStatuses[3];
+ return { ...f, isBlocked: false };
+ }
+
return { id: 'unknown', name: 'Desconocido', color: 'gray', isBlocked: false, is_final: false };
}
@@ -448,7 +456,7 @@
let matchesStatus = false;
if (activeStatusFilter === "ALL") {
- // Si no hay búsqueda activa, ocultamos los Finalizados por limpieza visual
+ // Ocultamos los Finalizados por defecto en la vista general para limpiar la pantalla
if (stateInfo.is_final && searchTerm === "") matchesStatus = false;
else matchesStatus = true;
} else {