XH_Digital_Management/application/mkt_mgnt/models.py

113 lines
5.1 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='姓名', null=True, blank=True)
unit = models.CharField(max_length=255, verbose_name='单位', null=True, blank=True)
position = models.CharField(max_length=255, verbose_name='职务', null=True, blank=True)
contact_phone = models.CharField(max_length=20, verbose_name='联系电话', null=True, blank=True)
contact_address = models.CharField(max_length=255, verbose_name='联系地址', null=True, blank=True)
resource_manager = models.ForeignKey(EmployeeInformation, on_delete=models.CASCADE, verbose_name='资源维护人', null=True, blank=True)
is_enter = models.CharField(max_length=2, choices=COOPERATION_CHOICES, verbose_name='是否录入项目信息', default='', null=True, blank=True)
project_name = models.ForeignKey(ProjectLedger, on_delete=models.CASCADE, verbose_name='项目名称', null=True, blank=True)
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='送礼日期', null=True, blank=True)
giver = models.ForeignKey(EmployeeInformation, on_delete=models.CASCADE, verbose_name='送礼人', null=True, blank=True)
gift_description = models.TextField(verbose_name='送礼说明', null=True, blank=True)
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='已落地收入(元)', null=True, blank=True)
estimated_pending_income = models.DecimalField(max_digits=10, decimal_places=2, verbose_name='未落地预估收入(元)', null=True, blank=True)
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')
name = models.CharField(max_length=255, verbose_name='姓名', null=True, blank=True)
unit = models.CharField(max_length=255, verbose_name='单位', null=True, blank=True)
relationship_type = models.CharField(max_length=20, choices=RELATIONSHIP_CHOICES, verbose_name='关系类型', null=True, blank=True)
detailed_description = models.CharField(max_length=255, verbose_name='详细说明', null=True, blank=True)
position = models.CharField(max_length=255, verbose_name='职务', null=True, blank=True)
residence = models.CharField(max_length=255, verbose_name='常住地', null=True, blank=True)
cooperation = models.CharField(max_length=2, choices=COOPERATION_CHOICES, verbose_name='是否合作', null=True, blank=True)
project = models.CharField(max_length=255, verbose_name='合作项目', null=True, blank=True)
main_organizer = models.CharField(max_length=255, verbose_name='主办人', null=True, blank=True)
assistant = models.CharField(max_length=255, verbose_name='辅助人', null=True, blank=True)
def save(self, *args, **kwargs):
main_organizer = EmployeeInformation.objects.filter(name=self.main_organizer).first()
assistant = EmployeeInformation.objects.filter(name=self.assistant).first()
if self.main_organizer:
if not main_organizer:
raise ValueError("主办人不存在")
if self.assistant:
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 = '客户合作项目表'