diff --git a/src/pretix/base/models/orders.py b/src/pretix/base/models/orders.py index 724facd2c..6f3208ddb 100644 --- a/src/pretix/base/models/orders.py +++ b/src/pretix/base/models/orders.py @@ -451,9 +451,9 @@ class Order(LockModel, LoggedModel): if results: qs = qs.annotate( is_overpaid=Case( - When(~Q(status=Order.STATUS_CANCELED) & Q(pending_sum_t__lt=-1e-8), + When(~Q(status__in=(Order.STATUS_CANCELED, Order.STATUS_EXPIRED)) & Q(pending_sum_t__lt=-1e-8), then=Value(1)), - When(Q(status=Order.STATUS_CANCELED) & Q(pending_sum_rc__lt=-1e-8), + When(Q(status__in=(Order.STATUS_CANCELED, Order.STATUS_EXPIRED)) & Q(pending_sum_rc__lt=-1e-8), then=Value(1)), default=Value(0), output_field=models.IntegerField() @@ -468,7 +468,7 @@ class Order(LockModel, LoggedModel): is_underpaid=Case( When(Q(status=Order.STATUS_PAID) & Q(pending_sum_t__gt=1e-8), then=Value(1)), - When(Q(status=Order.STATUS_CANCELED) & Q(pending_sum_rc__gt=1e-8), + When(Q(status__in=(Order.STATUS_CANCELED, Order.STATUS_EXPIRED)) & Q(pending_sum_rc__gt=1e-8), then=Value(1)), default=Value(0), output_field=models.IntegerField() diff --git a/src/pretix/control/forms/filter.py b/src/pretix/control/forms/filter.py index 7f61baba7..4e3be59a3 100644 --- a/src/pretix/control/forms/filter.py +++ b/src/pretix/control/forms/filter.py @@ -309,11 +309,8 @@ class OrderFilterForm(FilterForm): elif s in ('p', 'n', 'e', 'c', 'r'): qs = qs.filter(status=s) elif s == 'overpaid': - qs = Order.annotate_overpayments(qs, refunds=False, results=False, sums=True) - qs = qs.filter( - Q(~Q(status=Order.STATUS_CANCELED) & Q(pending_sum_t__lt=0)) - | Q(Q(status=Order.STATUS_CANCELED) & Q(pending_sum_rc__lt=0)) - ) + qs = Order.annotate_overpayments(qs, refunds=False, results=True, sums=False) + qs = qs.filter(is_overpaid=True) elif s == 'rc': qs = qs.filter( cancellation_requests__isnull=False diff --git a/src/pretix/control/templates/pretixcontrol/order/index.html b/src/pretix/control/templates/pretixcontrol/order/index.html index 3774c7f77..0bf920c50 100644 --- a/src/pretix/control/templates/pretixcontrol/order/index.html +++ b/src/pretix/control/templates/pretixcontrol/order/index.html @@ -124,6 +124,13 @@ + {% elif order.status == "e" and order.payment_refund_sum != 0 %} +