Django backend for WorkX project
Du kan inte välja fler än 25 ämnen Ämnen måste starta med en bokstav eller siffra, kan innehålla bindestreck ('-') och vara max 35 tecken långa.
Den här utvecklingskatalogen är arkiverad. Du kan se filer och klona katalogen, men inte öppna ärenden eller genomföra push- eller pull-förfrågningar.

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