From 653cd80891b96a23bf66c3bfe7c86d38b3ad1d8b Mon Sep 17 00:00:00 2001 From: James Polley Date: Sat, 13 Jan 2018 20:52:52 +1100 Subject: [PATCH] Quick and dirty voucher use report Dumps a list of voucher code, invoice id, invoice details in a listreport. --- .../registrasion/reporting/views.py | 20 ++++++++++++++++++- 1 file changed, 19 insertions(+), 1 deletion(-) diff --git a/vendor/registrasion/registrasion/reporting/views.py b/vendor/registrasion/registrasion/reporting/views.py index 46667205..499c7e1c 100644 --- a/vendor/registrasion/registrasion/reporting/views.py +++ b/vendor/registrasion/registrasion/reporting/views.py @@ -9,7 +9,7 @@ from django.contrib.auth.decorators import user_passes_test from django.contrib.auth.models import User from django.core.urlresolvers import reverse from django.db import models -from django.db.models import F, Q +from django.db.models import F, Q, Subquery, OuterRef from django.db.models import Count, Max, Sum from django.db.models import Case, When, Value from django.db.models.fields.related import RelatedField @@ -314,6 +314,24 @@ def limits(request, form): headings = ["Discount", "Quantity"] reports.append(ListReport('Discounts', headings, data)) + vprod=Subquery(conditions.VoucherFlag.objects.filter( + voucher__code__in=OuterRef("cart__vouchers__code")).values("products")) + vcat=Subquery(conditions.VoucherFlag.objects.filter( + voucher__code__in=OuterRef("cart__vouchers__code")).values("categories")) + invoices_using_vouchers=commerce.Invoice.objects.filter(( + Q(lineitem__product__in=vprod)| + Q(lineitem__product__category__in=vcat) + )).filter( + status=commerce.Invoice.STATUS_PAID).order_by( + "cart__vouchers__code").select_related("user") + + vouchers = [] + for inv in invoices_using_vouchers: + code=inv.cart.vouchers.all().values("code")[0]["code"] + vouchers.append((code,inv.id,inv)) + voucher_headings = ["Code","Invoice#","Details"] + reports.append(ListReport('Vouchers', voucher_headings, vouchers)) + return reports