XH_Digital_Management/application/cpc_mgnt/models.py

192 lines
9.2 KiB
Python
Raw Normal View History

from django.db import models
from application.hrm_mgnt.models import EmployeeInformation
from application.org_mgnt.models import CompanyEntity
# 用印登记表
class SealUsageRegistry(models.Model):
SEAL_TYPE_CHOICES = [
('公章', '公章'),
('法人章', '法人章'),
('合同章', '合同章'),
('财务章', '财务章'),
('其他', '其他'),
]
record_id = models.AutoField(primary_key=True, verbose_name='记录ID')
2024-06-16 20:17:45 +08:00
applicant = models.CharField(max_length=255, verbose_name='申请人')
seal_date = models.DateField(verbose_name='用印日期', null=True, blank=True)
seal_entity = models.CharField(max_length=255, verbose_name='用印主体', null=True, blank=True)
seal_type = models.CharField(max_length=255, choices=SEAL_TYPE_CHOICES, verbose_name='用印类型', null=True, blank=True)
document_name = models.CharField(max_length=255, verbose_name='文件名称', null=True, blank=True)
number_of_copies = models.IntegerField(verbose_name='用印份数', null=True, blank=True)
handler = models.CharField(max_length=255, verbose_name='经办人', null=True, blank=True)
def save(self, *args, **kwargs):
seal_entity = CompanyEntity.objects.filter(company_name=self.seal_entity).first()
if self.seal_entity:
if not seal_entity:
raise ValueError("用印主体不存在")
applicant = EmployeeInformation.objects.filter(name=self.applicant).first()
if self.applicant:
if not applicant:
raise ValueError("申请人不存在")
handler = EmployeeInformation.objects.filter(name=self.handler).first()
if self.handler:
if not handler:
raise ValueError("经办人不存在")
super(SealUsageRegistry, self).save(*args, **kwargs)
class Meta:
verbose_name = '用印登记表'
verbose_name_plural = '用印登记表'
def __str__(self):
2024-06-16 20:17:45 +08:00
return f"{self.document_name} - {self.applicant} - {self.seal_date}"
# 印章证件借用登记表
class SealAndDocumentBorrowingRegistry(models.Model):
ITEM_TYPE_CHOICES = [
('公章', '公章'),
('法人章', '法人章'),
('财务章', '财务章'),
('合同章', '合同章'),
('执照正本', '执照正本'),
('执照副本', '执照副本'),
('开户许可证', '开户许可证'),
('法人身份证', '法人身份证'),
]
record_id = models.AutoField(primary_key=True, verbose_name='记录ID')
2024-06-16 20:17:45 +08:00
entity_name = models.CharField(max_length=255, verbose_name='主体名称')
item_type = models.CharField(max_length=255, choices=ITEM_TYPE_CHOICES, verbose_name='借章/证类型', null=True, blank=True)
purpose = models.CharField(max_length=255, verbose_name='用途', null=True, blank=True)
borrower = models.CharField(max_length=255, verbose_name='借用人', null=True, blank=True)
borrowing_time = models.DateTimeField(verbose_name='借用时间', null=True, blank=True)
expected_return_date = models.DateField(verbose_name='约定归还日期', null=True, blank=True)
lender = models.CharField(max_length=255, verbose_name='借出人', null=True, blank=True)
returnee = models.CharField(max_length=255, verbose_name='归还人', null=True, blank=True)
return_date = models.DateField(verbose_name='归还日期', null=True, blank=True)
verifier = models.CharField(max_length=255, verbose_name='确认人', null=True, blank=True)
def save(self, *args, **kwargs):
entity_name = CompanyEntity.objects.filter(company_name=self.entity_name).first()
if self.entity_name:
if not entity_name:
raise ValueError("主体名称不存在")
borrower = EmployeeInformation.objects.filter(name=self.borrower).first()
if self.borrower:
if not borrower:
raise ValueError("借用人不存在")
lender = EmployeeInformation.objects.filter(name=self.lender).first()
if self.lender:
if not lender:
raise ValueError("借出人不存在")
returnee = EmployeeInformation.objects.filter(name=self.returnee).first()
if self.returnee:
if not returnee:
raise ValueError("归还人不存在")
super(SealAndDocumentBorrowingRegistry, self).save(*args, **kwargs)
class Meta:
verbose_name = '印章证件借用登记表'
verbose_name_plural = '印章证件借用登记表'
def __str__(self):
2024-06-16 20:17:45 +08:00
return f"{self.entity_name} - {self.borrower}"
# 合同管理台账
class ContractManagementLedger(models.Model):
CONTRACT_TYPE_CHOICES = [
('业务类', '业务类'),
('采购类', '采购类'),
('用工类', '用工类'),
('租赁类', '租赁类'),
('其他类', '其他类'),
]
contract_type = models.CharField(max_length=20, choices=CONTRACT_TYPE_CHOICES, verbose_name='合同类别', null=True, blank=True)
project_name = models.CharField(max_length=255, verbose_name='项目名称', null=True, blank=True)
contract_number = models.CharField(max_length=255, unique=True, verbose_name='合同编号', null=True, blank=True)
contract_name = models.CharField(max_length=255, verbose_name='合同名称', null=True, blank=True)
primary_department = models.CharField(max_length=255, verbose_name='一级部门', null=True, blank=True)
project_leader = models.CharField(max_length=255, verbose_name='项目负责人', null=True, blank=True)
project_progress = models.CharField(max_length=255, verbose_name='项目进度', null=True, blank=True)
CONTRACT_STATUS_CHOICES = [
('已生效未履行', '已生效未履行'),
('履行中', '履行中'),
('履行中止', '履行中止'),
('协商变更', '协商变更'),
('期满终止', '期满终止'),
('协商解除', '协商解除'),
('未生效', '未生效'),
]
contract_status = models.CharField(max_length=20, choices=CONTRACT_STATUS_CHOICES, verbose_name='合同状态', null=True, blank=True)
business_type = models.CharField(max_length=255, verbose_name='业务类型', null=True, blank=True)
number_of_copies = models.IntegerField(verbose_name='合同份数', null=True, blank=True)
cost_agreement = models.CharField(max_length=255, verbose_name='费用约定', null=True, blank=True)
review_date = models.DateField(verbose_name='审核日期', null=True, blank=True)
signing_date = models.DateField(verbose_name='签约日期', null=True, blank=True)
effective_date = models.DateField(verbose_name='生效日期', null=True, blank=True)
expiration_date = models.DateField(verbose_name='约定到期日', null=True, blank=True)
our_side = models.CharField(max_length=255, verbose_name='我方单位', null=True, blank=True)
other_side = models.CharField(max_length=255, verbose_name='对方单位', null=True, blank=True)
submitter_for_review = models.CharField(max_length=255, verbose_name='提交审核人', null=True, blank=True)
custodian_of_original = models.CharField(max_length=255, verbose_name='合同原件保管人', null=True, blank=True)
payment_agreement_needed = models.BooleanField(verbose_name='是否需要付款协议', null=True, blank=True)
signed = models.BooleanField(verbose_name='签章否', null=True, blank=True)
backup_location = models.CharField(max_length=255, verbose_name='备份地点', null=True, blank=True)
notes = models.TextField(verbose_name='备注', null=True, blank=True)
class Meta:
verbose_name = '合同管理台账'
verbose_name_plural = '合同管理台账'
def __str__(self):
return self.contract_name
# 公司制度表
class CompanyPolicies(models.Model):
policy_id = models.AutoField(primary_key=True, verbose_name='制度ID')
issuing_unit = models.CharField(max_length=255, verbose_name='发布单位', null=True, blank=True)
POLICY_CATEGORY_CHOICES = [
('公司治理', '公司治理'),
('人力资源', '人力资源'),
('财务', '财务'),
('风控合规', '风控合规'),
('业务类', '业务类'),
('行政管理类', '行政管理类'),
('信息管理类', '信息管理类')
]
policy_category = models.CharField(max_length=20, choices=POLICY_CATEGORY_CHOICES, verbose_name='制度类别', null=True, blank=True)
policy_name = models.CharField(max_length=255, verbose_name='制度名称', null=True, blank=True)
version = models.CharField(max_length=255, verbose_name='版本', null=True, blank=True)
publication_date = models.DateField(verbose_name='发布日期', null=True, blank=True)
effective_date = models.DateField(verbose_name='生效日期', null=True, blank=True)
STATUS_CHOICES = [
('有效', '有效'),
('待生效', '待生效'),
('废止', '废止'),
]
status = models.CharField(max_length=20, choices=STATUS_CHOICES, verbose_name='状态', null=True, blank=True)
policy_file = models.FileField(upload_to='policies/', verbose_name='制度文件', null=True, blank=True)
class Meta:
verbose_name = '公司制度表'
verbose_name_plural = '公司制度表'
def __str__(self):
return self.policy_name