34 lines
990 B
Python
34 lines
990 B
Python
from django.db import models
|
|
from django.db.models.fields import PositiveIntegerField
|
|
from django_core.models import AbstractBaseModel
|
|
|
|
from core.apps.evaluation.choices.bonus import EvaluationCategory
|
|
|
|
|
|
class BaseValueBonus(AbstractBaseModel):
|
|
base_price = models.DecimalField(max_digits=12, decimal_places=2)
|
|
|
|
def __str__(self):
|
|
return f"Base: {self.base_price}"
|
|
|
|
|
|
class BonusCategory(AbstractBaseModel):
|
|
name = models.CharField(max_length=255)
|
|
category = models.CharField(
|
|
max_length=50,
|
|
choices=EvaluationCategory.choices
|
|
)
|
|
percentage = PositiveIntegerField()
|
|
|
|
def __str__(self):
|
|
return self.name
|
|
|
|
|
|
class EmployeeBonus(AbstractBaseModel):
|
|
user = models.ForeignKey("accounts.User", on_delete=models.CASCADE, related_name="bonuses", )
|
|
bonus_type = models.ForeignKey(BonusCategory, on_delete=models.CASCADE)
|
|
percentage = models.PositiveIntegerField()
|
|
|
|
class Meta:
|
|
unique_together = ("user", "bonus_type")
|