diff --git a/contabilidad.html b/contabilidad.html index 7e9d80d..ea01c9e 100644 --- a/contabilidad.html +++ b/contabilidad.html @@ -481,18 +481,23 @@ let bStatus = ''; // Comprobamos si nos viene el estado del servicio como anulado desde el backend - let isAnulado = b.linked_service_status_name && b.linked_service_status_name.toLowerCase().includes('anulado'); + let isAnulado = false; + if (b.linked_service_status_name && b.linked_service_status_name.toLowerCase().includes('anulado')) { + isAnulado = true; + } - if(b.status === 'pending') bStatus = ` Pte. Resolver`; - else if(b.status === 'rejected') bStatus = ` Rechazado`; - else if(b.status === 'accepted') bStatus = ` Aceptado`; - else if(b.status === 'converted') { + if(b.status === 'pending') { + bStatus = ` Pte. Resolver`; + } else if(b.status === 'rejected') { + bStatus = ` Rechazado`; + } else if(b.status === 'accepted') { + bStatus = ` Aceptado`; + } else if(b.status === 'converted') { if (isAnulado) { - bStatus = ` Servicio Anulado`; + bStatus = ` Servicio Anulado`; } else { - // Si está convertido y NO está anulado, mostramos el estado real del panel operativo const sName = b.linked_service_status_name || 'En gestión'; - bStatus = ` ${sName}`; + bStatus = ` ${sName}`; } } @@ -506,7 +511,7 @@ actions = ``; } - // La papelera de borrar se muestra siempre, y le pasamos a la función si está anulado + // La papelera de borrar se muestra siempre, y le pasamos el estado 'isAnulado' actions += ``; list.innerHTML += ` @@ -526,17 +531,10 @@ lucide.createIcons(); } - async function updateBudgetStatus(id, status) { - if(!confirm("¿Actualizar estado?")) return; - await fetch(`${API_URL}/budgets/${id}/status`, { method: 'PATCH', headers: { "Content-Type": "application/json", "Authorization": `Bearer ${localStorage.getItem("token")}` }, body: JSON.stringify({status}) }); - loadBudgets(); - } - - - async function deleteBudget(id, status) { - // Protección en el lado del cliente (Frontend) - if (status === 'accepted' || status === 'converted') { - return showToast("⚠️ Para borrar el presupuesto, primero debes rechazarlo/anularlo."); + async function deleteBudget(id, status, isAnulado) { + // Si está convertido/aceptado, Y NO ESTÁ anulado, bloqueamos + if ((status === 'accepted' || status === 'converted') && !isAnulado) { + return showToast("⚠️ Para borrar el presupuesto, el servicio vinculado debe estar Anulado."); } if (!confirm("¿Seguro que quieres borrar este presupuesto definitivamente?")) return;