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

59 行
1.8 KiB

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