From 846527546a3050b39a1d1137474aa80564f6b244 Mon Sep 17 00:00:00 2001 From: Raphael Michel Date: Mon, 18 Oct 2021 18:34:52 +0200 Subject: [PATCH] Improve visual transaction table --- src/pretix/base/models/orders.py | 8 +++++ .../pretixcontrol/order/transactions.html | 30 +++++++++++++++---- src/pretix/control/views/orders.py | 7 ++++- 3 files changed, 39 insertions(+), 6 deletions(-) diff --git a/src/pretix/base/models/orders.py b/src/pretix/base/models/orders.py index e22be5cec0..44734019fb 100644 --- a/src/pretix/base/models/orders.py +++ b/src/pretix/base/models/orders.py @@ -2515,6 +2515,14 @@ class Transaction(models.Model): obj.tax_rule_id, obj.tax_value, obj.fee_type, obj.internal_type) raise ValueError('invalid state') # noqa + @property + def full_price(self): + return self.price * self.count + + @property + def full_tax_value(self): + return self.tax_value * self.count + class CartPosition(AbstractPosition): """ diff --git a/src/pretix/control/templates/pretixcontrol/order/transactions.html b/src/pretix/control/templates/pretixcontrol/order/transactions.html index cdf951ddaf..a7ea3e2aae 100644 --- a/src/pretix/control/templates/pretixcontrol/order/transactions.html +++ b/src/pretix/control/templates/pretixcontrol/order/transactions.html @@ -18,10 +18,11 @@ {% trans "Date" %} {% trans "Product" %} - {% trans "Quantity" %} {% trans "Tax rate" %} - {% trans "Tax value" %} - {% trans "Price" %} + {% trans "Quantity" %} + {% trans "Single price" %} + {% trans "Total tax value" %} + {% trans "Total price" %} @@ -50,12 +51,31 @@
{{ t.subevent }} {% endif %} - {{ t.count }} × {{ t.tax_rate }} % - {{ t.tax_value|money:request.event.currency }} + {{ t.count }} × {{ t.price|money:request.event.currency }} + {{ t.full_tax_value|money:request.event.currency }} + {{ t.full_price|money:request.event.currency }} {% endfor %} + + + + {% trans "Sum" %} + + + + + + + {{ sums.count }} + + + + {{ sums.full_tax_value|money:request.event.currency }} + {{ sums.full_price|money:request.event.currency }} + + {% endblock %} diff --git a/src/pretix/control/views/orders.py b/src/pretix/control/views/orders.py index b08a88f5bc..258d9232cd 100644 --- a/src/pretix/control/views/orders.py +++ b/src/pretix/control/views/orders.py @@ -50,7 +50,7 @@ from django.core.exceptions import ValidationError from django.core.files import File from django.db import transaction from django.db.models import ( - Count, Exists, IntegerField, OuterRef, Prefetch, ProtectedError, Q, + Count, Exists, F, IntegerField, OuterRef, Prefetch, ProtectedError, Q, Subquery, Sum, ) from django.forms import formset_factory @@ -410,6 +410,11 @@ class OrderTransactions(OrderView): ctx['transactions'] = self.order.transactions.select_related( 'item', 'variation', 'subevent' ).order_by('datetime') + ctx['sums'] = self.order.transactions.aggregate( + count=Sum('count'), + full_price=Sum(F('count') * F('price')), + full_tax_value=Sum(F('count') * F('tax_value')), + ) return ctx