WideRating2024/company_data/models.py

147 lines
10 KiB
Python

import shortuuid
from django.db import models
# 企业调研信息
class CompanyResearchInfo(models.Model):
# 选项
SHAREHOLDER_NATURE_CHOICES = [('个人', '个人'), ('私企', '私企'), ('国企', '国企'), ('政府', '政府'), ]
YES_OR_NO_CHOICES = [('', ''), ('', '')]
OPERATING_SITE_OWNERSHIP_CHOICES = [('自有', '自有'), ('租赁', '租赁')]
# 企业ID
company_id = models.CharField(max_length=22, primary_key=True, default=shortuuid.uuid, editable=False, verbose_name='企业ID')
# 工商信息
company_name = models.CharField(max_length=255, verbose_name='企业名称')
legal_entity_name = models.CharField(max_length=255, verbose_name='法人名称')
shareholder_nature = models.CharField(max_length=255, choices=SHAREHOLDER_NATURE_CHOICES, verbose_name='股东性质')
main_business = models.TextField(max_length=255, verbose_name='主营业务')
# 股东及董监高
senior_management_experience = models.FloatField(verbose_name='高管平均从业年限')
has_board = models.CharField(max_length=255, choices=YES_OR_NO_CHOICES, verbose_name='是否设置董事会')
board_members_count = models.IntegerField(verbose_name='董事会人数')
has_supervisory_board = models.CharField(max_length=255, choices=YES_OR_NO_CHOICES, verbose_name='是否设置监事会')
supervisory_members_count = models.IntegerField(verbose_name='监事人数')
annual_support_funds = models.FloatField(verbose_name='年度公司股东或关联方给予公司的资金支持金额')
# 人员信息
management_staff_count = models.IntegerField(verbose_name='管理人员人数')
functional_staff_count = models.IntegerField(verbose_name='职能人员人数')
sales_staff_count = models.IntegerField(verbose_name='销售人员人数')
technical_service_staff_count = models.IntegerField(verbose_name='技术服务人员人数')
bachelors_or_above_count = models.IntegerField(verbose_name='本科及以上人员人数')
below_bachelors_count = models.IntegerField(verbose_name='专科及以下人员人数')
year_end_total_employees = models.IntegerField(verbose_name='年末员工总数')
annual_resignation_count = models.IntegerField(verbose_name='年度离职人数')
training_participation_count = models.IntegerField(verbose_name='年度员工培训总次数')
average_weekly_working_days = models.FloatField(verbose_name='员工周均工作天数')
average_daily_working_hours = models.FloatField(verbose_name='员工日均工作时长')
work_related_casualties = models.IntegerField(verbose_name='年度因公伤亡人次')
# 经营情况
sales_amount = models.FloatField(verbose_name='销售产品金额')
returns_amount = models.FloatField(verbose_name='退回产品金额')
privacy_breach_incidents = models.CharField(max_length=8, choices=YES_OR_NO_CHOICES, verbose_name='发生过客户隐私泄露')
total_service_times = models.IntegerField(verbose_name='对外服务总次数')
valid_customer_complaints = models.IntegerField(verbose_name='客户有效投诉次数')
complaints_resolved = models.IntegerField(verbose_name='投诉解决次数')
complaint_response_time = models.FloatField(verbose_name='投诉响应时间')
# 银行账户信息
rmb_account_bank_name = models.CharField(max_length=255, verbose_name='人民币开户银行名称')
rmb_bank_account = models.CharField(max_length=255, verbose_name='人民币开户银行账号')
foreign_currency_bank_name = models.CharField(max_length=255, verbose_name='外币开户银行名称')
foreign_currency_bank_account = models.CharField(max_length=255, verbose_name='外币开户银行账号')
loan_card_number = models.CharField(max_length=255, verbose_name='贷款卡编号')
# 经营场所信息
operating_site_area = models.FloatField(max_length=255, verbose_name='经营场所建筑面积')
operating_site_location = models.CharField(max_length=255, verbose_name='经营场所位置')
operating_site_ownership = models.CharField(max_length=255, choices=OPERATING_SITE_OWNERSHIP_CHOICES, verbose_name='经营场所权属关系')
# 公司制度
has_quality_management_system = models.CharField(max_length=8, choices=YES_OR_NO_CHOICES, verbose_name='拥有质量管理制度')
has_financial_management_system = models.CharField(max_length=8, choices=YES_OR_NO_CHOICES, verbose_name='拥有财务管理制度')
has_contract_management_system = models.CharField(max_length=8, choices=YES_OR_NO_CHOICES, verbose_name='拥有合同管理制度')
has_hr_management_system = models.CharField(max_length=8, choices=YES_OR_NO_CHOICES, verbose_name='拥有人力资源管理制度')
# 补充信息
business_credit_record = models.TextField(max_length=255, verbose_name='工商信用记录')
customs_credit_record = models.TextField(max_length=255, verbose_name='海关信用记录')
bank_credit_record = models.TextField(max_length=255, verbose_name='银行信用记录')
court_credit_record = models.TextField(max_length=255, verbose_name='法院信用记录')
production_safety_information = models.TextField(max_length=255, verbose_name='生产安全信息')
social_responsibility_implementation = models.TextField(max_length=255, verbose_name='社会责任实施')
class Meta:
verbose_name = "企业调研信息"
verbose_name_plural = "企业调研信息"
# 简易财务报表
class SimpleFinancialReport(models.Model):
financial_report_id = models.CharField(max_length=22, primary_key=True, default=shortuuid.uuid, editable=False, verbose_name='财务报表ID')
company = models.ForeignKey(CompanyResearchInfo, on_delete=models.CASCADE, related_name='simple_financial_reports', verbose_name='企业ID')
company_name = models.CharField(max_length=255, verbose_name='企业名称')
report_date = models.DateField(verbose_name="报告期")
currency_funds = models.FloatField(verbose_name="货币资金")
accounts_receivable = models.FloatField(verbose_name="应收账款")
other_receivables = models.FloatField(verbose_name="其他应收款")
prepayments = models.FloatField(verbose_name="预付款项")
inventory = models.FloatField(verbose_name="存货")
total_current_assets = models.FloatField(verbose_name="流动资产合计")
total_non_current_assets = models.FloatField(verbose_name="非流动资产合计")
original_value_fixed_assets = models.FloatField(verbose_name="固定资产原价")
accumulated_depreciation = models.FloatField(verbose_name="累计折旧")
net_value_fixed_assets = models.FloatField(verbose_name="固定资产净额")
total_fixed_assets = models.FloatField(verbose_name="固定资产总计")
total_intangible_and_other_assets = models.FloatField(verbose_name="无形资产及其他资产合计")
total_assets = models.FloatField(verbose_name="资产总计")
short_term_loans = models.FloatField(verbose_name="短期借款")
notes_payable = models.FloatField(verbose_name="应付票据")
accounts_payable = models.FloatField(verbose_name="应付账款")
advance_payments = models.FloatField(verbose_name="预收账款")
interest_payable = models.FloatField(verbose_name="应付利息")
other_payables = models.FloatField(verbose_name="其他应付款")
total_current_liabilities = models.FloatField(verbose_name="流动负债合计")
long_term_loans = models.FloatField(verbose_name="长期借款")
bonds_payable = models.FloatField(verbose_name="应付债券")
total_non_current_liabilities = models.FloatField(verbose_name="非流动负债合计")
total_liabilities = models.FloatField(verbose_name="负债合计")
undistributed_profit = models.FloatField(verbose_name="未分配利润")
total_equity = models.FloatField(verbose_name="所有者权益合计")
operating_income = models.FloatField(verbose_name="营业收入")
operating_costs = models.FloatField(verbose_name="营业成本")
interest_expense = models.FloatField(verbose_name="利息费用")
net_profit = models.FloatField(verbose_name="净利润")
audited = models.CharField(max_length=8, choices=[("", ""), ("", "")], verbose_name="是否审计")
accounting_firm = models.CharField(max_length=100, verbose_name="会计事务所")
class Meta:
verbose_name = "简易财务报表"
verbose_name_plural = "简易财务报表"
class CompanyCreditData(models.Model):
TAX_CREDIT_RATING_CHOICES = [('A', 'A'), ('B', 'B'), ('C', 'C'), ('D', 'D')]
company_credit_data_id = models.CharField(max_length=22, primary_key=True, default=shortuuid.uuid, editable=False, verbose_name='企业信用数据ID')
company = models.OneToOneField(CompanyResearchInfo, on_delete=models.CASCADE, related_name='company_credit_data', verbose_name='企业ID')
company_name = models.CharField(max_length=255, verbose_name='企业名称')
# 企业信用数据
years_in_operation = models.IntegerField(verbose_name="成立年限")
shareholder_changes_last_three_years = models.IntegerField(verbose_name="近三年股东变更次数")
negative_public_opinions_ratio = models.FloatField(verbose_name="企业舆情负面占比", help_text="与企业相关的最近1000条新闻")
litigation_announcements = models.IntegerField(verbose_name="开庭公告", help_text='被告,类型为合同纠纷或劳动争议')
tax_credit_rating = models.CharField(max_length=8, default="", choices=TAX_CREDIT_RATING_CHOICES, verbose_name="纳税信用等级")
double_random_check_result = models.CharField(max_length=100, verbose_name="双随机抽查结果")
abnormal_business_operations = models.IntegerField(verbose_name="经营异常")
tax_notice = models.IntegerField(verbose_name="欠税公告")
admin_penalty_warnings = models.IntegerField(verbose_name="罚款数额", help_text="最近3年累计的行政处罚的罚款数额")
admin_penalty_confiscation = models.IntegerField(verbose_name="没收违法所得", help_text="最近3年行政处罚所没收的违法所得")
judgment_debtor = models.IntegerField(verbose_name="被执行人")
dishonest_judgment_debtor = models.IntegerField(verbose_name="失信被执行人")
tax_violations = models.IntegerField(verbose_name="税收违法")
serious_violations = models.IntegerField(verbose_name="严重违法")
class Meta:
verbose_name = "企业信用数据"
verbose_name_plural = "企业信用数据"