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

44 行
1.4 KiB

  1. from django.contrib.auth.models import User
  2. from django.db import models
  3. from phonenumber_field.modelfields import PhoneNumberField
  4. from project.models import Project
  5. class Employee(models.Model):
  6. user = models.OneToOneField(User, on_delete=models.CASCADE)
  7. employee_id = models.CharField(max_length=15)
  8. phone = PhoneNumberField()
  9. salary = models.DecimalField(max_digits=15, decimal_places=2)
  10. start_date = models.DateField()
  11. end_date = models.DateField(null=True, blank=True)
  12. projects = models.ManyToManyField(Project)
  13. def __str__(self):
  14. return self.employee_id
  15. class Perk(models.Model):
  16. employee = models.OneToOneField(Employee, on_delete=models.CASCADE)
  17. perk_per_month = models.DecimalField(max_digits=15, decimal_places=2)
  18. @property
  19. def total_perk(self):
  20. perks = self.perk_transactions.all()
  21. total = 0
  22. for perk in perks:
  23. if perk.type == 'INCOME':
  24. total += perk.amount
  25. else:
  26. total -= perk.amount
  27. return total
  28. class PerkTransaction(models.Model):
  29. TRANSACTION_TYPE = (
  30. ("INCOME", "INCOME"),
  31. ("EXPENSE", "EXPENSE")
  32. )
  33. type = models.CharField(choices=TRANSACTION_TYPE, default="INCOME", max_length=10)
  34. amount = models.DecimalField(max_digits=15, decimal_places=2)
  35. perk = models.ForeignKey(Perk, on_delete=models.CASCADE)