diff options
Diffstat (limited to 'app')
| -rw-r--r-- | app/dispatch/models.py | 41 | ||||
| -rw-r--r-- | app/dispatch/templates/dispatch/drivers/detail.html | 48 | ||||
| -rw-r--r-- | app/dispatch/templates/dispatch/userinvoicenumber/edit.html | 18 | ||||
| -rw-r--r-- | app/dispatch/urls.py | 2 | ||||
| -rw-r--r-- | app/dispatch/views.py | 35 |
5 files changed, 99 insertions, 45 deletions
diff --git a/app/dispatch/models.py b/app/dispatch/models.py index dd088c4..a1e06d7 100644 --- a/app/dispatch/models.py +++ b/app/dispatch/models.py @@ -82,6 +82,9 @@ class UserInvoiceNumber(models.Model): user = models.OneToOneField(User, on_delete=models.CASCADE) number = models.IntegerField(default=1200) + def get_absolute_url(self): + return '/drivers/view/{:d}'.format(self.user.pk) + class Invoice(models.Model): user = models.ForeignKey(User, on_delete=models.CASCADE) owner = models.ForeignKey(Identity, on_delete=models.CASCADE, related_name="owner") @@ -97,8 +100,6 @@ class Invoice(models.Model): self.owner.name, self.total()) - # def __init__(self, user, invoice_date, due_date): - # super(Invoice, self).__init__() def setup(self): try: uinv = UserInvoiceNumber.objects.get(user=self.user.pk) @@ -174,42 +175,6 @@ class InvoiceItem(models.Model): -# class Invoice(): -# load_ids = [] -# total = 0.00 -# -# def __init__(self, **kwargs): -# # self.args = kwargs -# if isinstance(kwargs['driver'], User): -# self.driver = kwargs['driver'] -# else: -# raise Exception("'driver' must be a Django User instance") -# -# if isinstance(kwargs.get('start_date'), datetime) and isinstance(kwargs.get('end_date'), datetime): -# self.start_date = kwargs.get('start_date') -# self.end_date = kwargs.get('end_date') -# else: -# dates = get_week_dates() -# self.start_date = dates['start_date'] -# self.end_date = dates['end_date'] -# -# self.loads = Load.objects.filter(user__exact=self.driver.id, -# date__range=(self.start_date, self.end_date)) -# -# for l in self.loads: -# self.load_ids.append(l.pk) -# self.total += float(l.amount) -# -# if isinstance(kwargs.get('bill_to'), Owner): -# self.bill_to = kwargs.get('bill_to') -# else: -# self.bill_to = Owner.objects.get(pk=Settings.objects.get(key='default_owner').value) -# -# -# def __str__(self): -# return "Invoice for {} from {} for: {}".format(self.end_date, self.driver, self.total) - - auditlog.register(Customer) diff --git a/app/dispatch/templates/dispatch/drivers/detail.html b/app/dispatch/templates/dispatch/drivers/detail.html index 9e4e7f3..26a2ba8 100644 --- a/app/dispatch/templates/dispatch/drivers/detail.html +++ b/app/dispatch/templates/dispatch/drivers/detail.html @@ -12,8 +12,12 @@ </div> <div class="row"> - <div class="col s12"> + <div class="col s6"> + <h5>General Information</h5> + </div> + <div class="col s6"> <div class="right-align"> + <a class="btn blue" href="{% url 'driver_summary' object.pk %}">View Summary</a> <a class="btn green" href="{% url 'driver_edit' object.pk %}">Edit</a> </div> </div> @@ -42,9 +46,13 @@ </div> + {% if ident is not None %} <div class="row"> - <div class="col s12"> + <div class="col s6"> + <h5>Invoice Identity</h5> + </div> + <div class="col s6"> <div class="right-align"> {% if request.user.is_superuser %} <a class="btn orange" href="{% url 'identity_default' object.pk ident.pk %}">Make Default Bill To</a> @@ -86,7 +94,7 @@ <div class="row"> <div class="col s12"> <div class="right-align"> - <a class="btn green" href="{% url 'identity_create' object.pk %}">Create New Identity</a> + <a class="btn green" href="{% url 'identity_create' object.pk ident.pk %}">Create New Identity</a> </div> </div> </div> @@ -97,4 +105,38 @@ </div> {% endif %} + +<div class="row"> + <div class="col s6"> + <h5> + Current Invoice Number + </h5> + </div> + <div class="col s6"> + <div class="right-align"> + <a class="btn green" href="{% url 'userinvoicenumber_edit' object.pk invoice_number.pk %}"> + Edit + </a> + </div> + </div> +</div> + +<div class="row"> + <div class="col s12"> + <table> + <tr> + <th>Invoice Number</th> + <td>{{invoice_number.number}}</td> + </tr> + </table> + </div> +</div> + +<div class="row"> + <div class="col s12"> + <p>This number will automatically increment when new invoices + are generated from the load summary page</p> + </div> +</div> + {% endblock %} diff --git a/app/dispatch/templates/dispatch/userinvoicenumber/edit.html b/app/dispatch/templates/dispatch/userinvoicenumber/edit.html new file mode 100644 index 0000000..e858d3f --- /dev/null +++ b/app/dispatch/templates/dispatch/userinvoicenumber/edit.html @@ -0,0 +1,18 @@ +{% extends 'dispatch/base.html' %} + +{% block title %}Edit Invoice Number for {{object.user.username}}{% endblock %} + +{% block content %} +<div class="row"> + <div class="col s12 m6"> + <h1> + Invoice Number for {{object.user.username}} + </h1> + </div> +</div> + +<form action="" method="post">{% csrf_token %} + {{ form.as_p }} + <input type="submit" class="btn blue" value="Update" /> +</form> +{% endblock %} diff --git a/app/dispatch/urls.py b/app/dispatch/urls.py index 9d8b77b..270c674 100644 --- a/app/dispatch/urls.py +++ b/app/dispatch/urls.py @@ -20,6 +20,8 @@ urlpatterns = [ url(r'^drivers/(?P<user_id>\d+)/identity/edit/(?P<pk>\d+)$', views.IdentityUpdate.as_view(), name='identity_edit'), url(r'^drivers/(?P<user_id>\d+)/identity/default/(?P<pk>\d+)$', views.SetDefaultIdentity, name='identity_default'), + url(r'drivers/(?P<user_id>\d+)/invoice/edit/(?P<pk>\d+)$', views.UserInvoiceNumberUpdate.as_view(), name='userinvoicenumber_edit'), + url(r'^customers/$', views.CustomerList.as_view(), name='customer_list'), url(r'^customers/new$', views.CustomerCreate.as_view(), name='customer_new'), url(r'^customers/view/(?P<pk>\d+)$', views.CustomerDetail.as_view(), name='customer_detail'), diff --git a/app/dispatch/views.py b/app/dispatch/views.py index bf4c3fb..087091a 100644 --- a/app/dispatch/views.py +++ b/app/dispatch/views.py @@ -6,6 +6,7 @@ from django.core.urlresolvers import reverse # import django.contrib.auth as auth # from django.conf import settings # Create your views here. +from django.core.exceptions import ObjectDoesNotExist from django.views.generic import TemplateView,ListView from django.views.generic.detail import DetailView from django.views.generic.edit import CreateView, UpdateView, DeleteView @@ -90,6 +91,14 @@ class DriverDetail(UserPassesTestMixin, DetailView): except: context['ident'] = None + try: + context['invoice_number'] = \ + UserInvoiceNumber.objects.get(user=self.get_object().pk) + except ObjectDoesNotExist: + uinv = UserInvoiceNumber(user=self.get_object()) + uinv.save() + context['invoice_number'] = uinv + return context @@ -132,7 +141,15 @@ class DriverUpdate(UserPassesTestMixin, UpdateView): template_name = "dispatch/drivers/edit.html" model = User success_url = reverse_lazy('driver_list') - fields = ['username', 'first_name','last_name','email','groups', 'is_active'] + # fields = ['username', 'first_name','last_name','email','groups'] + fields = ['username', 'first_name','last_name','email'] + + + def get(self,request, *args, **kwargs): + if request.user.is_superuser: + self.fields.append('is_active') + self.fields.append('is_superuser') + return super(DriverUpdate, self).get(request) def get_context_data(self, **kwargs): # Shit gets fucky with super() really fast, but this seems to work @@ -313,7 +330,7 @@ def PaperworkDownload(request, load_id, pk): class UserInvoiceNumberUpdate(UserPassesTestMixin, UpdateView): template_name = "dispatch/userinvoicenumber/edit.html" - model = UserInvoiceNumber + model = UserInvoiceNumber fields = ['number'] def get(self,request, *args, **kwargs): @@ -341,7 +358,12 @@ def SetDefaultIdentity(request, user_id, pk): class IdentityCreate(UserPassesTestMixin, CreateView): template_name = "dispatch/identity/edit.html" model = Identity - fields = ['user', 'name', 'address', 'city', 'state', 'zip_code'] + fields = ['name', 'address', 'city', 'state', 'zip_code'] + + def get(self, request, *args, **kwargs): + if request.user.is_superuser: + self.fields.insert(1,'user') + return super(IdentityCreate, self).get(request) def test_func(self): return self.request.user.is_superuser or \ @@ -350,7 +372,12 @@ class IdentityCreate(UserPassesTestMixin, CreateView): class IdentityUpdate(UserPassesTestMixin, UpdateView): template_name = "dispatch/identity/edit.html" model = Identity - fields = ['user', 'name', 'address', 'city', 'state', 'zip_code'] + fields = ['name', 'address', 'city', 'state', 'zip_code'] + + def get(self, request, *args, **kwargs): + if request.user.is_superuser: + self.fields.insert(1,'user') + return super(IdentityUpdate, self).get(request) def test_func(self): return self.request.user.is_superuser or \ |
