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='公司类型') company_name = models.CharField(max_length=255, verbose_name='公司名称') registration_address = models.CharField(max_length=255, verbose_name='注册地址') registered_capital = models.DecimalField(max_digits=20, decimal_places=2, verbose_name='注册资本金(元)') capital_paid_time = models.DateField(verbose_name='实缴时间') capital_paid = models.DecimalField(max_digits=20, decimal_places=2, verbose_name='实缴资金(元)') 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='纳税人识别号') business_status = models.CharField(max_length=255, choices=BUSINESS_STATUS_CHOICES, verbose_name='公司经营状态') scope_of_business = models.TextField(verbose_name='营业范围') purpose_of_company = models.CharField(max_length=255, verbose_name='公司用途') 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='财务负责人') 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 f"{self.company_name} - {self.entity_id}" 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='公司主体', default=1) 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_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='账户类型') class Meta: verbose_name = '公司银行账户' verbose_name_plural = '公司银行账户表' def __str__(self): return f"{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 f"{self.secondary_department_name} ({self.primary_department})"