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";