From 5b5e831e37af147ad3b8a6597f869489f9ee2011 Mon Sep 17 00:00:00 2001 From: Raphael Michel Date: Tue, 9 Jan 2024 16:17:46 +0100 Subject: [PATCH] Order search: Add filter for pending without payment --- src/pretix/control/forms/filter.py | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/src/pretix/control/forms/filter.py b/src/pretix/control/forms/filter.py index 6d2982165..a1fb95357 100644 --- a/src/pretix/control/forms/filter.py +++ b/src/pretix/control/forms/filter.py @@ -230,6 +230,7 @@ class OrderFilterForm(FilterForm): ('partially_paid', _('Partially paid')), ('underpaid', _('Underpaid (but confirmed)')), ('pendingpaid', _('Pending (but fully paid)')), + ('pendingnopayment', _('Pending (but no current payment)')), )), (_('Approval process'), ( ('na', _('Approved, payment pending')), @@ -327,6 +328,18 @@ class OrderFilterForm(FilterForm): Q(status__in=(Order.STATUS_EXPIRED, Order.STATUS_PENDING)) & Q(pending_sum_t__lte=0) & Q(require_approval=False) ) + elif s == 'pendingnopayment': + qs = qs.exclude( + Exists( + OrderPayment.objects.filter( + order=OuterRef('pk'), + state__in=(OrderPayment.PAYMENT_STATE_CREATED, OrderPayment.PAYMENT_STATE_PENDING) + ) + ) + ).filter( + status=Order.STATUS_PENDING, + require_approval=False, + ) elif s == 'partially_paid': qs = Order.annotate_overpayments(qs, refunds=False, results=False, sums=True) qs = qs.filter(