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)
)}