aboutsummaryrefslogtreecommitdiff
path: root/app/dispatch/models.py
diff options
context:
space:
mode:
authorMitch Riedstra <mitch@riedstra.us>2017-10-24 19:09:24 -0400
committerMitch Riedstra <mitch@riedstra.us>2017-10-24 19:09:24 -0400
commit61dc16200b5ada1c16def723498e61d1bb112da3 (patch)
tree160470f903525e5509e6962149017e6307e38789 /app/dispatch/models.py
parent618676efca076cd8a72f12e5c4db2413c4605eff (diff)
downloaddispatch-tracker-61dc16200b5ada1c16def723498e61d1bb112da3.tar.gz
dispatch-tracker-61dc16200b5ada1c16def723498e61d1bb112da3.tar.xz
Remove all old migrations and start fresh. Re-arranged models to better fit Invoice model
Diffstat (limited to 'app/dispatch/models.py')
-rw-r--r--app/dispatch/models.py61
1 files changed, 40 insertions, 21 deletions
diff --git a/app/dispatch/models.py b/app/dispatch/models.py
index 2d724d6..d525818 100644
--- a/app/dispatch/models.py
+++ b/app/dispatch/models.py
@@ -4,6 +4,7 @@ from auditlog.registry import auditlog
from auditlog.models import AuditlogHistoryField
from django.contrib.auth.models import User
from datetime import datetime
+from django.core.exceptions import ObjectDoesNotExist
from .misc import get_week_dates, paperwork_user_directory_path
# Create your models here.
@@ -47,6 +48,7 @@ class Paperwork(models.Model):
class Identity(models.Model):
+ user = models.OneToOneField(User, on_delete=models.CASCADE)
name = models.CharField(max_length=256)
address = models.CharField(max_length=256)
city = models.CharField(max_length=256)
@@ -56,6 +58,13 @@ class Identity(models.Model):
def __str__(self):
return "{}".format(self.name)
+ def set_default(self):
+ try:
+ Settings.objects.get(key="default_bill_to").value
+ except ObjectDoesNotExist:
+ st = Settings(key="default_bill_to", value=int(self.pk))
+ st.save()
+
class Settings(models.Model):
key = models.CharField(max_length=256)
value = models.CharField(max_length=256)
@@ -64,6 +73,10 @@ class Settings(models.Model):
return "{}: {}".format(self.key, self.value)
+class UserInvoiceNumber(models.Model):
+ user = models.OneToOneField(User, on_delete=models.CASCADE)
+ number = models.IntegerField(default=1200)
+
class Invoice(models.Model):
user = models.ForeignKey(User, on_delete=models.CASCADE)
owner = models.ForeignKey(Identity, on_delete=models.CASCADE, related_name="owner")
@@ -79,26 +92,32 @@ class Invoice(models.Model):
self.owner.name,
self.total())
- def set_invoice_id(self):
- # A fucking terrible hack
- inv_number = Settings.objects.get(key="user_{:d}_invoice_number".format(self.user.pk))
- inv_number.value = str(int(inv_number.value) + 1)
- self.invoice_id = int(inv_number.value)
- inv_number.save()
+ # def __init__(self, user, invoice_date, due_date):
+ # super(Invoice, self).__init__()
+ def setup(self):
+ try:
+ uinv = UserInvoiceNumber.objects.get(user=self.user.pk)
+ uinv.number += 1
+ uinv.save()
+ self.invoice_id = uinv.number
+ except ObjectDoesNotExist:
+ uinv = UserInvoiceNumber()
+ uinv.user = self.user
+ uinv.save()
+ self.invoice_id = uinv.number
+
+ self.owner = Identity.objects.get(user=self.user.pk)
+
+ bill_to_id = Settings.objects.get(key='default_bill_to')
+ self.bill_to = Identity.objects.get(pk=int(bill_to_id.value))
+
def populate_bill_to(self):
pk = Settings.objects.get(key="default_bill_to").value
self.bill_to = Identity.objects.get(pk=pk)
- def set_owner(self, ident):
- setting = Settings(key="user_{:d}_identity".format(self.user.pk),
- value=ident.pk)
- return setting.save()
-
def populate_owner(self):
- key = "user_{:d}_identity".format(self.user.id)
- pk = Settings.objects.get(key=key).value
- self.owner = Identity.objects.get(pk=pk)
+ self.owner = Identity.objects.get(user=self.user.pk)
def populate_items_default_date(self):
wk = get_week_dates()
@@ -153,14 +172,14 @@ 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')
@@ -168,20 +187,20 @@ class InvoiceItem(models.Model):
# 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)