diff --git a/src/pretix/base/services/stats.py b/src/pretix/base/services/stats.py index fc56a4f6d..828b83038 100644 --- a/src/pretix/base/services/stats.py +++ b/src/pretix/base/services/stats.py @@ -93,7 +93,7 @@ def order_overview(event: Event) -> Tuple[List[Tuple[ItemCategory, List[Item]]], (p['item'], p['variation']): (p['cnt'], p['price'], p['price'] - p['tax_value']) for p in counters if p['order__status'] == Order.STATUS_PAID } - num_s_pending = { + num_pending = { (p['item'], p['variation']): (p['cnt'], p['price'], p['price'] - p['tax_value']) for p in counters if p['order__status'] == Order.STATUS_PENDING } @@ -101,7 +101,6 @@ def order_overview(event: Event) -> Tuple[List[Tuple[ItemCategory, List[Item]]], (p['item'], p['variation']): (p['cnt'], p['price'], p['price'] - p['tax_value']) for p in counters if p['order__status'] == Order.STATUS_EXPIRED } - num_pending = dictsum(num_s_pending, num_expired) num_total = dictsum(num_pending, num_paid) for item in items: @@ -112,17 +111,20 @@ def order_overview(event: Event) -> Tuple[List[Tuple[ItemCategory, List[Item]]], variid = var.id var.num_total = num_total.get((item.id, variid), (0, 0, 0)) var.num_pending = num_pending.get((item.id, variid), (0, 0, 0)) + var.num_expired = num_expired.get((item.id, variid), (0, 0, 0)) var.num_canceled = num_canceled.get((item.id, variid), (0, 0, 0)) var.num_refunded = num_refunded.get((item.id, variid), (0, 0, 0)) var.num_paid = num_paid.get((item.id, variid), (0, 0, 0)) item.num_total = tuplesum(var.num_total for var in item.all_variations) item.num_pending = tuplesum(var.num_pending for var in item.all_variations) + item.num_expired = tuplesum(var.num_expired for var in item.all_variations) item.num_canceled = tuplesum(var.num_canceled for var in item.all_variations) item.num_refunded = tuplesum(var.num_refunded for var in item.all_variations) item.num_paid = tuplesum(var.num_paid for var in item.all_variations) else: item.num_total = num_total.get((item.id, None), (0, 0, 0)) item.num_pending = num_pending.get((item.id, None), (0, 0, 0)) + item.num_expired = num_expired.get((item.id, None), (0, 0, 0)) item.num_canceled = num_canceled.get((item.id, None), (0, 0, 0)) item.num_refunded = num_refunded.get((item.id, None), (0, 0, 0)) item.num_paid = num_paid.get((item.id, None), (0, 0, 0)) @@ -144,6 +146,7 @@ def order_overview(event: Event) -> Tuple[List[Tuple[ItemCategory, List[Item]]], for c in items_by_category: c[0].num_total = tuplesum(item.num_total for item in c[1]) c[0].num_pending = tuplesum(item.num_pending for item in c[1]) + c[0].num_expired = tuplesum(item.num_expired for item in c[1]) c[0].num_canceled = tuplesum(item.num_canceled for item in c[1]) c[0].num_refunded = tuplesum(item.num_refunded for item in c[1]) c[0].num_paid = tuplesum(item.num_paid for item in c[1]) @@ -165,7 +168,7 @@ def order_overview(event: Event) -> Tuple[List[Tuple[ItemCategory, List[Item]]], o['payment_provider']: (o['cnt'], o['payment_fee'], o['payment_fee'] - o['tax_value']) for o in counters if o['status'] == Order.STATUS_REFUNDED } - num_s_pending = { + num_pending = { o['payment_provider']: (o['cnt'], o['payment_fee'], o['payment_fee'] - o['tax_value']) for o in counters if o['status'] == Order.STATUS_PENDING } @@ -177,7 +180,6 @@ def order_overview(event: Event) -> Tuple[List[Tuple[ItemCategory, List[Item]]], o['payment_provider']: (o['cnt'], o['payment_fee'], o['payment_fee'] - o['tax_value']) for o in counters if o['status'] == Order.STATUS_PAID } - num_pending = dictsum(num_s_pending, num_expired) num_total = dictsum(num_pending, num_paid) provider_names = {} @@ -194,6 +196,7 @@ def order_overview(event: Event) -> Tuple[List[Tuple[ItemCategory, List[Item]]], ppobj.num_total = total ppobj.num_canceled = num_canceled.get(pprov, (0, 0, 0)) ppobj.num_refunded = num_refunded.get(pprov, (0, 0, 0)) + ppobj.num_expired = num_expired.get(pprov, (0, 0, 0)) ppobj.num_pending = num_pending.get(pprov, (0, 0, 0)) ppobj.num_paid = num_paid.get(pprov, (0, 0, 0)) payment_items.append(ppobj) @@ -207,6 +210,9 @@ def order_overview(event: Event) -> Tuple[List[Tuple[ItemCategory, List[Item]]], payment_cat_obj.num_refunded = ( Dontsum(''), sum(i.num_refunded[1] for i in payment_items), sum(i.num_refunded[2] for i in payment_items) ) + payment_cat_obj.num_expired = ( + Dontsum(''), sum(i.num_expired[1] for i in payment_items), sum(i.num_expired[2] for i in payment_items) + ) payment_cat_obj.num_pending = ( Dontsum(''), sum(i.num_pending[1] for i in payment_items), sum(i.num_pending[2] for i in payment_items) ) @@ -220,6 +226,7 @@ def order_overview(event: Event) -> Tuple[List[Tuple[ItemCategory, List[Item]]], total = { 'num_total': tuplesum(c.num_total for c, i in items_by_category), 'num_pending': tuplesum(c.num_pending for c, i in items_by_category), + 'num_expired': tuplesum(c.num_expired for c, i in items_by_category), 'num_canceled': tuplesum(c.num_canceled for c, i in items_by_category), 'num_refunded': tuplesum(c.num_refunded for c, i in items_by_category), 'num_paid': tuplesum(c.num_paid for c, i in items_by_category) diff --git a/src/pretix/control/templates/pretixcontrol/orders/overview.html b/src/pretix/control/templates/pretixcontrol/orders/overview.html index 57736f127..414025b4f 100644 --- a/src/pretix/control/templates/pretixcontrol/orders/overview.html +++ b/src/pretix/control/templates/pretixcontrol/orders/overview.html @@ -17,11 +17,19 @@ {% trans "Product" %} - {% trans "Total (pending or paid)" %} - {% trans "Payment pending" %} {% trans "Canceled" %} {% trans "Refunded" %} + {% trans "Expired" %} + {% trans "Purchased" %} + + + + + + + {% trans "Pending" %} {% trans "Paid" %} + {% trans "Total" %} @@ -29,26 +37,17 @@ {% if tup.0 %} {{ tup.0.name }} - {{ tup.0.num_total|togglesum }} - {{ tup.0.num_pending|togglesum }} {{ tup.0.num_canceled|togglesum }} {{ tup.0.num_refunded|togglesum }} + {{ tup.0.num_expired|togglesum }} + {{ tup.0.num_pending|togglesum }} {{ tup.0.num_paid|togglesum }} + {{ tup.0.num_total|togglesum }} {% endif %} {% for item in tup.1 %} {{ item.name }} - - - {{ item.num_total|togglesum }} - - - - - {{ item.num_pending|togglesum }} - - {{ item.num_canceled|togglesum }} @@ -59,21 +58,35 @@ {{ item.num_refunded|togglesum }} + + + {{ item.num_expired|togglesum }} + + + + + {{ item.num_pending|togglesum }} + + {{ item.num_paid|togglesum }} + + {{ item.num_total|togglesum }} + {% if item.has_variations %} {% for var in item.all_variations %} {{ var }} - {{ var.num_total|togglesum }} - {{ var.num_pending|togglesum }} {{ var.num_canceled|togglesum }} {{ var.num_refunded|togglesum }} + {{ var.num_expired|togglesum }} + {{ var.num_pending|togglesum }} {{ var.num_paid|togglesum }} + {{ var.num_total|togglesum }} {% endfor %} {% endif %} @@ -83,11 +96,12 @@ {% trans "Total" %} - {{ total.num_total|togglesum }} - {{ total.num_pending|togglesum }} {{ total.num_canceled|togglesum }} {{ total.num_refunded|togglesum }} + {{ total.num_expired|togglesum }} {{ total.num_paid|togglesum }} + {{ total.num_pending|togglesum }} + {{ total.num_total|togglesum }} diff --git a/src/static/pretixcontrol/scss/_orders.scss b/src/static/pretixcontrol/scss/_orders.scss index c32084af4..5ff10167f 100644 --- a/src/static/pretixcontrol/scss/_orders.scss +++ b/src/static/pretixcontrol/scss/_orders.scss @@ -15,6 +15,9 @@ span.sum-net, span.sum-gross { display: none; } + tfoot { + border-top: 2px solid #ddd; + } } #sumtoggle {