2024-05-15 13:59:41 +08:00
|
|
|
from django.db import models
|
|
|
|
|
|
|
|
|
2024-05-15 18:41:23 +08:00
|
|
|
# 公司主体信息登记表
|
2024-05-27 23:39:32 +08:00
|
|
|
class CompanyEntity(models.Model):
|
|
|
|
BUSINESS_STATUS_CHOICES = (
|
|
|
|
('存续', '存续'),
|
|
|
|
('注销', '注销'),
|
|
|
|
)
|
|
|
|
|
|
|
|
entity_id = models.AutoField(primary_key=True, verbose_name='主体ID')
|
2024-05-15 18:41:23 +08:00
|
|
|
company_type = models.CharField(max_length=255, verbose_name='公司类型')
|
|
|
|
company_name = models.CharField(max_length=255, verbose_name='公司名称')
|
|
|
|
registration_address = models.CharField(max_length=255, verbose_name='注册地址')
|
2024-06-12 16:40:51 +08:00
|
|
|
registered_capital = models.DecimalField(max_digits=20, decimal_places=2, verbose_name='注册资本金(元)')
|
2024-05-15 18:41:23 +08:00
|
|
|
capital_paid_time = models.DateField(verbose_name='实缴时间')
|
2024-06-12 16:40:51 +08:00
|
|
|
capital_paid = models.DecimalField(max_digits=20, decimal_places=2, verbose_name='实缴资金(元)')
|
2024-05-15 18:41:23 +08:00
|
|
|
establishment_time = models.DateField(verbose_name='设立时间')
|
|
|
|
operation_period = models.CharField(max_length=255, verbose_name='营业期限')
|
|
|
|
taxpayer_identification_number = models.CharField(max_length=255, verbose_name='纳税人识别号')
|
2024-05-27 23:39:32 +08:00
|
|
|
business_status = models.CharField(max_length=255, choices=BUSINESS_STATUS_CHOICES, verbose_name='公司经营状态')
|
2024-05-15 18:41:23 +08:00
|
|
|
scope_of_business = models.TextField(verbose_name='营业范围')
|
|
|
|
purpose_of_company = models.CharField(max_length=255, verbose_name='公司用途')
|
2024-05-27 23:39:32 +08:00
|
|
|
shareholders_and_stakes = models.TextField(verbose_name='股东姓名及持股比例')
|
|
|
|
chairman = models.CharField(max_length=255, verbose_name='董事长')
|
|
|
|
directors = models.CharField(max_length=255, verbose_name='董事')
|
|
|
|
supervisor_chairman = models.CharField(max_length=255, verbose_name='监事长')
|
|
|
|
employee_supervisor = models.CharField(max_length=255, verbose_name='职工监事')
|
|
|
|
supervisors = models.CharField(max_length=255, verbose_name='监事')
|
|
|
|
general_manager = models.CharField(max_length=255, verbose_name='总经理')
|
|
|
|
financial_officer = models.CharField(max_length=255, verbose_name='财务负责人')
|
2024-06-04 16:50:30 +08:00
|
|
|
historical_evolution = models.TextField(verbose_name='历史沿革', blank=True)
|
2024-06-12 16:40:51 +08:00
|
|
|
related_bank_accounts_info = models.TextField(verbose_name='相关银行账户信息', blank=True)
|
2024-05-15 18:41:23 +08:00
|
|
|
|
|
|
|
class Meta:
|
2024-06-16 20:08:28 +08:00
|
|
|
verbose_name = '公司主体信息'
|
2024-05-15 18:41:23 +08:00
|
|
|
verbose_name_plural = '公司主体信息登记表'
|
|
|
|
|
|
|
|
def __str__(self):
|
2024-05-27 23:39:32 +08:00
|
|
|
return f"{self.company_name} - {self.entity_id}"
|
2024-05-15 18:41:23 +08:00
|
|
|
|
2024-06-04 16:50:30 +08:00
|
|
|
def get_historical_evolution(self):
|
|
|
|
return "\n".join([
|
|
|
|
f"变更日期: {record.change_date}, 变更类型: {record.change_type}, 变更前内容: {record.content_before_change}, 变更后内容: {record.content_after_change}, 变更原因: {record.change_reason}, 变更执行人: {record.change_executed_by}"
|
|
|
|
for record in self.change_records.all()
|
|
|
|
])
|
|
|
|
|
2024-05-15 18:41:23 +08:00
|
|
|
|
2024-05-27 23:39:32 +08:00
|
|
|
class EntityChangeRecord(models.Model):
|
|
|
|
record_id = models.AutoField(primary_key=True, verbose_name='记录编号')
|
2024-06-04 16:50:30 +08:00
|
|
|
company_entity = models.ForeignKey(CompanyEntity, on_delete=models.CASCADE, related_name='change_records',
|
2024-06-12 16:40:51 +08:00
|
|
|
verbose_name='公司主体', default=1)
|
2024-05-15 18:41:23 +08:00
|
|
|
change_date = models.DateField(verbose_name='变更日期')
|
|
|
|
change_type = models.CharField(max_length=255, verbose_name='变更类型')
|
|
|
|
content_before_change = models.TextField(verbose_name='变更前内容')
|
|
|
|
content_after_change = models.TextField(verbose_name='变更后内容')
|
|
|
|
change_reason = models.TextField(verbose_name='变更原因')
|
|
|
|
change_executed_by = models.CharField(max_length=255, verbose_name='变更执行人')
|
|
|
|
|
|
|
|
class Meta:
|
2024-05-27 23:39:32 +08:00
|
|
|
verbose_name = '主体信息变更记录'
|
2024-05-15 18:41:23 +08:00
|
|
|
verbose_name_plural = '主体信息变更记录表'
|
|
|
|
|
|
|
|
def __str__(self):
|
2024-06-04 16:50:30 +08:00
|
|
|
return f"{self.company_entity.company_name} - {self.change_date} - {self.change_type}"
|
2024-05-15 18:41:23 +08:00
|
|
|
|
|
|
|
|
|
|
|
# 公司银行账户表
|
2024-05-27 23:39:32 +08:00
|
|
|
class CompanyBankAccount(models.Model):
|
|
|
|
ACCOUNT_TYPE_CHOICES = (
|
|
|
|
('基本户', '基本户'),
|
|
|
|
('一般户', '一般户'),
|
|
|
|
)
|
|
|
|
|
|
|
|
account_id = models.AutoField(primary_key=True, verbose_name='账户ID')
|
2024-06-16 14:07:40 +08:00
|
|
|
company_entity = models.ForeignKey(CompanyEntity, on_delete=models.CASCADE, related_name='bank_accounts',
|
|
|
|
verbose_name='公司ID', default=1)
|
2024-05-15 18:41:23 +08:00
|
|
|
bank_name = models.CharField(max_length=255, verbose_name='开户行名称')
|
|
|
|
account_number = models.CharField(max_length=255, verbose_name='账号')
|
2024-05-27 23:39:32 +08:00
|
|
|
account_type = models.CharField(max_length=10, choices=ACCOUNT_TYPE_CHOICES, verbose_name='账户类型')
|
2024-05-15 18:41:23 +08:00
|
|
|
|
|
|
|
class Meta:
|
2024-05-27 23:39:32 +08:00
|
|
|
verbose_name = '公司银行账户'
|
2024-05-15 18:41:23 +08:00
|
|
|
verbose_name_plural = '公司银行账户表'
|
|
|
|
|
|
|
|
def __str__(self):
|
|
|
|
return f"{self.bank_name} - {self.account_number}"
|
2024-06-16 20:08:28 +08:00
|
|
|
|
|
|
|
|
|
|
|
class PrimaryDepartment(models.Model):
|
|
|
|
primary_department_id = models.AutoField(primary_key=True, verbose_name='部门ID')
|
|
|
|
department_name = models.CharField(max_length=255, unique=True, verbose_name='一级部门名称')
|
|
|
|
description = models.TextField(blank=True, null=True, verbose_name='描述')
|
|
|
|
|
|
|
|
class Meta:
|
|
|
|
verbose_name = '一级部门'
|
|
|
|
verbose_name_plural = '一级部门表'
|
|
|
|
|
|
|
|
def __str__(self):
|
|
|
|
return self.department_name
|
|
|
|
|
|
|
|
|
|
|
|
class SecondaryDepartment(models.Model):
|
|
|
|
secondary_department_id = models.AutoField(primary_key=True, verbose_name='二级部门ID')
|
|
|
|
primary_department = models.ForeignKey('PrimaryDepartment', on_delete=models.CASCADE, verbose_name='一级部门名称')
|
|
|
|
secondary_department_name = models.CharField(max_length=255, verbose_name='二级部门名称')
|
|
|
|
description = models.TextField(blank=True, null=True, verbose_name='描述')
|
|
|
|
|
|
|
|
class Meta:
|
|
|
|
verbose_name = '二级部门'
|
|
|
|
verbose_name_plural = '二级部门表'
|
|
|
|
unique_together = ('primary_department', 'secondary_department_name')
|
|
|
|
|
|
|
|
def __str__(self):
|
|
|
|
return f"{self.secondary_department_name} ({self.primary_department})"
|