Django backend for WorkX project
您最多选择25个主题 主题必须以字母或数字开头,可以包含连字符 (-),并且长度不得超过35个字符
此仓库已存档。您可以查看文件和克隆,但不能推送或创建工单/合并请求。

55 行
1.6 KiB

  1. from django.db import models
  2. from employee.models import Employee
  3. class CompanyBankAccount(models.Model):
  4. name = models.CharField(max_length=50)
  5. logo = models.ImageField(upload_to='banks', null=True, blank=True)
  6. def __str__(self):
  7. return self.name
  8. class Category(models.Model):
  9. name = models.CharField(max_length=30)
  10. def __str__(self):
  11. return self.name
  12. class Expense(models.Model):
  13. PAYMENT_MODE = (
  14. ("REIMBURSE", "REIMBURSE"),
  15. ("PERK", "PERK")
  16. )
  17. title = models.CharField(max_length=50)
  18. category = models.ForeignKey(Category, on_delete=models.CASCADE)
  19. expense_id = models.CharField(max_length=15)
  20. date_of_creation = models.DateField()
  21. team_member = models.ForeignKey(Employee, on_delete=models.CASCADE)
  22. company_bank_account = models.ForeignKey(CompanyBankAccount, on_delete=models.CASCADE)
  23. repayment_mode = models.CharField(max_length=10, choices=PAYMENT_MODE, default="REIMBURSE")
  24. @property
  25. def expense_total(self):
  26. items = self.items.all()
  27. total = 0
  28. for item in items:
  29. total += item.item_total
  30. return total
  31. class Item(models.Model):
  32. name = models.CharField(max_length=100)
  33. rate = models.DecimalField(max_digits=15, decimal_places=2)
  34. quantity = models.IntegerField()
  35. expense = models.ForeignKey(Expense, on_delete=models.CASCADE)
  36. attachment = models.ImageField(upload_to='expense_item')
  37. @property
  38. def item_total(self):
  39. return self.amount * self.quantity
  40. def __str__(self):
  41. return self.name