XH_Digital_Management/application/mkt_mgnt/models.py

111 lines
4.5 KiB
Python

from django.db import models
from application.hrm_mgnt.models import EmployeeInformation
from application.pjt_mgnt.models import ProjectLedger
# 项目资源表
class ProjectResources(models.Model):
COOPERATION_CHOICES = (
('', ''),
('', ''),
)
resource_id = models.AutoField(primary_key=True, verbose_name='项目资源ID')
name = models.CharField(max_length=255, verbose_name='姓名')
unit = models.CharField(max_length=255, verbose_name='单位')
position = models.CharField(max_length=255, verbose_name='职务')
contact_phone = models.CharField(max_length=20, verbose_name='联系电话')
contact_address = models.CharField(max_length=255, verbose_name='联系地址')
resource_manager = models.ForeignKey(EmployeeInformation, on_delete=models.CASCADE, verbose_name='资源维护人')
is_enter = models.CharField(max_length=2, choices=COOPERATION_CHOICES, verbose_name='是否录入项目信息', default='')
project_name = models.ForeignKey(ProjectLedger, on_delete=models.CASCADE, verbose_name='项目名称')
class Meta:
verbose_name = '项目资源表'
verbose_name_plural = '项目资源表'
def __str__(self):
return self.name
# 项目资源送礼表
class ProjectResourceGift(models.Model):
resource = models.ForeignKey(ProjectResources, on_delete=models.CASCADE, verbose_name='项目资源')
gift_date = models.DateField(verbose_name='送礼日期')
giver = models.ForeignKey(EmployeeInformation, on_delete=models.CASCADE, verbose_name='送礼人')
gift_description = models.TextField(verbose_name='送礼说明')
class Meta:
verbose_name = '项目资源送礼表'
verbose_name_plural = '项目资源送礼表'
def __str__(self):
return f"{self.resource.name} - {self.gift_date}"
# 项目资源维护表
class ProjectResourceMaintenance(models.Model):
resource = models.ForeignKey(ProjectResources, on_delete=models.CASCADE, verbose_name='项目资源')
project = models.ForeignKey(ProjectLedger, on_delete=models.CASCADE, verbose_name='项目ID')
settled_income = models.DecimalField(max_digits=10, decimal_places=2, verbose_name='已落地收入(元)')
estimated_pending_income = models.DecimalField(max_digits=10, decimal_places=2, verbose_name='未落地预估收入(元)')
class Meta:
verbose_name = '项目资源维护表'
verbose_name_plural = '项目资源维护表'
def __str__(self):
return f"项目资源维护记录 ID: {self.pk}"
# 客户表
class Customer(models.Model):
RELATIONSHIP_CHOICES = (
('资源方', '资源方'),
('客户', '客户'),
)
COOPERATION_CHOICES = (
('', ''),
('', ''),
)
customer_id = models.AutoField(primary_key=True, verbose_name='客户ID')
relationship_type = models.CharField(max_length=20, choices=RELATIONSHIP_CHOICES, verbose_name='关系类型')
detailed_description = models.CharField(max_length=255, verbose_name='详细说明')
name = models.CharField(max_length=255, verbose_name='姓名')
unit = models.CharField(max_length=255, verbose_name='单位')
position = models.CharField(max_length=255, verbose_name='职务')
residence = models.CharField(max_length=255, verbose_name='常住地')
cooperation = models.CharField(max_length=2, choices=COOPERATION_CHOICES, verbose_name='是否合作')
project = models.CharField(max_length=255, verbose_name='项目名称')
main_organizer = models.CharField(max_length=255, verbose_name='主办人')
assistant = models.CharField(max_length=255, verbose_name='辅助人')
def save(self, *args, **kwargs):
main_organizer = EmployeeInformation.objects.filter(name=self.main_organizer).first()
assistant = EmployeeInformation.objects.filter(name=self.assistant).first()
if not main_organizer:
raise ValueError("主办人不存在")
if not assistant:
raise ValueError("辅助人不存在")
super(Customer, self).save(*args, **kwargs)
class Meta:
verbose_name = '客户表'
verbose_name_plural = '客户表'
def __str__(self):
return self.name
# 客户合作项目表
class CustomerProject(models.Model):
customer = models.ForeignKey(Customer, on_delete=models.CASCADE, verbose_name='客户ID')
project = models.ForeignKey(ProjectLedger, on_delete=models.CASCADE, verbose_name='项目ID')
class Meta:
verbose_name = '客户合作项目表'
verbose_name_plural = '客户合作项目表'