Changeset - f41bd9c65bec
[Not reviewed]
0 2 0
Christopher Neugebauer - 8 years ago 2016-09-19 05:03:21
chrisjrn@gmail.com
Adds paid invoices by date report
2 files changed with 47 insertions and 1 deletions:
0 comments (0 inline, 0 general)
registrasion/reporting/views.py
Show inline comments
...
 
@@ -2,2 +2,5 @@ import forms
 

	
 
import collections
 
import datetime
 

	
 
from django.contrib.auth.decorators import user_passes_test
...
 
@@ -6,3 +9,3 @@ from django.db import models
 
from django.db.models import F, Q
 
from django.db.models import Count, Sum
 
from django.db.models import Count, Max, Sum
 
from django.db.models import Case, When, Value
...
 
@@ -267,2 +270,40 @@ def product_status(request, form):
 

	
 
@report_view("Paid invoices by date", form_type=forms.ProductAndCategoryForm)
 
def paid_invoices_by_date(request, form):
 
    ''' Shows the number of paid invoices containing given products or
 
    categories per day. '''
 

	
 
    products = form.cleaned_data["product"]
 
    categories = form.cleaned_data["category"]
 

	
 
    invoices = commerce.Invoice.objects.filter(
 
        Q(lineitem__product__in=products) | Q(lineitem__product__category__in=categories),
 
        status=commerce.Invoice.STATUS_PAID,
 
    )
 

	
 
    payments = commerce.PaymentBase.objects.all()
 
    payments = payments.filter(
 
        invoice__in=invoices,
 
    )
 
    payments = payments.order_by("invoice")
 
    invoice_max_time = payments.values("invoice").annotate(max_time=Max("time"))
 

	
 
    by_date = collections.defaultdict(int)
 

	
 
    for line in invoice_max_time:
 
        time = line["max_time"]
 
        date = datetime.datetime(
 
            year=time.year, month=time.month, day=time.day
 
        )
 
        by_date[date] += 1
 

	
 
    data = [(date, count) for date, count in sorted(by_date.items())]
 
    data = [(date.strftime("%Y-%m-%d"), count) for date, count in data]
 

	
 
    return ListReport(
 
        "Paid Invoices By Date",
 
        ["date", "count"],
 
        data,
 
    )
 

	
 
@report_view("Credit notes")
registrasion/urls.py
Show inline comments
...
 
@@ -48,2 +48,7 @@ reports = [
 
    url(r"^items_sold/?$", rv.items_sold, name="items_sold"),
 
    url(
 
        r"^paid_invoices_by_date/?$",
 
        rv.paid_invoices_by_date,
 
        name="paid_invoices_by_date"
 
    ),
 
    url(r"^product_status/?$", rv.product_status, name="product_status"),
0 comments (0 inline, 0 general)