Django backend for WorkX project
Não pode escolher mais do que 25 tópicos Os tópicos devem começar com uma letra ou um número, podem incluir traços ('-') e podem ter até 35 caracteres.
Este repositório está arquivado. Pode ver ficheiros e cloná-lo, mas não pode fazer envios ou lançar questões ou pedidos de integração.

39 linhas
1.2 KiB

  1. from django.db import models
  2. from project.models import Project
  3. from client.models import Client, Address, TaxType
  4. class Invoice(models.Model):
  5. title = models.CharField(max_length=30)
  6. project = models.ForeignKey(Project, on_delete=models.CASCADE)
  7. invoice_id = models.CharField(max_length=15)
  8. raised_date = models.DateField()
  9. due_date = models.DateField()
  10. paid_date = models.DateField(null=True, blank=True)
  11. is_archived = models.BooleanField(default=False)
  12. @property
  13. def invoice_total_with_tax(self):
  14. items = self.items.all()
  15. total = 0
  16. for item in items:
  17. total += item.item_total
  18. return total + (total * self.project.client.address.tax_type.percentage / 100)
  19. def __str__(self):
  20. return self.invoice_id
  21. class Item(models.Model):
  22. name = models.TextField(blank=False, null=False)
  23. amount = models.DecimalField(max_digits=15, decimal_places=2)
  24. quantity = models.IntegerField()
  25. invoice = models.ForeignKey(Invoice, on_delete=models.CASCADE, related_name='items')
  26. @property
  27. def item_total(self):
  28. return self.amount * self.quantity
  29. def __str__(self):
  30. return self.name