from django.db import models # 公司主体信息登记表 class CompanyEntity(models.Model): BUSINESS_STATUS_CHOICES = ( ('存续', '存续'), ('注销', '注销'), ) entity_id = models.AutoField(primary_key=True, verbose_name='主体ID') company_type = models.CharField(max_length=255, verbose_name='公司类型', null=True, blank=True) company_name = models.CharField(max_length=255, verbose_name='公司名称', null=True, blank=True) registration_address = models.CharField(max_length=255, verbose_name='注册地址', null=True, blank=True) registered_capital = models.DecimalField(max_digits=20, decimal_places=2, verbose_name='注册资本金(元)', null=True, blank=True) capital_paid_time = models.DateField(verbose_name='实缴时间', null=True, blank=True) capital_paid = models.DecimalField(max_digits=20, decimal_places=2, verbose_name='实缴资金(元)', null=True, blank=True) establishment_time = models.DateField(verbose_name='设立时间', null=True, blank=True) operation_period = models.CharField(max_length=255, verbose_name='营业期限', null=True, blank=True) taxpayer_identification_number = models.CharField(max_length=255, verbose_name='纳税人识别号', null=True, blank=True) business_status = models.CharField(max_length=255, choices=BUSINESS_STATUS_CHOICES, verbose_name='公司经营状态', null=True, blank=True) scope_of_business = models.TextField(verbose_name='营业范围', null=True, blank=True) purpose_of_company = models.CharField(max_length=255, verbose_name='公司用途', null=True, blank=True) shareholders_and_stakes = models.TextField(verbose_name='股东姓名及持股比例', null=True, blank=True) legal_person = models.TextField(verbose_name='法人', null=True, blank=True) chairman = models.CharField(max_length=255, verbose_name='董事长', null=True, blank=True) directors = models.CharField(max_length=255, verbose_name='董事', null=True, blank=True) supervisor_chairman = models.CharField(max_length=255, verbose_name='监事长', null=True, blank=True) employee_supervisor = models.CharField(max_length=255, verbose_name='职工监事', null=True, blank=True) supervisors = models.CharField(max_length=255, verbose_name='监事', null=True, blank=True) general_manager = models.CharField(max_length=255, verbose_name='总经理', null=True, blank=True) financial_officer = models.CharField(max_length=255, verbose_name='财务负责人', null=True, blank=True) historical_evolution = models.TextField(verbose_name='历史沿革', blank=True) related_bank_accounts_info = models.TextField(verbose_name='相关银行账户信息', blank=True) class Meta: verbose_name = '公司主体信息' verbose_name_plural = '公司主体信息登记表' def __str__(self): return self.company_name 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() ]) class EntityChangeRecord(models.Model): record_id = models.AutoField(primary_key=True, verbose_name='记录编号') company_entity = models.ForeignKey(CompanyEntity, on_delete=models.CASCADE, related_name='change_records', verbose_name='公司主体') 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: verbose_name = '主体信息变更记录' verbose_name_plural = '主体信息变更记录表' def __str__(self): return f"{self.company_entity.company_name} - {self.change_date} - {self.change_type}" # 公司银行账户表 class CompanyBankAccount(models.Model): ACCOUNT_TYPE_CHOICES = ( ('基本户', '基本户'), ('一般户', '一般户'), ) ACCOUNT_STATUS_CHOICES = ( ('活跃', '活跃'), ('不活跃', '不活跃'), ('已关闭', '已关闭'), ('暂停', '暂停'), ('待处理', '待处理'), ('冻结', '冻结'), ) account_id = models.AutoField(primary_key=True, verbose_name='账户ID') company_entity = models.ForeignKey(CompanyEntity, on_delete=models.CASCADE, related_name='bank_accounts', verbose_name='公司ID', default=1) bank_name = models.CharField(max_length=255, verbose_name='开户行名称') account_number = models.CharField(max_length=255, verbose_name='账号') account_type = models.CharField(max_length=10, choices=ACCOUNT_TYPE_CHOICES, verbose_name='账户类型') account_status = models.CharField(max_length=10, choices=ACCOUNT_STATUS_CHOICES, verbose_name='账户状态', default='active') class Meta: verbose_name = '公司银行账户' verbose_name_plural = '公司银行账户表' def __str__(self): return f"{self.company_entity.company_name} - {self.bank_name} - {self.account_number}" 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 self.secondary_department_name