Closes #25 — changes what invoice_access will redirect to
This commit is contained in:
		
							parent
							
								
									c135c77d6c
								
							
						
					
					
						commit
						bf053242de
					
				
					 1 changed files with 21 additions and 7 deletions
				
			
		|  | @ -542,8 +542,14 @@ def _checkout_errors(request, errors): | ||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
| def invoice_access(request, access_code): | def invoice_access(request, access_code): | ||||||
|     ''' Redirects to the first unpaid invoice for the attendee that matches |     ''' Redirects to an invoice for the attendee that matches the given access | ||||||
|     the given access code, if any. |     code, if any. | ||||||
|  | 
 | ||||||
|  |     If the attendee has multiple invoices, we use the following tie-break: | ||||||
|  | 
 | ||||||
|  |     - If there's an unpaid invoice, show that, otherwise | ||||||
|  |     - If there's a paid invoice, show the most recent one, otherwise | ||||||
|  |     - Show the most recent invoid of all | ||||||
| 
 | 
 | ||||||
|     Arguments: |     Arguments: | ||||||
| 
 | 
 | ||||||
|  | @ -552,21 +558,29 @@ def invoice_access(request, access_code): | ||||||
| 
 | 
 | ||||||
|     Returns: |     Returns: | ||||||
|         redirect: |         redirect: | ||||||
|             Redirect to the first unpaid invoice for that user. |             Redirect to the selected invoice for that user. | ||||||
| 
 | 
 | ||||||
|     Raises: |     Raises: | ||||||
|         Http404: If there is no such invoice. |         Http404: If the user has no invoices. | ||||||
|     ''' |     ''' | ||||||
| 
 | 
 | ||||||
|     invoices = commerce.Invoice.objects.filter( |     invoices = commerce.Invoice.objects.filter( | ||||||
|         user__attendee__access_code=access_code, |         user__attendee__access_code=access_code, | ||||||
|         status=commerce.Invoice.STATUS_UNPAID, |     ).order_by("-issue_time") | ||||||
|     ).order_by("issue_time") | 
 | ||||||
| 
 | 
 | ||||||
|     if not invoices: |     if not invoices: | ||||||
|         raise Http404() |         raise Http404() | ||||||
| 
 | 
 | ||||||
|     invoice = invoices[0] |     unpaid = invoices.filter(status=commerce.Invoice.STATUS_UNPAID) | ||||||
|  |     paid = invoices.filter(status=commerce.Invoice.STATUS_PAID) | ||||||
|  | 
 | ||||||
|  |     if unpaid: | ||||||
|  |         invoice = unpaid[0]  # (should only be 1 unpaid invoice?) | ||||||
|  |     elif paid: | ||||||
|  |         invoice = paid[0]  # Most recent paid invoice | ||||||
|  |     else: | ||||||
|  |         invoice = invoices[0]  # Most recent of any invoices | ||||||
| 
 | 
 | ||||||
|     return redirect("invoice", invoice.id, access_code) |     return redirect("invoice", invoice.id, access_code) | ||||||
| 
 | 
 | ||||||
|  |  | ||||||
		Loading…
	
	Add table
		
		Reference in a new issue
	
	 Christopher Neugebauer
						Christopher Neugebauer