diff options
| author | Mitch Riedstra <Mitch@riedstra.us> | 2017-11-09 15:57:46 -0500 |
|---|---|---|
| committer | Mitch Riedstra <Mitch@riedstra.us> | 2017-11-09 15:57:46 -0500 |
| commit | 33a6e5cb02189b7621a279c32c12b5c3d83ba680 (patch) | |
| tree | 6d9776af90222f8062921b62fc7f6f4b5fa01dc7 /app/dispatch/views.py | |
| parent | c055260bb88fd407c81ad0d40dd288a5aae4fb17 (diff) | |
| download | dispatch-tracker-33a6e5cb02189b7621a279c32c12b5c3d83ba680.tar.gz dispatch-tracker-33a6e5cb02189b7621a279c32c12b5c3d83ba680.tar.xz | |
Show number of attachments, and color code issues with loads.
Prevent invoice generation on zero amounts and no attachments.
Add a way for superusers to edit invoices.
Add a field to invoices for a payment identifier. E.g. "Check #1234"
Diffstat (limited to 'app/dispatch/views.py')
| -rw-r--r-- | app/dispatch/views.py | 64 |
1 files changed, 59 insertions, 5 deletions
diff --git a/app/dispatch/views.py b/app/dispatch/views.py index c80607e..b729922 100644 --- a/app/dispatch/views.py +++ b/app/dispatch/views.py @@ -13,7 +13,7 @@ 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, \ - Invoice, UserInvoiceNumber, Identity + Invoice, UserInvoiceNumber, Identity, Settings from dispatch.forms import AddPaperworkForm from django.contrib.auth import get_user_model from django.contrib.auth.mixins import UserPassesTestMixin @@ -112,6 +112,23 @@ class DriverDetail(UserPassesTestMixin, DetailView): uinv.save() context['invoice_number'] = uinv + # A stupid hack to set a default Bill to Identity on first super user + # login + try: + context['default_bill_to'] = Identity.objects.get(pk=\ + Settings.objects.get(key='default_bill_to').value) + except: + if self.request.user.is_superuser: + try: + print("No default Identity Set") + bill_to = self.request.user.identity + default = Settings(key='default_bill_to', value=bill_to.pk) + default.save() + except Exception as e: + print(e) + print("No identity, you should be redirected") + context['default_bill_to'] = None + return context @@ -130,7 +147,7 @@ class DriverSummary(UserPassesTestMixin, LoadDateSort): stats = {} stats['count'], stats['average'], stats['sum'] = (0, 0, 0) - stats['incomplete_loads'] = 0 + context['can_invoice'] = True loads_by_date = context['loads'] for d in loads_by_date: @@ -138,8 +155,12 @@ class DriverSummary(UserPassesTestMixin, LoadDateSort): for l in loads_by_date[d]: stats['count'] += 1 stats['sum'] += l.amount - if l.amount == 0: - stats['incomplete_loads'] += 1 + + # Any load not up to par will break the chain + print(l) + print(l.can_invoice()) + if not l.can_invoice(): + context['can_invoice'] = False if stats['sum'] is not 0 and stats['count'] is not 0: stats['average'] = stats['sum']/stats['count'] @@ -295,7 +316,7 @@ class LoadDetail(DetailView): return context -class LoadUpdate(FilteredUpdateView): +class LoadUpdate(UserPassesTestMixin, FilteredUpdateView): template_name = "dispatch/loads/edit.html" model = Load fields = [] @@ -325,6 +346,10 @@ class LoadUpdate(FilteredUpdateView): load.user = self.request.user return super(LoadUpdate, self).form_valid(form) + def test_func(self): + return self.request.user.is_superuser or \ + self.get_object().user.pk == self.request.user.pk + class LoadDelete(UserPassesTestMixin, FilteredDeleteView): template_name = "dispatch/loads/delete.html" @@ -502,6 +527,35 @@ class IdentityUpdate(UserPassesTestMixin, UpdateView): # Invoice +class InvoiceEdit(UserPassesTestMixin, FilteredUpdateView): + template_name = "dispatch/invoice/edit.html" + model = Invoice + fields = [] + + default_fields = [] + superuser_fields = ['user', 'owner', 'bill_to', 'invoice_id', + 'invoice_date', 'due_date', 'paid', + 'payment_identifer'] + + def set_fields(self, user): + if user.is_superuser: + self.fields = self.superuser_fields + else: + self.fields = self.default_fields + + def post(self, request, pk): + self.set_fields(request.user) + return super(InvoiceEdit, self).post(request) + + def get(self, request, pk): + self.set_fields(request.user) + return super(InvoiceEdit, self).get(request) + + def test_func(self): + return self.request.user.is_superuser # or \ + # self.get_object().user.pk == self.request.user.pk + + class InvoiceList(FilteredListView): template_name = "dispatch/invoice/list.html" model = Invoice |
