From 4ee5893fd9c82228c62306fc7f5babdfc602e4c4 Mon Sep 17 00:00:00 2001 From: Mitch Riedstra Date: Tue, 24 Oct 2017 16:59:26 -0400 Subject: Massive updates to the invoice system. Printable invoices work properly and required changes to materialize --- app/dispatch/models.py | 27 ++++++++++++++++++++++++--- 1 file changed, 24 insertions(+), 3 deletions(-) (limited to 'app/dispatch/models.py') 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(): -- cgit v1.2.3