2024-05-15 09:31:38 +08:00
|
|
|
from django.db import models
|
|
|
|
|
|
|
|
|
2024-05-15 13:59:41 +08:00
|
|
|
# 集团经营目标表
|
2024-05-27 23:39:32 +08:00
|
|
|
class GroupBusinessTarget(models.Model):
|
|
|
|
PROJECT_NATURE_CHOICES = (
|
2024-05-15 10:02:51 +08:00
|
|
|
('新增', '新增'),
|
|
|
|
('存续', '存续'),
|
|
|
|
('新增及存续', '新增及存续'),
|
|
|
|
('老客户新业务', '老客户新业务')
|
2024-05-27 23:39:32 +08:00
|
|
|
)
|
2024-05-15 09:31:38 +08:00
|
|
|
|
2024-05-27 23:39:32 +08:00
|
|
|
target_id = models.AutoField(primary_key=True, verbose_name='记录ID')
|
|
|
|
primary_department = models.CharField(max_length=255, verbose_name='一级部门')
|
|
|
|
year = models.IntegerField(verbose_name='年份')
|
|
|
|
project_nature = models.CharField(max_length=255, choices=PROJECT_NATURE_CHOICES, verbose_name='项目性质')
|
2024-06-06 22:44:07 +08:00
|
|
|
sales = models.DecimalField(max_digits=15, decimal_places=2, verbose_name='销售额(元)')
|
|
|
|
total_revenue_target = models.DecimalField(max_digits=15, decimal_places=2, verbose_name='收入总目标(元)')
|
|
|
|
new_revenue_target = models.DecimalField(max_digits=15, decimal_places=2, verbose_name='新增收入目标(元)')
|
|
|
|
existing_revenue_target = models.DecimalField(max_digits=15, decimal_places=2, verbose_name='存量收入目标(元)')
|
|
|
|
cost_limit = models.DecimalField(max_digits=15, decimal_places=2, verbose_name='成本限额(元)')
|
|
|
|
gross_profit = models.DecimalField(max_digits=15, decimal_places=2, verbose_name='毛利润(元)')
|
|
|
|
expense_limit = models.DecimalField(max_digits=15, decimal_places=2, verbose_name='费用限额(元)')
|
|
|
|
operating_profit = models.DecimalField(max_digits=15, decimal_places=2, verbose_name='营业利润(元)')
|
2024-05-15 09:31:38 +08:00
|
|
|
|
|
|
|
class Meta:
|
2024-05-27 23:39:32 +08:00
|
|
|
verbose_name = '集团经营目标'
|
2024-05-15 09:31:38 +08:00
|
|
|
verbose_name_plural = '集团经营目标表'
|
2024-05-15 13:59:41 +08:00
|
|
|
|
2024-05-27 23:39:32 +08:00
|
|
|
def __str__(self):
|
|
|
|
return f"{self.primary_department} - {self.year}"
|
|
|
|
|
2024-05-15 13:59:41 +08:00
|
|
|
|
2024-05-15 18:41:23 +08:00
|
|
|
# 经营目标修改记录表
|
2024-05-27 23:39:32 +08:00
|
|
|
class TargetAudit(models.Model):
|
|
|
|
audit_id = models.AutoField(primary_key=True, verbose_name='记录ID')
|
|
|
|
target_id = models.ForeignKey(GroupBusinessTarget, on_delete=models.CASCADE, verbose_name='目标ID')
|
2024-05-15 18:41:23 +08:00
|
|
|
modified_field = models.CharField(max_length=255, verbose_name='修改字段')
|
|
|
|
old_value = models.CharField(max_length=255, verbose_name='旧值')
|
|
|
|
new_value = models.CharField(max_length=255, verbose_name='新值')
|
|
|
|
modification_date = models.DateTimeField(auto_now_add=True, verbose_name='修改日期')
|
2024-05-27 23:39:32 +08:00
|
|
|
modified_by = models.CharField(max_length=255, verbose_name='修改人')
|
2024-05-15 13:59:41 +08:00
|
|
|
|
|
|
|
class Meta:
|
2024-05-27 23:39:32 +08:00
|
|
|
verbose_name = '经营目标修改记录'
|
2024-05-15 13:59:41 +08:00
|
|
|
verbose_name_plural = '经营目标修改记录表'
|
|
|
|
|
|
|
|
def __str__(self):
|
2024-05-27 23:39:32 +08:00
|
|
|
return f"{self.target_id} - {self.modified_field} - {self.modification_date}"
|
2024-05-15 18:41:23 +08:00
|
|
|
|
|
|
|
|
2024-05-27 23:39:32 +08:00
|
|
|
# 员工业绩目标
|
2024-05-15 18:41:23 +08:00
|
|
|
class EmployeePerformanceTarget(models.Model):
|
2024-05-27 23:39:32 +08:00
|
|
|
PROJECT_NATURE_CHOICES = (
|
2024-05-15 18:41:23 +08:00
|
|
|
('新增', '新增'),
|
|
|
|
('存续', '存续'),
|
|
|
|
('新增及存续', '新增及存续'),
|
|
|
|
('老客户新业务', '老客户新业务')
|
2024-05-27 23:39:32 +08:00
|
|
|
)
|
|
|
|
|
|
|
|
target_id = models.AutoField(primary_key=True, verbose_name='目标ID')
|
2024-05-15 18:41:23 +08:00
|
|
|
name = models.CharField(max_length=255, verbose_name='姓名')
|
|
|
|
department = models.CharField(max_length=255, verbose_name='一级部门')
|
|
|
|
year = models.IntegerField(verbose_name='年份')
|
2024-05-27 23:39:32 +08:00
|
|
|
project_nature = models.CharField(max_length=255, choices=PROJECT_NATURE_CHOICES, verbose_name='项目性质')
|
2024-05-15 18:41:23 +08:00
|
|
|
sales_target = models.DecimalField(max_digits=15, decimal_places=2, verbose_name='销售额目标(元)')
|
|
|
|
total_revenue_target = models.DecimalField(max_digits=15, decimal_places=2, verbose_name='收入总目标(元)')
|
|
|
|
new_revenue_target = models.DecimalField(max_digits=15, decimal_places=2, verbose_name='新增收入目标(元)')
|
|
|
|
existing_revenue_target = models.DecimalField(max_digits=15, decimal_places=2, verbose_name='存量收入目标(元)')
|
|
|
|
|
|
|
|
class Meta:
|
2024-05-27 23:39:32 +08:00
|
|
|
verbose_name = '员工业绩目标'
|
2024-05-15 18:41:23 +08:00
|
|
|
verbose_name_plural = '员工业绩目标表'
|
|
|
|
|
|
|
|
def __str__(self):
|
2024-05-27 23:39:32 +08:00
|
|
|
return f"{self.name} - {self.department} - {self.year}"
|
2024-05-30 13:39:36 +08:00
|
|
|
|
|
|
|
|
|
|
|
# 员工业绩目标修改记录
|
|
|
|
class EmployeeTargetAudit(models.Model):
|
|
|
|
audit_id = models.AutoField(primary_key=True, verbose_name='记录ID')
|
|
|
|
target_id = models.ForeignKey(EmployeePerformanceTarget, on_delete=models.CASCADE, verbose_name='目标ID')
|
|
|
|
modified_field = models.CharField(max_length=255, verbose_name='修改字段')
|
|
|
|
old_value = models.CharField(max_length=255, verbose_name='旧值')
|
|
|
|
new_value = models.CharField(max_length=255, verbose_name='新值')
|
|
|
|
modification_date = models.DateTimeField(auto_now_add=True, verbose_name='修改日期')
|
|
|
|
modified_by = models.CharField(max_length=255, verbose_name='修改人')
|
|
|
|
|
|
|
|
class Meta:
|
|
|
|
verbose_name = '员工业绩目标修改记录'
|
|
|
|
verbose_name_plural = '员工业绩目标修改记录表'
|
|
|
|
|
|
|
|
def __str__(self):
|
|
|
|
return f"{self.target_id} - {self.modified_field} - {self.modification_date}"
|