XH_Digital_Management/application/perf_mgnt/models.py

73 lines
3.9 KiB
Python
Raw Normal View History

2024-05-15 09:31:38 +08:00
from django.db import models
2024-05-15 13:59:41 +08:00
from django.contrib.auth.models import User # 使用Django内置的用户模型
2024-05-15 09:31:38 +08:00
2024-05-15 13:59:41 +08:00
# 集团经营目标表
2024-05-15 09:31:38 +08:00
class GroupTargets(models.Model):
PROJECT_NATURE_CHOICES = [
2024-05-15 10:02:51 +08:00
('新增', '新增'),
('存续', '存续'),
('新增及存续', '新增及存续'),
('老客户新业务', '老客户新业务')
2024-05-15 09:31:38 +08:00
]
primary_department = models.CharField(max_length=255, blank=False, verbose_name='一级部门')
year = models.IntegerField(blank=False, verbose_name='年份')
project_nature = models.CharField(max_length=50, choices=PROJECT_NATURE_CHOICES, blank=False,
verbose_name='项目性质')
2024-05-15 09:31:38 +08:00
sales = models.DecimalField(max_digits=17, decimal_places=2, blank=False, verbose_name='销售额')
total_revenue_target = models.DecimalField(max_digits=17, decimal_places=2, blank=False, verbose_name='收入总目标')
new_revenue_target = models.DecimalField(max_digits=17, decimal_places=2, blank=False, verbose_name='新增收入目标')
existing_revenue_target = models.DecimalField(max_digits=17, decimal_places=2, blank=False,
verbose_name='存量收入目标')
2024-05-15 09:31:38 +08:00
cost_limit = models.DecimalField(max_digits=17, decimal_places=2, blank=False, verbose_name='成本限额')
gross_profit = models.DecimalField(max_digits=17, decimal_places=2, blank=False, verbose_name='毛利润')
expense_limit = models.DecimalField(max_digits=17, decimal_places=2, blank=False, verbose_name='费用限额')
operating_profit = models.DecimalField(max_digits=17, decimal_places=2, blank=False, verbose_name='营业利润')
class Meta:
verbose_name = '集团经营目标表'
verbose_name_plural = '集团经营目标表'
2024-05-15 13:59:41 +08:00
# 经营目标修改记录表
2024-05-15 13:59:41 +08:00
class GroupTargetsAudit(models.Model):
id = models.AutoField(primary_key=True, verbose_name='记录ID') # 显式定义主键字段
target = models.ForeignKey('GroupTargets', 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.ForeignKey(User, on_delete=models.SET_NULL, null=True, verbose_name='修改人')
2024-05-15 13:59:41 +08:00
class Meta:
verbose_name = '经营目标修改记录表'
verbose_name_plural = '经营目标修改记录表'
def __str__(self):
return f"{self.target} - {self.modified_field}"
class EmployeePerformanceTarget(models.Model):
PROJECT_NATURE_CHOICES = [
('新增', '新增'),
('存续', '存续'),
('新增及存续', '新增及存续'),
('老客户新业务', '老客户新业务')
]
target_id = models.AutoField(primary_key=True)
name = models.CharField(max_length=255, verbose_name='姓名')
department = models.CharField(max_length=255, verbose_name='一级部门')
year = models.IntegerField(verbose_name='年份')
project_nature = models.CharField(max_length=50, choices=PROJECT_NATURE_CHOICES, verbose_name='项目性质')
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:
verbose_name = '员工业绩目标表'
verbose_name_plural = '员工业绩目标表'
def __str__(self):
return self.name