diff options
| author | Mitch Riedstra <Mitch@riedstra.us> | 2017-10-24 16:59:26 -0400 |
|---|---|---|
| committer | Mitch Riedstra <Mitch@riedstra.us> | 2017-10-24 16:59:26 -0400 |
| commit | 4ee5893fd9c82228c62306fc7f5babdfc602e4c4 (patch) | |
| tree | 2069a54e6eb3b143cc260b1347c62dfb2efb2c30 /app/dispatch/views.py | |
| parent | ea2ce9d3069fa906474e356b7dbd209edd1ea1bd (diff) | |
| download | dispatch-tracker-4ee5893fd9c82228c62306fc7f5babdfc602e4c4.tar.gz dispatch-tracker-4ee5893fd9c82228c62306fc7f5babdfc602e4c4.tar.xz | |
Massive updates to the invoice system. Printable invoices work properly and required changes to materialize
Diffstat (limited to 'app/dispatch/views.py')
| -rw-r--r-- | app/dispatch/views.py | 84 |
1 files changed, 83 insertions, 1 deletions
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 |
