Django backend for WorkX project
Vous ne pouvez pas sélectionner plus de 25 sujets Les noms de sujets doivent commencer par une lettre ou un nombre, peuvent contenir des tirets ('-') et peuvent comporter jusqu'à 35 caractères.
Ce dépôt est archivé. Vous pouvez voir les fichiers et le cloner, mais vous ne pouvez pas pousser ni ouvrir de ticket/demande d'ajout.

44 lignes
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)