| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212 |
- from datetime import datetime, date
- from decimal import Decimal
- from typing import Optional
- from sqlalchemy import BigInteger, String, DateTime, Integer, Text, Numeric, SmallInteger, Date
- from sqlalchemy.orm import Mapped, mapped_column
- from app.database import Base
- class CrmContract(Base):
- __tablename__ = "crm_contract"
- id: Mapped[int] = mapped_column(BigInteger, primary_key=True, autoincrement=False, comment="主键ID")
- contract_no: Mapped[Optional[str]] = mapped_column(String(50), comment="合同编号")
- contract_name: Mapped[Optional[str]] = mapped_column(String(200), comment="合同名称")
- customer_id: Mapped[Optional[int]] = mapped_column(BigInteger, comment="客户ID")
- customer_name: Mapped[Optional[str]] = mapped_column(String(200), comment="客户名称")
- opportunity_id: Mapped[Optional[int]] = mapped_column(BigInteger, comment="商机ID")
- quote_id: Mapped[Optional[int]] = mapped_column(BigInteger, comment="报价ID")
- parent_contract_id: Mapped[Optional[int]] = mapped_column(BigInteger, comment="父合同ID(续签)")
- renewal_count: Mapped[Optional[int]] = mapped_column(Integer, default=0, comment="续签次数")
- template_id: Mapped[Optional[int]] = mapped_column(BigInteger, comment="合同模板ID")
- contract_template: Mapped[Optional[str]] = mapped_column(String(50), comment="合同模板")
- contact_id: Mapped[Optional[int]] = mapped_column(BigInteger, comment="联系人ID")
- contact_name: Mapped[Optional[str]] = mapped_column(String(50), comment="联系人姓名")
- contact_mobile: Mapped[Optional[str]] = mapped_column(String(20), comment="联系人手机")
- contract_type: Mapped[Optional[str]] = mapped_column(String(20), comment="合同类型")
- contract_nature: Mapped[Optional[str]] = mapped_column(String(20), comment="合同性质")
- amount: Mapped[Optional[Decimal]] = mapped_column(Numeric(15, 2), default=Decimal("0"), comment="合同金额")
- currency: Mapped[Optional[str]] = mapped_column(String(10), default="CNY", comment="币种")
- tax_rate: Mapped[Optional[Decimal]] = mapped_column(Numeric(5, 2), default=Decimal("0"), comment="税率")
- amount_with_tax: Mapped[Optional[Decimal]] = mapped_column(Numeric(15, 2), default=Decimal("0"), comment="含税金额")
- sign_date: Mapped[Optional[date]] = mapped_column(Date, comment="签约日期")
- actual_sign_date: Mapped[Optional[date]] = mapped_column(Date, comment="实际签约日期")
- start_date: Mapped[Optional[date]] = mapped_column(Date, comment="合同开始日期")
- end_date: Mapped[Optional[date]] = mapped_column(Date, comment="合同结束日期")
- contract_period: Mapped[Optional[int]] = mapped_column(Integer, comment="合同期限(天)")
- status: Mapped[Optional[str]] = mapped_column(String(20), default="0", comment="合同状态")
- performance_status: Mapped[Optional[str]] = mapped_column(String(20), default="0", comment="履约状态")
- performance_rate: Mapped[Optional[Decimal]] = mapped_column(Numeric(5, 2), default=Decimal("0"), comment="履约进度")
- customer_satisfaction: Mapped[Optional[int]] = mapped_column(Integer, comment="客户满意度")
- approval_status: Mapped[Optional[str]] = mapped_column(String(20), default="0", comment="审批状态(0草稿 1待审 2通过 3驳回)")
- approval_flow_id: Mapped[Optional[int]] = mapped_column(BigInteger, comment="审批流程ID")
- contract_file: Mapped[Optional[str]] = mapped_column(String(500), comment="合同文件")
- attachment_files: Mapped[Optional[str]] = mapped_column(String(1000), comment="附件")
- owner_user_id: Mapped[Optional[int]] = mapped_column(BigInteger, comment="负责人ID")
- owner_user_name: Mapped[Optional[str]] = mapped_column(String(50), comment="负责人姓名")
- received_amount: Mapped[Optional[Decimal]] = mapped_column(Numeric(15, 2), default=Decimal("0"), comment="已收金额")
- unreceived_amount: Mapped[Optional[Decimal]] = mapped_column(Numeric(15, 2), default=Decimal("0"), comment="未收金额")
- invoice_amount: Mapped[Optional[Decimal]] = mapped_column(Numeric(15, 2), default=Decimal("0"), comment="已开票金额")
- uninvoice_amount: Mapped[Optional[Decimal]] = mapped_column(Numeric(15, 2), default=Decimal("0"), comment="未开票金额")
- party_a: Mapped[Optional[str]] = mapped_column(String(200), comment="甲方")
- party_a_address: Mapped[Optional[str]] = mapped_column(String(255), comment="甲方地址")
- party_a_contact: Mapped[Optional[str]] = mapped_column(String(50), comment="甲方联系人")
- party_a_mobile: Mapped[Optional[str]] = mapped_column(String(20), comment="甲方电话")
- party_a_legal_person: Mapped[Optional[str]] = mapped_column(String(50), comment="甲方法人")
- party_a_agent: Mapped[Optional[str]] = mapped_column(String(50), comment="甲方代理人")
- party_a_phone_fax: Mapped[Optional[str]] = mapped_column(String(50), comment="甲方传真")
- party_a_bank: Mapped[Optional[str]] = mapped_column(String(100), comment="甲方开户行")
- party_a_account: Mapped[Optional[str]] = mapped_column(String(50), comment="甲方账号")
- party_b: Mapped[Optional[str]] = mapped_column(String(200), comment="乙方")
- party_b_address: Mapped[Optional[str]] = mapped_column(String(255), comment="乙方地址")
- party_b_contact: Mapped[Optional[str]] = mapped_column(String(50), comment="乙方联系人")
- party_b_mobile: Mapped[Optional[str]] = mapped_column(String(20), comment="乙方电话")
- party_b_legal_person: Mapped[Optional[str]] = mapped_column(String(100), comment="乙方法人")
- party_b_agent: Mapped[Optional[str]] = mapped_column(String(100), comment="乙方代理人")
- party_b_phone_fax: Mapped[Optional[str]] = mapped_column(String(100), comment="乙方传真")
- party_b_bank: Mapped[Optional[str]] = mapped_column(String(200), comment="乙方开户行")
- party_b_account: Mapped[Optional[str]] = mapped_column(String(100), comment="乙方账号")
- payment_terms: Mapped[Optional[str]] = mapped_column(Text, comment="付款条款")
- delivery_terms: Mapped[Optional[str]] = mapped_column(Text, comment="交付条款")
- contract_terms: Mapped[Optional[str]] = mapped_column(Text, comment="合同条款")
- invalid_reason: Mapped[Optional[str]] = mapped_column(String(500), comment="作废原因")
- invalid_time: Mapped[Optional[datetime]] = mapped_column(DateTime, comment="作废时间")
- tenant_id: Mapped[Optional[str]] = mapped_column(String(20), default="000000", comment="租户编号")
- create_dept: Mapped[Optional[int]] = mapped_column(BigInteger, comment="创建部门")
- create_by: Mapped[Optional[int]] = mapped_column(BigInteger, comment="创建者")
- create_time: Mapped[Optional[datetime]] = mapped_column(DateTime, comment="创建时间")
- update_by: Mapped[Optional[int]] = mapped_column(BigInteger, comment="更新者")
- update_time: Mapped[Optional[datetime]] = mapped_column(DateTime, comment="更新时间")
- del_flag: Mapped[Optional[int]] = mapped_column(SmallInteger, default=0, comment="删除标志(0存在 1删除)")
- version: Mapped[Optional[int]] = mapped_column(Integer, default=0, comment="版本号")
- remark: Mapped[Optional[str]] = mapped_column(String(500), comment="备注")
- template_content: Mapped[Optional[str]] = mapped_column(Text, comment="模板内容")
- settlement_clause_drafts: Mapped[Optional[str]] = mapped_column(Text, comment="结算条款草稿")
- supplier_id: Mapped[Optional[int]] = mapped_column(BigInteger, comment="供应商ID")
- settlement_method: Mapped[Optional[str]] = mapped_column(String(50), comment="结算方式")
- class CrmContractProduct(Base):
- __tablename__ = "crm_contract_product"
- id: Mapped[int] = mapped_column(BigInteger, primary_key=True, autoincrement=False, comment="主键ID")
- contract_id: Mapped[Optional[int]] = mapped_column(BigInteger, comment="合同ID")
- product_id: Mapped[Optional[int]] = mapped_column(BigInteger, comment="产品ID")
- product_name: Mapped[Optional[str]] = mapped_column(String(200), comment="产品名称")
- product_no: Mapped[Optional[str]] = mapped_column(String(50), comment="产品编号")
- category_id: Mapped[Optional[int]] = mapped_column(BigInteger, comment="分类ID")
- category_name: Mapped[Optional[str]] = mapped_column(String(100), comment="分类名称")
- model: Mapped[Optional[str]] = mapped_column(String(100), comment="规格型号")
- unit: Mapped[Optional[str]] = mapped_column(String(20), comment="单位")
- quantity: Mapped[Optional[Decimal]] = mapped_column(Numeric(20, 4), default=Decimal("0"), comment="数量")
- price: Mapped[Optional[Decimal]] = mapped_column(Numeric(15, 2), default=Decimal("0"), comment="单价")
- discount: Mapped[Optional[Decimal]] = mapped_column(Numeric(5, 2), default=Decimal("100"), comment="折扣")
- tax_rate: Mapped[Optional[Decimal]] = mapped_column(Numeric(5, 2), default=Decimal("0"), comment="税率")
- tax_amount: Mapped[Optional[Decimal]] = mapped_column(Numeric(15, 2), default=Decimal("0"), comment="税额")
- subtotal: Mapped[Optional[Decimal]] = mapped_column(Numeric(15, 2), default=Decimal("0"), comment="小计")
- delivery_date: Mapped[Optional[date]] = mapped_column(Date, comment="交付日期")
- delivery_status: Mapped[Optional[str]] = mapped_column(String(20), default="0", comment="交付状态")
- delivered_quantity: Mapped[Optional[Decimal]] = mapped_column(Numeric(20, 4), default=Decimal("0"), comment="已交付数量")
- description: Mapped[Optional[str]] = mapped_column(String(1000), comment="描述")
- package_spec: Mapped[Optional[str]] = mapped_column(String(200), comment="包装规格")
- delivery_method: Mapped[Optional[str]] = mapped_column(String(100), comment="交付方式")
- sort: Mapped[Optional[int]] = mapped_column(Integer, default=0, comment="排序")
- tenant_id: Mapped[Optional[str]] = mapped_column(String(20), default="000000", comment="租户编号")
- create_dept: Mapped[Optional[int]] = mapped_column(BigInteger, comment="创建部门")
- create_by: Mapped[Optional[int]] = mapped_column(BigInteger, comment="创建者")
- create_time: Mapped[Optional[datetime]] = mapped_column(DateTime, comment="创建时间")
- update_by: Mapped[Optional[int]] = mapped_column(BigInteger, comment="更新者")
- update_time: Mapped[Optional[datetime]] = mapped_column(DateTime, comment="更新时间")
- del_flag: Mapped[Optional[int]] = mapped_column(SmallInteger, default=0, comment="删除标志")
- version: Mapped[Optional[int]] = mapped_column(Integer, default=0, comment="版本号")
- remark: Mapped[Optional[str]] = mapped_column(String(500), comment="备注")
- class CrmContractApproval(Base):
- __tablename__ = "crm_contract_approval"
- id: Mapped[int] = mapped_column(BigInteger, primary_key=True, autoincrement=False, comment="主键ID")
- contract_id: Mapped[Optional[int]] = mapped_column(BigInteger, comment="合同ID")
- flow_id: Mapped[Optional[int]] = mapped_column(BigInteger, comment="审批流程ID")
- step: Mapped[Optional[int]] = mapped_column(Integer, comment="审批步骤")
- step_name: Mapped[Optional[str]] = mapped_column(String(100), comment="步骤名称")
- approver_id: Mapped[Optional[int]] = mapped_column(BigInteger, comment="审批人ID")
- approver_name: Mapped[Optional[str]] = mapped_column(String(50), comment="审批人姓名")
- approver_dept: Mapped[Optional[str]] = mapped_column(String(100), comment="审批人部门")
- approval_result: Mapped[Optional[str]] = mapped_column(String(20), comment="审批结果")
- approval_opinion: Mapped[Optional[str]] = mapped_column(Text, comment="审批意见")
- approval_time: Mapped[Optional[datetime]] = mapped_column(DateTime, comment="审批时间")
- approval_duration: Mapped[Optional[int]] = mapped_column(Integer, comment="审批耗时(分钟)")
- attachments: Mapped[Optional[str]] = mapped_column(String(1000), comment="附件")
- is_current: Mapped[Optional[int]] = mapped_column(SmallInteger, default=0, comment="是否当前步骤")
- sort: Mapped[Optional[int]] = mapped_column(Integer, default=0, comment="排序")
- tenant_id: Mapped[Optional[str]] = mapped_column(String(20), default="000000", comment="租户编号")
- create_dept: Mapped[Optional[int]] = mapped_column(BigInteger, comment="创建部门")
- create_by: Mapped[Optional[int]] = mapped_column(BigInteger, comment="创建者")
- create_time: Mapped[Optional[datetime]] = mapped_column(DateTime, comment="创建时间")
- update_by: Mapped[Optional[int]] = mapped_column(BigInteger, comment="更新者")
- update_time: Mapped[Optional[datetime]] = mapped_column(DateTime, comment="更新时间")
- del_flag: Mapped[Optional[int]] = mapped_column(SmallInteger, default=0, comment="删除标志")
- version: Mapped[Optional[int]] = mapped_column(Integer, default=0, comment="版本号")
- remark: Mapped[Optional[str]] = mapped_column(String(500), comment="备注")
- class CrmContractChange(Base):
- __tablename__ = "crm_contract_change"
- id: Mapped[int] = mapped_column(BigInteger, primary_key=True, autoincrement=False, comment="主键ID")
- contract_id: Mapped[Optional[int]] = mapped_column(BigInteger, comment="合同ID")
- contract_no: Mapped[Optional[str]] = mapped_column(String(50), comment="合同编号")
- change_type: Mapped[Optional[str]] = mapped_column(String(50), comment="变更类型")
- change_reason: Mapped[Optional[str]] = mapped_column(String(500), comment="变更原因")
- change_content: Mapped[Optional[str]] = mapped_column(Text, comment="变更内容")
- old_value: Mapped[Optional[str]] = mapped_column(Text, comment="原值")
- new_value: Mapped[Optional[str]] = mapped_column(Text, comment="新值")
- change_amount: Mapped[Optional[Decimal]] = mapped_column(Numeric(15, 2), default=Decimal("0"), comment="变更金额")
- approval_status: Mapped[Optional[str]] = mapped_column(String(20), default="0", comment="审批状态")
- approver_id: Mapped[Optional[int]] = mapped_column(BigInteger, comment="审批人ID")
- approver_name: Mapped[Optional[str]] = mapped_column(String(50), comment="审批人姓名")
- approval_time: Mapped[Optional[datetime]] = mapped_column(DateTime, comment="审批时间")
- approval_opinion: Mapped[Optional[str]] = mapped_column(String(500), comment="审批意见")
- attachment_files: Mapped[Optional[str]] = mapped_column(String(1000), comment="附件")
- tenant_id: Mapped[Optional[str]] = mapped_column(String(20), default="000000", comment="租户编号")
- create_dept: Mapped[Optional[int]] = mapped_column(BigInteger, comment="创建部门")
- create_by: Mapped[Optional[int]] = mapped_column(BigInteger, comment="创建者")
- create_time: Mapped[Optional[datetime]] = mapped_column(DateTime, comment="创建时间")
- update_by: Mapped[Optional[int]] = mapped_column(BigInteger, comment="更新者")
- update_time: Mapped[Optional[datetime]] = mapped_column(DateTime, comment="更新时间")
- del_flag: Mapped[Optional[int]] = mapped_column(SmallInteger, default=0, comment="删除标志")
- remark: Mapped[Optional[str]] = mapped_column(String(500), comment="备注")
- class CrmContractTemplate(Base):
- __tablename__ = "crm_contract_template"
- id: Mapped[int] = mapped_column(BigInteger, primary_key=True, autoincrement=False, comment="主键ID")
- template_no: Mapped[Optional[str]] = mapped_column(String(50), comment="模板编号")
- template_name: Mapped[Optional[str]] = mapped_column(String(200), comment="模板名称")
- contract_type: Mapped[Optional[str]] = mapped_column(String(20), comment="合同类型")
- template_content: Mapped[Optional[str]] = mapped_column(Text, comment="模板内容")
- payment_terms: Mapped[Optional[str]] = mapped_column(Text, comment="付款条款")
- delivery_terms: Mapped[Optional[str]] = mapped_column(Text, comment="交付条款")
- contract_terms: Mapped[Optional[str]] = mapped_column(Text, comment="合同条款")
- party_b: Mapped[Optional[str]] = mapped_column(String(200), comment="乙方")
- party_b_address: Mapped[Optional[str]] = mapped_column(String(255), comment="乙方地址")
- party_b_contact: Mapped[Optional[str]] = mapped_column(String(50), comment="乙方联系人")
- party_b_mobile: Mapped[Optional[str]] = mapped_column(String(20), comment="乙方电话")
- default_currency: Mapped[Optional[str]] = mapped_column(String(10), default="CNY", comment="默认币种")
- default_tax_rate: Mapped[Optional[Decimal]] = mapped_column(Numeric(5, 2), default=Decimal("0"), comment="默认税率")
- default_period: Mapped[Optional[int]] = mapped_column(Integer, comment="默认期限(天)")
- is_active: Mapped[Optional[int]] = mapped_column(SmallInteger, default=1, comment="是否启用(1是 0否)")
- usage_count: Mapped[Optional[int]] = mapped_column(Integer, default=0, comment="使用次数")
- sort: Mapped[Optional[int]] = mapped_column(Integer, default=0, comment="排序")
- tenant_id: Mapped[Optional[str]] = mapped_column(String(20), default="000000", comment="租户编号")
- create_dept: Mapped[Optional[int]] = mapped_column(BigInteger, comment="创建部门")
- create_by: Mapped[Optional[int]] = mapped_column(BigInteger, comment="创建者")
- create_time: Mapped[Optional[datetime]] = mapped_column(DateTime, comment="创建时间")
- update_by: Mapped[Optional[int]] = mapped_column(BigInteger, comment="更新者")
- update_time: Mapped[Optional[datetime]] = mapped_column(DateTime, comment="更新时间")
- del_flag: Mapped[Optional[int]] = mapped_column(SmallInteger, default=0, comment="删除标志")
- remark: Mapped[Optional[str]] = mapped_column(String(500), comment="备注")
|