mirror of
https://github.com/pretix/pretix.git
synced 2026-05-07 15:34:02 +00:00
Treat partially paid expired orders as overpaid orders (Z#23147757) (#3990)
* Treat partially paid expired orders as overpaid orders (Z#23147757) * Use is_overpaid from annotate_overpayments in OrderFilterForm * Revert change to pending sum * Show warning on order page --------- Co-authored-by: Mira Weller <weller@rami.io>
This commit is contained in:
@@ -451,9 +451,9 @@ class Order(LockModel, LoggedModel):
|
|||||||
if results:
|
if results:
|
||||||
qs = qs.annotate(
|
qs = qs.annotate(
|
||||||
is_overpaid=Case(
|
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)),
|
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)),
|
then=Value(1)),
|
||||||
default=Value(0),
|
default=Value(0),
|
||||||
output_field=models.IntegerField()
|
output_field=models.IntegerField()
|
||||||
@@ -468,7 +468,7 @@ class Order(LockModel, LoggedModel):
|
|||||||
is_underpaid=Case(
|
is_underpaid=Case(
|
||||||
When(Q(status=Order.STATUS_PAID) & Q(pending_sum_t__gt=1e-8),
|
When(Q(status=Order.STATUS_PAID) & Q(pending_sum_t__gt=1e-8),
|
||||||
then=Value(1)),
|
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)),
|
then=Value(1)),
|
||||||
default=Value(0),
|
default=Value(0),
|
||||||
output_field=models.IntegerField()
|
output_field=models.IntegerField()
|
||||||
|
|||||||
@@ -309,11 +309,8 @@ class OrderFilterForm(FilterForm):
|
|||||||
elif s in ('p', 'n', 'e', 'c', 'r'):
|
elif s in ('p', 'n', 'e', 'c', 'r'):
|
||||||
qs = qs.filter(status=s)
|
qs = qs.filter(status=s)
|
||||||
elif s == 'overpaid':
|
elif s == 'overpaid':
|
||||||
qs = Order.annotate_overpayments(qs, refunds=False, results=False, sums=True)
|
qs = Order.annotate_overpayments(qs, refunds=False, results=True, sums=False)
|
||||||
qs = qs.filter(
|
qs = qs.filter(is_overpaid=True)
|
||||||
Q(~Q(status=Order.STATUS_CANCELED) & Q(pending_sum_t__lt=0))
|
|
||||||
| Q(Q(status=Order.STATUS_CANCELED) & Q(pending_sum_rc__lt=0))
|
|
||||||
)
|
|
||||||
elif s == 'rc':
|
elif s == 'rc':
|
||||||
qs = qs.filter(
|
qs = qs.filter(
|
||||||
cancellation_requests__isnull=False
|
cancellation_requests__isnull=False
|
||||||
|
|||||||
@@ -124,6 +124,13 @@
|
|||||||
</button>
|
</button>
|
||||||
</div>
|
</div>
|
||||||
</form>
|
</form>
|
||||||
|
{% elif order.status == "e" and order.payment_refund_sum != 0 %}
|
||||||
|
<div class="alert alert-warning">
|
||||||
|
{% blocktrans trimmed with amount=order.payment_refund_sum|money:request.event.currency %}
|
||||||
|
This order is expired even though it received payments of {{ amount }}. You can choose to refund
|
||||||
|
the money below or reactivate it by extending the payment deadline.
|
||||||
|
{% endblocktrans %}
|
||||||
|
</div>
|
||||||
{% endif %}
|
{% endif %}
|
||||||
|
|
||||||
<div class="row">
|
<div class="row">
|
||||||
|
|||||||
Reference in New Issue
Block a user