diff --git a/frontend/src/app/admin/payments/page.tsx b/frontend/src/app/admin/payments/page.tsx index bebb37c..c12c28d 100644 --- a/frontend/src/app/admin/payments/page.tsx +++ b/frontend/src/app/admin/payments/page.tsx @@ -281,6 +281,22 @@ export default function AdminPaymentsPage() { }; }; + // Hide pending-approval payments whose event has already ended. + // Fall back to startDatetime when endDatetime is absent; keep visible when we + // can't classify (event missing from list and no startDatetime on payment.event). + const visiblePendingApprovalPayments = (() => { + const now = new Date(); + return pendingApprovalPayments.filter((payment) => { + const eventId = payment.event?.id; + const fullEvent = eventId ? events.find((e) => e.id === eventId) : undefined; + const endIso = fullEvent?.endDatetime + || fullEvent?.startDatetime + || payment.event?.startDatetime; + if (!endIso) return true; + return parseDate(endIso).getTime() >= now.getTime(); + }); + })(); + // Get booking info for pending approval payments const getPendingBookingInfo = (payment: PaymentWithDetails) => { if (!payment.ticket?.bookingId) { @@ -288,7 +304,7 @@ export default function AdminPaymentsPage() { } // Count all pending payments with the same bookingId - const bookingPayments = pendingApprovalPayments.filter( + const bookingPayments = visiblePendingApprovalPayments.filter( p => p.ticket?.bookingId === payment.ticket?.bookingId ); @@ -326,7 +342,7 @@ export default function AdminPaymentsPage() { const paidBookingsCount = getUniqueBookingsCount( payments.filter(p => p.status === 'paid') ); - const pendingApprovalBookingsCount = getUniqueBookingsCount(pendingApprovalPayments); + const pendingApprovalBookingsCount = getUniqueBookingsCount(visiblePendingApprovalPayments); if (loading) { return ( @@ -620,8 +636,8 @@ export default function AdminPaymentsPage() {

{locale === 'es' ? 'Pendientes de Aprobación' : 'Pending Approval'}

{pendingApprovalBookingsCount}

- {pendingApprovalPayments.length !== pendingApprovalBookingsCount && ( -

({pendingApprovalPayments.length} tickets)

+ {visiblePendingApprovalPayments.length !== pendingApprovalBookingsCount && ( +

({visiblePendingApprovalPayments.length} tickets)

)}
@@ -670,8 +686,8 @@ export default function AdminPaymentsPage() { className={clsx('pb-3 px-1 text-sm font-medium border-b-2 transition-colors whitespace-nowrap min-h-[44px]', activeTab === 'pending_approval' ? 'border-primary-yellow text-primary-dark' : 'border-transparent text-gray-500 hover:text-gray-700')}> {locale === 'es' ? 'Pendientes' : 'Pending Approval'} - {pendingApprovalPayments.length > 0 && ( - {pendingApprovalPayments.length} + {visiblePendingApprovalPayments.length > 0 && ( + {visiblePendingApprovalPayments.length} )}