diff --git a/servicios.html b/servicios.html
index 8632cd3..13e13a7 100644
--- a/servicios.html
+++ b/servicios.html
@@ -664,71 +664,92 @@ async function searchClientByPhone(phone) {
setTimeout(() => { toast.classList.add('hidden'); }, 3500);
}
- function openDetail(id) {
- const s = localData.find(x => x.id === id);
- if (!s) return;
- 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";
- document.getElementById('detCompany').innerText = companyName;
- document.getElementById('detName').innerText = raw["Nombre Cliente"] || raw["CLIENTE"] || "Asegurado Sin Nombre";
-
- const rawPhone = raw["Teléfono"] || raw["TELEFONOS"] || raw["TELEFONO"] || "";
- const matchPhone = rawPhone.toString().match(/[6789]\d{8}/);
- const singlePhone = matchPhone ? matchPhone[0] : "";
+ function openDetail(id, startInEditMode = false) {
+ const s = localData.find(x => x.id === id);
+ if (!s) return;
+ const raw = s.raw_data;
- 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');
- }
+ // 1. IDs y Referencias
+ 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";
+ document.getElementById('detCompany').innerText = companyName;
- document.getElementById('detAddrText').innerText = `${raw["Dirección"] || "Dirección no especificada"} ${raw["Población"] || ""}`;
- document.getElementById('detDesc').innerHTML = (raw["Descripción"] || raw["DESCRIPCION"] || "Sin notas.").replace(/\n/g, '
');
+ // 2. RELLENAR CAMPOS EDITABLES (NUEVO)
+ // Rellenamos tanto los visuales como los que usaremos para editar
+ const clientName = raw["Nombre Cliente"] || raw["CLIENTE"] || "Asegurado Sin Nombre";
+ document.getElementById('detName').innerText = clientName;
+ if(document.getElementById('editName')) document.getElementById('editName').value = clientName;
- const stateInfo = s._stateInfo;
+ const rawPhone = raw["Teléfono"] || raw["TELEFONOS"] || raw["TELEFONO"] || "";
+ const matchPhone = rawPhone.toString().match(/[6789]\d{8}/);
+ const singlePhone = matchPhone ? matchPhone[0] : "";
+ if(document.getElementById('editPhone')) document.getElementById('editPhone').value = singlePhone;
- if (s.automation_status === 'in_progress') {
- document.getElementById('panelEnBolsa').classList.remove('hidden');
- document.getElementById('panelAsignado').classList.add('hidden');
- 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;
- 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 = '';
- }
- }
+ 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');
+ }
- document.getElementById('detailModal').classList.remove('hidden');
- lucide.createIcons();
+ const fullAddr = `${raw["Dirección"] || ""} ${raw["Población"] || ""}`.trim();
+ document.getElementById('detAddrText').innerText = fullAddr || "Dirección no especificada";
+ if(document.getElementById('editAddr')) document.getElementById('editAddr').value = raw["Dirección"] || "";
+
+ const descContent = raw["Descripción"] || raw["DESCRIPCION"] || "Sin notas.";
+ document.getElementById('detDesc').innerHTML = descContent.replace(/\n/g, '
');
+ if(document.getElementById('editDesc')) document.getElementById('editDesc').value = descContent;
+
+ // 3. Lógica de Paneles (Asignación/Bolsa)
+ const stateInfo = s._stateInfo;
+ if (s.automation_status === 'in_progress') {
+ document.getElementById('panelEnBolsa').classList.remove('hidden');
+ document.getElementById('panelAsignado').classList.add('hidden');
+ 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;
+ 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 = '';
}
+ }
+
+ // 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() {
const id = document.getElementById('detId').value;