From db8cb8f3a034dc7b620f7ef9a5f5cdfddd2df72f Mon Sep 17 00:00:00 2001 From: marsalva Date: Sun, 29 Mar 2026 17:38:22 +0000 Subject: [PATCH] Actualizar presupuestos.html --- presupuestos.html | 59 ++++++++++++++++++++++++++++++++--------------- 1 file changed, 41 insertions(+), 18 deletions(-) diff --git a/presupuestos.html b/presupuestos.html index 9998220..afd5815 100644 --- a/presupuestos.html +++ b/presupuestos.html @@ -455,7 +455,7 @@ async function downloadPDF(id) { } } - // ------------------ RENDERIZAR LA LISTA EN PANTALLA ------------------ + // ------------------ RENDERIZAR LA LISTA EN PANTALLA ------------------ function renderBudgetsList(budgets) { const container = document.getElementById('budgetsList'); if(budgets.length === 0) { @@ -470,43 +470,66 @@ async function downloadPDF(id) { } container.innerHTML = budgets.map(b => { - let statusColor = "bg-amber-50 text-amber-600"; - let statusText = "Pendiente"; + // 🔴 LÓGICA DE ESTADOS Y CADUCIDAD (Igual que en el Portal) + let bDate = new Date(b.created_at); + let diffDays = Math.ceil(Math.abs(new Date() - bDate) / (1000 * 60 * 60 * 24)); + let isExpired = diffDays > 30; + + let statusColor = "bg-amber-100 text-amber-700"; + let statusText = "Pte. Resolver"; let icon = "clock"; - if(b.status === 'accepted' || b.status === 'converted') { statusColor = "bg-emerald-50 text-emerald-600"; statusText = "Aceptado"; icon = "check-circle"; } - else if(b.status === 'rejected') { statusColor = "bg-rose-50 text-rose-600"; statusText = "Rechazado"; icon = "x-circle"; } + // Prioridad de estados + if (b.status === 'paid') { + statusColor = "bg-emerald-100 text-emerald-700 border border-emerald-200"; + statusText = "Pagado Online"; + icon = "badge-check"; + } else if (isExpired && b.status !== 'rejected') { + statusColor = "bg-slate-100 text-slate-500 border border-slate-200"; + statusText = "Caducado"; + icon = "clock-alert"; + } else if (b.status === 'accepted' || b.status === 'converted') { + statusColor = "bg-blue-100 text-blue-700 border border-blue-200"; + statusText = "Aceptado (Pte. Pago)"; + icon = "clock"; + } else if (b.status === 'rejected') { + statusColor = "bg-rose-100 text-rose-700"; + statusText = "Rechazado"; + icon = "x-circle"; + } - const d = new Date(b.created_at).toLocaleDateString('es-ES', { day: '2-digit', month: 'short', year: '2-digit' }); + const d = bDate.toLocaleDateString('es-ES', { day: '2-digit', month: 'short', year: '2-digit' }); return ` -
-
+
+
PRE-${b.id} • ${d}

${b.client_name || 'Sin Nombre'}

-

${b.client_phone}

+
+ ${statusText} +

${parseFloat(b.total).toFixed(2)}€

- - ${statusText} - +

${b.client_phone}

- ${ b.status === 'pending' ? ` - - - ` : `Ya gestionado` } + ${ (b.status === 'pending' && !isExpired) ? ` + + + ` : (b.status === 'paid' ? + `Cobrado` : + `Cerrado`) }
- - + +