From 4ee5893fd9c82228c62306fc7f5babdfc602e4c4 Mon Sep 17 00:00:00 2001 From: Mitch Riedstra Date: Tue, 24 Oct 2017 16:59:26 -0400 Subject: Massive updates to the invoice system. Printable invoices work properly and required changes to materialize --- app/dispatch/views.py | 84 ++++++++++++++++++++++++++++++++++++++++++++++++++- 1 file changed, 83 insertions(+), 1 deletion(-) (limited to 'app/dispatch/views.py') diff --git a/app/dispatch/views.py b/app/dispatch/views.py index 65d2811..75e7a06 100644 --- a/app/dispatch/views.py +++ b/app/dispatch/views.py @@ -10,12 +10,13 @@ from django.views.generic import TemplateView,ListView from django.views.generic.detail import DetailView from django.views.generic.edit import CreateView, UpdateView, DeleteView from django.core.urlresolvers import reverse_lazy -from dispatch.models import Customer, Load, Paperwork +from dispatch.models import Customer, Load, Paperwork, Invoice, Settings from dispatch.forms import AddPaperworkForm from django.contrib.auth.models import User from django.contrib.auth.mixins import UserPassesTestMixin # from django.http import HttpResponseRedirect from .misc import get_week_dates, split_loads_by_day +import datetime import re, os def home(request): @@ -30,9 +31,12 @@ class LoadDateSort(DetailView): loads = self.get_object().load_set.filter(date__range=(week_dates['start_date'], week_dates['end_date'])).prefetch_related('customer') + context['loads_nosplit'] = loads.order_by('date') + context['loads'] = split_loads_by_day(loads,week_dates['start_date'], week_dates['end_date']) + context['week_dates'] = week_dates return context @@ -274,3 +278,81 @@ def PaperworkDownload(request, load_id, pk): return response except Exception as e: print(e) + + + +# Invoice +class InvoiceList(FilteredListView): + template_name = "dispatch/invoice/list.html" + model = Invoice + +class InvoiceDetail(DetailView): + template_name = "dispatch/invoice/detail.html" + model = Invoice + +def InvoiceGenerateForDates(request, pk): + driver = User.objects.get(pk=pk) + + # I fucking hate dates and time. What a clusterfuck + start_date = request.GET.get('date', datetime.datetime.now()) + if isinstance(start_date, str): + start_date = datetime.datetime.strptime(start_date, '%m/%d/%Y') + due_date = start_date + datetime.timedelta(days=30) + wk = get_week_dates(datetime.datetime.strftime(start_date, "%m/%d/%Y")) + + inv = Invoice(user=driver, invoice_date=start_date, due_date=due_date) + + inv.populate_bill_to() + inv.populate_owner() + inv.set_invoice_id() + + inv.save() + + inv.populate_items(start_date=wk['start_date'], end_date=wk['end_date']) + + return redirect(reverse('invoice_list')) + + # print(start_date) + # print(wk) + # print(driver) + # print(inv) + + + + +# class InvoiceEdit(UserPassesTestMixin, UpdateView): +# template_name = "dispatch/invoice/edit.html" +# model = Invoice +# fields = ['invoice_date','due_date'] +# +# def test_func(self): +# # Seems a little hacky at first but it works! +# return self.request.user.is_superuser or \ +# self.get_object().user.pk is self.request.user.pk +# +# class InvoiceCreate(CreateView): +# template_name = "dispatch/invoice/create.html" +# model = Invoice +# fields = ['invoice_date', 'due_date'] +# +# def get(self,request): +# if request.user.is_superuser: +# self.fields.insert(1,'user') +# return super(LoadCreate, self).get(request) +# +# def form_valid(self, form): +# if not self.request.user.is_superuser: +# load = form.save(commit=False) +# load.user = self.request.user +# return super(LoadCreate, self).form_valid(form) + +class InvoiceDelete(UserPassesTestMixin, DeleteView): + template_name = "dispatch/invoice/list.html" + model = Invoice + success_url = reverse_lazy('invoice_list') + + def test_func(self): + print (self.request.user.is_superuser) + print(self.get_object().user.pk is self.request.user.pk) + return self.request.user.is_superuser or \ + self.get_object().user.pk is self.request.user.pk -- cgit v1.2.3