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='财务负责人') class Meta: verbose_name = '公司主体信息' verbose_name_plural = '公司主体信息登记表' def __str__(self): return f"{self.company_name} - {self.entity_id}" # 主体信息变更记录表 class EntityChangeRecord(models.Model): record_id = models.AutoField(primary_key=True, verbose_name='记录编号') company_name = models.CharField(max_length=255, 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_name} - {self.change_date} - {self.change_type}" # 公司银行账户表 class CompanyBankAccount(models.Model): ACCOUNT_TYPE_CHOICES = ( ('基本户', '基本户'), ('一般户', '一般户'), ) account_id = models.AutoField(primary_key=True, verbose_name='账户ID') entity_id = models.ForeignKey(CompanyEntity, on_delete=models.CASCADE, verbose_name='公司ID') 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='一级部门ID') 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})"