aboutsummaryrefslogtreecommitdiff
path: root/app/dispatch/models.py
diff options
context:
space:
mode:
authorMitch Riedstra <Mitch@riedstra.us>2017-10-24 16:59:26 -0400
committerMitch Riedstra <Mitch@riedstra.us>2017-10-24 16:59:26 -0400
commit4ee5893fd9c82228c62306fc7f5babdfc602e4c4 (patch)
tree2069a54e6eb3b143cc260b1347c62dfb2efb2c30 /app/dispatch/models.py
parentea2ce9d3069fa906474e356b7dbd209edd1ea1bd (diff)
downloaddispatch-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/models.py')
-rw-r--r--app/dispatch/models.py27
1 files changed, 24 insertions, 3 deletions
diff --git a/app/dispatch/models.py b/app/dispatch/models.py
index dfffb9a..2d724d6 100644
--- a/app/dispatch/models.py
+++ b/app/dispatch/models.py
@@ -71,6 +71,7 @@ class Invoice(models.Model):
invoice_id = models.IntegerField()
invoice_date = models.DateField()
due_date = models.DateField()
+ paid = models.BooleanField(default=False)
def __str__(self):
return "Invoice for {} by {} for ${}".format(
@@ -78,13 +79,25 @@ 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 populate_bill_to(self):
- pk = Settings.objects.get(key="default_bill_to")
+ 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)
+ pk = Settings.objects.get(key=key).value
self.owner = Identity.objects.get(pk=pk)
def populate_items_default_date(self):
@@ -96,6 +109,7 @@ class Invoice(models.Model):
loads = Load.objects.filter(user__exact=self.user.id, date__range=(start_date, end_date))
for load in loads:
i = InvoiceItem(invoice=self,
+ date=load.date,
description=load.description,
quantity=1,
amount=load.amount)
@@ -112,11 +126,15 @@ class Invoice(models.Model):
def total(self):
t = 0
for i in InvoiceItem.objects.filter(invoice__exact=self.pk):
- t += i.amount
+ t += i.total()
return t
+ def get_absolute_url(self):
+ return "/invoices/view/%i" % self.pk
+
class InvoiceItem(models.Model):
invoice = models.ForeignKey(Invoice, on_delete=models.CASCADE)
+ date = models.DateField()
description = models.CharField(max_length=256)
quantity = models.IntegerField()
amount = models.DecimalField(max_digits=19,decimal_places=2)
@@ -127,6 +145,9 @@ class InvoiceItem(models.Model):
self.description,
self.amount)
+ def total(self):
+ return self.quantity*self.amount
+
# class Invoice():