def invoice_pdf(request, companies=None): if companies is None: companies = Company.objects.all() form = InvoiceForm(companies, request.GET) if form.is_valid(): lesson_attendees = LessonAttendee.objects.filter( lesson__real_end__range=(form.cleaned_data["start"], form.cleaned_data["end"]) ) lesson_attendees = lesson_attendees.filter(course_member__student__company__in=form.cleaned_data["companies"]) pdf = InvoicePdfGenerator().generate( (lesson_attendees.all(), form.cleaned_data["start"], form.cleaned_data["end"]) ) return HttpResponse(pdf, "application/pdf") else: return HttpResponse(form.errors.as_ul)
def book_invoice_dict(request, companies, acompanies): form = InvoiceForm(companies, request.GET) if form.is_valid(): invoice_companies = set(form.cleaned_data["companies"]) if acompanies is None: invoice_companies = ( Company.objects.all() if not form.cleaned_data["companies"] else set(form.cleaned_data["companies"]) ) else: invoice_companies &= set(acompanies) ret_companies = Company.objects.book_invoice( companies=invoice_companies, start=form.cleaned_data["start"], end=form.cleaned_data["end"] ) total_book_invoice_sum = sum([a.book_invoice_students_sum for a in ret_companies]) context = { "object_list": ret_companies, "total_book_invoice_sum": total_book_invoice_sum, "show_students": form.cleaned_data["show_students"], } else: context = {"nolist": True, "object_list": companies} return context
def invoice( request, companies=None, template="reports/invoice.html", extra_context=None, empty_when_no_companies=False ): acompanies = companies if companies is None: companies = Company.objects.all() if request.GET: form = InvoiceForm(companies, request.GET) if form.is_valid(): invoice_companies = set(form.cleaned_data["companies"]) if acompanies is None: invoice_companies = ( Company.objects.all() if not form.cleaned_data["companies"] else set(form.cleaned_data["companies"]) ) else: invoice_companies &= set(acompanies) ret_companies = Company.objects.invoice( companies=invoice_companies, start=form.cleaned_data["start"], end=form.cleaned_data["end"] ) total_length = sum([a.invoice_length for a in ret_companies]) total_price = sum([a.invoice_price for a in ret_companies]) total_count = sum([a.invoice_count for a in ret_companies]) context = { "object_list": ret_companies, "total_length": total_length, "total_price": total_price, "total_count": total_count, "show_students": form.cleaned_data["show_students"], } else: context = {"nolist": True, "object_list": companies} else: context = {"nolist": True, "object_list": companies} form = InvoiceForm(companies=companies, initial={"companies": ",".join(str(a.pk) for a in companies)}) context["form"] = form if extra_context: context.update(extra_context) return render_to_response(template, RequestContext(request, context))