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