parent
							
								
									f41bd9c65b
								
							
						
					
					
						commit
						e2d027f71b
					
				
					 3 changed files with 44 additions and 2 deletions
				
			
		|  | @ -1,8 +1,16 @@ | |||
| from registrasion.models import conditions | ||||
| from registrasion.models import inventory | ||||
| 
 | ||||
| from django import forms | ||||
| 
 | ||||
| # Staff-facing forms. | ||||
| # Reporting forms. | ||||
| 
 | ||||
| 
 | ||||
| class DiscountForm(forms.Form): | ||||
|     discount = forms.ModelMultipleChoiceField( | ||||
|         queryset=conditions.DiscountBase.objects.all(), | ||||
|         required=False, | ||||
|     ) | ||||
| 
 | ||||
| 
 | ||||
| class ProductAndCategoryForm(forms.Form): | ||||
|  |  | |||
|  | @ -268,6 +268,40 @@ def product_status(request, form): | |||
|     return ListReport("Inventory", headings, data) | ||||
| 
 | ||||
| 
 | ||||
| @report_view("Product status", form_type=forms.DiscountForm) | ||||
| def discount_status(request, form): | ||||
|     ''' Summarises the usage of a given discount. ''' | ||||
| 
 | ||||
|     discounts = form.cleaned_data["discount"] | ||||
| 
 | ||||
| 
 | ||||
|     items = commerce.DiscountItem.objects.filter( | ||||
|         Q(discount__in=discounts), | ||||
|     ).select_related("cart", "product", "product__category") | ||||
| 
 | ||||
|     items = group_by_cart_status( | ||||
|         items, | ||||
|         ["discount",], | ||||
|         ["discount", "discount__description",], | ||||
|     ) | ||||
| 
 | ||||
|     headings = [ | ||||
|         "Discount", "Paid", "Reserved", "Unreserved", "Refunded", | ||||
|     ] | ||||
|     data = [] | ||||
| 
 | ||||
|     for item in items: | ||||
|         data.append([ | ||||
|             item["discount__description"], | ||||
|             item["total_paid"], | ||||
|             item["total_reserved"], | ||||
|             item["total_unreserved"], | ||||
|             item["total_refunded"], | ||||
|         ]) | ||||
| 
 | ||||
|     return ListReport("Usage by item", headings, data) | ||||
| 
 | ||||
| 
 | ||||
| @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 | ||||
|  |  | |||
|  | @ -45,7 +45,7 @@ reports = [ | |||
|     url(r"^attendee/?$", rv.attendee, name="attendee"), | ||||
|     url(r"^attendee/([0-9]*)$", rv.attendee, name="attendee"), | ||||
|     url(r"^credit_notes/?$", rv.credit_notes, name="credit_notes"), | ||||
|     url(r"^items_sold/?$", rv.items_sold, name="items_sold"), | ||||
|     url(r"^discount_status/?$", rv.discount_status, name="discount_status"), | ||||
|     url( | ||||
|         r"^paid_invoices_by_date/?$", | ||||
|         rv.paid_invoices_by_date, | ||||
|  |  | |||
		Loading…
	
	Add table
		
		Reference in a new issue
	
	 Christopher Neugebauer
						Christopher Neugebauer