191 lines
9.1 KiB
Python
191 lines
9.1 KiB
Python
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')
|
|
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):
|
|
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')
|
|
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):
|
|
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)
|
|
|
|
class Meta:
|
|
verbose_name = '公司制度表'
|
|
verbose_name_plural = '公司制度表'
|
|
|
|
def __str__(self):
|
|
return self.policy_name
|