diff --git a/index.html b/index.html index 4e8136d..bcf03c4 100644 --- a/index.html +++ b/index.html @@ -179,7 +179,7 @@ Pagar Presupuesto -
+
@@ -433,13 +433,13 @@ if(dateStr && dateStr.includes('T')) dateStr = dateStr.split('T')[0].split('-').reverse().join('/'); // 馃洃 FIX: Calcar los colores y estados del escritorio - let statusBadge = ""; + let statusBadge = ""; if (!q.status || q.status === 'pending') { statusBadge = ` Pte. Resolver`; - } else if (q.status === 'accepted') { - statusBadge = ` Aceptado`; - } else if (q.status === 'converted') { - statusBadge = ` Finalizado`; + } else if (q.status === 'accepted' || q.status === 'converted') { + statusBadge = ` Aceptado (Pte. Pago)`; + } else if (q.status === 'paid') { + statusBadge = ` Pagado Online`; } else if (q.status === 'rejected') { statusBadge = ` Rechazado`; } @@ -523,19 +523,20 @@ } document.getElementById('qmItemsList').innerHTML = itemsHtml; - // CONTROL DE ESTADOS (ACEPTADO / RECHAZADO) + // CONTROL DE ESTADOS (ACEPTADO / RECHAZADO / PAGADO) const btnContainer = document.getElementById('qmDecisionButtons'); const msgContainer = document.getElementById('qmStatusMessage'); const sigArea = document.getElementById('qmSignatureArea'); const btnStripe = document.getElementById('btnStripePay'); + const acceptRejectGroup = document.getElementById('qmAcceptRejectGroup'); sigArea.classList.add('hidden'); - // 馃洃 L脫GICA STRIPE: Evaluar si se debe mostrar el bot贸n de pago + // 1. L贸gica Stripe: Solo si est谩 configurado Y el presupuesto NO est谩 pagado let bSet = globalCompanyData?.billing_settings || {}; if (typeof bSet === 'string') { try { bSet = JSON.parse(bSet); } catch(e) {} } - if (bSet.stripe_enabled && bSet.stripe_pk) { + if (bSet.stripe_enabled && bSet.stripe_pk && q.status !== 'paid') { btnStripe.classList.remove('hidden'); btnStripe.classList.add('flex'); } else { @@ -543,15 +544,29 @@ btnStripe.classList.remove('flex'); } + // 2. Control de qu茅 botones y mensajes se ven if (!q.status || q.status === 'pending') { btnContainer.classList.remove('hidden'); + if(acceptRejectGroup) { acceptRejectGroup.classList.remove('hidden'); acceptRejectGroup.classList.add('flex'); } msgContainer.classList.add('hidden'); - } else if (q.status === 'accepted' || q.status === 'converted') { + } + else if (q.status === 'accepted' || q.status === 'converted') { + // Ya firm贸, ocultamos botones de firma, pero dejamos el contenedor para que se vea el bot贸n de Stripe + btnContainer.classList.remove('hidden'); + if(acceptRejectGroup) { acceptRejectGroup.classList.add('hidden'); acceptRejectGroup.classList.remove('flex'); } + + msgContainer.classList.remove('hidden'); + msgContainer.className = "text-center p-4 rounded-xl font-black text-xs uppercase tracking-widest bg-blue-50 text-blue-600 border border-blue-100"; + msgContainer.innerHTML = '
Presupuesto Firmado (Pendiente de pago)'; + } + else if (q.status === 'paid') { + // Pagado: Ocultamos todo tipo de bot贸n btnContainer.classList.add('hidden'); msgContainer.classList.remove('hidden'); msgContainer.className = "text-center p-4 rounded-xl font-black text-xs uppercase tracking-widest bg-emerald-50 text-emerald-600 border border-emerald-100"; - msgContainer.innerHTML = '
Presupuesto Aceptado'; - } else if (q.status === 'rejected') { + msgContainer.innerHTML = '
Abonado Correctamente'; + } + else if (q.status === 'rejected') { btnContainer.classList.add('hidden'); msgContainer.classList.remove('hidden'); msgContainer.className = "text-center p-4 rounded-xl font-black text-xs uppercase tracking-widest bg-rose-50 text-rose-600 border border-rose-100";