Actualizar servicios.html

This commit is contained in:
2026-03-02 23:10:55 +00:00
parent c01f8431aa
commit 2f7203af05

View File

@@ -664,71 +664,92 @@ async function searchClientByPhone(phone) {
setTimeout(() => { toast.classList.add('hidden'); }, 3500); setTimeout(() => { toast.classList.add('hidden'); }, 3500);
} }
function openDetail(id) { function openDetail(id, startInEditMode = false) {
const s = localData.find(x => x.id === id); const s = localData.find(x => x.id === id);
if (!s) return; if (!s) return;
const raw = s.raw_data; const raw = s.raw_data;
document.getElementById('detId').value = s.id;
document.getElementById('detRef').innerText = s.service_ref;
document.getElementById('detCp').value = raw["Código Postal"] || "00000";
const companyName = raw['Compañía'] || raw['COMPAÑIA'] || raw['Procedencia'] || "Particular"; // 1. IDs y Referencias
document.getElementById('detCompany').innerText = companyName; document.getElementById('detId').value = s.id;
document.getElementById('detName').innerText = raw["Nombre Cliente"] || raw["CLIENTE"] || "Asegurado Sin Nombre"; document.getElementById('detRef').innerText = s.service_ref;
document.getElementById('detCp').value = raw["Código Postal"] || "00000";
const rawPhone = raw["Teléfono"] || raw["TELEFONOS"] || raw["TELEFONO"] || ""; const companyName = raw['Compañía'] || raw['COMPAÑIA'] || raw['Procedencia'] || "Particular";
const matchPhone = rawPhone.toString().match(/[6789]\d{8}/); document.getElementById('detCompany').innerText = companyName;
const singlePhone = matchPhone ? matchPhone[0] : "";
if (singlePhone) { // 2. RELLENAR CAMPOS EDITABLES (NUEVO)
document.getElementById('detPhone').innerText = singlePhone; // Rellenamos tanto los visuales como los que usaremos para editar
document.getElementById('detPhoneLink').href = `tel:+34${singlePhone}`; const clientName = raw["Nombre Cliente"] || raw["CLIENTE"] || "Asegurado Sin Nombre";
document.getElementById('detPhoneLink').classList.remove('text-slate-400', 'pointer-events-none'); document.getElementById('detName').innerText = clientName;
document.getElementById('detPhoneLink').classList.add('text-blue-600'); if(document.getElementById('editName')) document.getElementById('editName').value = clientName;
} else {
document.getElementById('detPhone').innerText = "Sin Teléfono";
document.getElementById('detPhoneLink').href = "#";
document.getElementById('detPhoneLink').classList.remove('text-blue-600');
document.getElementById('detPhoneLink').classList.add('text-slate-400', 'pointer-events-none');
}
document.getElementById('detAddrText').innerText = `${raw["Dirección"] || "Dirección no especificada"} ${raw["Población"] || ""}`; const rawPhone = raw["Teléfono"] || raw["TELEFONOS"] || raw["TELEFONO"] || "";
document.getElementById('detDesc').innerHTML = (raw["Descripción"] || raw["DESCRIPCION"] || "Sin notas.").replace(/\n/g, '<br>'); const matchPhone = rawPhone.toString().match(/[6789]\d{8}/);
const singlePhone = matchPhone ? matchPhone[0] : "";
if(document.getElementById('editPhone')) document.getElementById('editPhone').value = singlePhone;
const stateInfo = s._stateInfo; if (singlePhone) {
document.getElementById('detPhone').innerText = singlePhone;
document.getElementById('detPhoneLink').href = `tel:+34${singlePhone}`;
document.getElementById('detPhoneLink').classList.remove('text-slate-400', 'pointer-events-none');
document.getElementById('detPhoneLink').classList.add('text-blue-600');
} else {
document.getElementById('detPhone').innerText = "Sin Teléfono";
document.getElementById('detPhoneLink').href = "#";
document.getElementById('detPhoneLink').classList.remove('text-blue-600');
document.getElementById('detPhoneLink').classList.add('text-slate-400', 'pointer-events-none');
}
if (s.automation_status === 'in_progress') { const fullAddr = `${raw["Dirección"] || ""} ${raw["Población"] || ""}`.trim();
document.getElementById('panelEnBolsa').classList.remove('hidden'); document.getElementById('detAddrText').innerText = fullAddr || "Dirección no especificada";
document.getElementById('panelAsignado').classList.add('hidden'); if(document.getElementById('editAddr')) document.getElementById('editAddr').value = raw["Dirección"] || "";
document.getElementById('panelSinAsignar').classList.add('hidden');
}
else if (s.assigned_name && stateInfo.id !== 'bolsa' && !stateInfo.name.toLowerCase().includes('asignar') && !stateInfo.name.toLowerCase().includes('desasignado')) {
document.getElementById('panelEnBolsa').classList.add('hidden');
document.getElementById('panelAsignado').classList.remove('hidden');
document.getElementById('panelSinAsignar').classList.add('hidden');
document.getElementById('detWorker').innerText = s.assigned_name; const descContent = raw["Descripción"] || raw["DESCRIPCION"] || "Sin notas.";
document.getElementById('dateInput').value = raw.scheduled_date || ""; document.getElementById('detDesc').innerHTML = descContent.replace(/\n/g, '<br>');
document.getElementById('timeInput').value = raw.scheduled_time || ""; if(document.getElementById('editDesc')) document.getElementById('editDesc').value = descContent;
document.getElementById('detStatusMap').value = stateInfo.id;
} else {
document.getElementById('panelEnBolsa').classList.add('hidden');
document.getElementById('panelAsignado').classList.add('hidden');
document.getElementById('panelSinAsignar').classList.remove('hidden');
const rawGuildId = s.guild_id || raw['guild_id'] || raw.guild_id; // 3. Lógica de Paneles (Asignación/Bolsa)
if(rawGuildId) { const stateInfo = s._stateInfo;
document.getElementById('reGremio').value = String(rawGuildId); if (s.automation_status === 'in_progress') {
loadOps(rawGuildId, 'reOperario'); document.getElementById('panelEnBolsa').classList.remove('hidden');
} else { document.getElementById('panelAsignado').classList.add('hidden');
document.getElementById('reGremio').value = ""; document.getElementById('panelSinAsignar').classList.add('hidden');
document.getElementById('reOperario').innerHTML = '<option value="">-- Elija gremio primero --</option>'; }
} else if (s.assigned_name && stateInfo.id !== 'bolsa' && !stateInfo.name.toLowerCase().includes('asignar') && !stateInfo.name.toLowerCase().includes('desasignado')) {
} document.getElementById('panelEnBolsa').classList.add('hidden');
document.getElementById('panelAsignado').classList.remove('hidden');
document.getElementById('panelSinAsignar').classList.add('hidden');
document.getElementById('detailModal').classList.remove('hidden'); document.getElementById('detWorker').innerText = s.assigned_name;
lucide.createIcons(); document.getElementById('dateInput').value = raw.scheduled_date || "";
document.getElementById('timeInput').value = raw.scheduled_time || "";
document.getElementById('detStatusMap').value = stateInfo.id;
} else {
document.getElementById('panelEnBolsa').classList.add('hidden');
document.getElementById('panelAsignado').classList.add('hidden');
document.getElementById('panelSinAsignar').classList.remove('hidden');
const rawGuildId = s.guild_id || raw['guild_id'] || raw.guild_id;
if(rawGuildId) {
document.getElementById('reGremio').value = String(rawGuildId);
loadOps(rawGuildId, 'reOperario');
} else {
document.getElementById('reGremio').value = "";
document.getElementById('reOperario').innerHTML = '<option value="">-- Elija gremio primero --</option>';
} }
}
// 4. ACTIVAR MODO EDICIÓN SI SE PULSÓ EL LÁPIZ (NUEVO)
document.getElementById('detailModal').classList.remove('hidden');
if (startInEditMode) {
enableEditing();
} else {
cancelEditing(); // Resetear a modo lectura
}
lucide.createIcons();
}
async function stopAutomation() { async function stopAutomation() {
const id = document.getElementById('detId').value; const id = document.getElementById('detId').value;