| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136 |
- from datetime import datetime, date
- from decimal import Decimal
- from typing import Optional
- from sqlalchemy import BigInteger, String, DateTime, Integer, Text, Date, Numeric, SmallInteger, Boolean
- from sqlalchemy.orm import Mapped, mapped_column
- from app.database import Base
- class CrmQuote(Base):
- __tablename__ = "crm_quote"
- id: Mapped[int] = mapped_column(BigInteger, primary_key=True, autoincrement=False, comment="主键ID")
- quote_no: Mapped[Optional[str]] = mapped_column(String(50), comment="报价单编号")
- quote_title: Mapped[Optional[str]] = mapped_column(String(200), comment="报价单标题")
- quote_type: Mapped[Optional[str]] = mapped_column(String(20), 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")
- 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="联系人手机")
- contact_email: Mapped[Optional[str]] = mapped_column(String(100), comment="联系人邮箱")
- version: Mapped[Optional[str]] = mapped_column(String(20), comment="版本号标签")
- parent_id: Mapped[Optional[int]] = mapped_column(BigInteger, comment="父版本ID")
- is_latest: Mapped[Optional[int]] = mapped_column(Integer, default=1, comment="是否最新版本")
- total_amount: Mapped[Optional[Decimal]] = mapped_column(Numeric(15, 2), default=Decimal("0"), comment="总金额")
- discount_rate: Mapped[Optional[Decimal]] = mapped_column(Numeric(5, 2), default=Decimal("0"), comment="折扣率")
- discount_amount: Mapped[Optional[Decimal]] = mapped_column(Numeric(15, 2), default=Decimal("0"), comment="折扣金额")
- final_amount: Mapped[Optional[Decimal]] = mapped_column(Numeric(15, 2), default=Decimal("0"), comment="最终金额")
- validity_days: Mapped[Optional[int]] = mapped_column(Integer, comment="报价有效天数")
- quote_date: Mapped[Optional[date]] = mapped_column(Date, comment="报价日期")
- expire_date: Mapped[Optional[date]] = mapped_column(Date, comment="过期日期")
- status: Mapped[Optional[str]] = mapped_column(String(20), default="0", comment="状态(0草稿 1审批中 2已通过 3已拒绝 4已撤回)")
- reject_reason: Mapped[Optional[str]] = mapped_column(String(500), comment="拒绝原因")
- pdf_url: Mapped[Optional[str]] = mapped_column(String(500), comment="PDF地址")
- pdf_generated: Mapped[Optional[int]] = mapped_column(Integer, default=0, comment="是否已生成PDF")
- share_link: Mapped[Optional[str]] = mapped_column(String(500), comment="分享链接")
- share_code: Mapped[Optional[str]] = mapped_column(String(50), comment="分享码")
- share_password: Mapped[Optional[str]] = mapped_column(String(100), comment="分享密码")
- share_expire_time: Mapped[Optional[datetime]] = mapped_column(DateTime, comment="分享过期时间")
- view_count: Mapped[Optional[int]] = mapped_column(Integer, default=0, comment="浏览次数")
- last_view_time: Mapped[Optional[datetime]] = mapped_column(DateTime, comment="最后浏览时间")
- owner_user_id: Mapped[Optional[int]] = mapped_column(BigInteger, comment="负责人ID")
- owner_user_name: Mapped[Optional[str]] = mapped_column(String(50), comment="负责人姓名")
- supplier_id: Mapped[Optional[int]] = mapped_column(BigInteger, comment="供应商ID")
- supplier_name: Mapped[Optional[str]] = mapped_column(String(200), comment="供应商名称")
- contract_id: Mapped[Optional[int]] = mapped_column(BigInteger, comment="关联合同ID")
- payment_terms: Mapped[Optional[str]] = mapped_column(String(500), comment="付款条件")
- delivery_terms: Mapped[Optional[str]] = mapped_column(String(500), comment="交货条件")
- freight: Mapped[Optional[Decimal]] = mapped_column(Numeric(18, 2), default=Decimal("0"), comment="运费")
- attachments: Mapped[Optional[str]] = mapped_column(String(1000), comment="附件")
- template_content: Mapped[Optional[str]] = mapped_column(Text, 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_no: Mapped[Optional[int]] = mapped_column(Integer, default=1, comment="版本序号")
- remark: Mapped[Optional[str]] = mapped_column(String(500), comment="备注")
- class CrmQuoteProduct(Base):
- __tablename__ = "crm_quote_product"
- id: Mapped[int] = mapped_column(BigInteger, primary_key=True, autoincrement=False, comment="主键ID")
- quote_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("0"), comment="折扣")
- subtotal: Mapped[Optional[Decimal]] = mapped_column(Numeric(15, 2), default=Decimal("0"), comment="小计")
- tax_amount: Mapped[Optional[Decimal]] = mapped_column(Numeric(15, 2), default=Decimal("0"), comment="税额")
- tax_rate: Mapped[Optional[Decimal]] = mapped_column(Numeric(5, 2), default=Decimal("0"), comment="税率")
- package_spec: Mapped[Optional[str]] = mapped_column(String(200), comment="包装规格")
- delivery_method: Mapped[Optional[str]] = mapped_column(String(200), comment="交货方式")
- description: Mapped[Optional[str]] = mapped_column(String(1000), 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="删除标志(0存在 1删除)")
- version: Mapped[Optional[int]] = mapped_column(Integer, default=0, comment="版本号")
- remark: Mapped[Optional[str]] = mapped_column(String(500), comment="备注")
- class CrmQuoteApproval(Base):
- __tablename__ = "crm_quote_approval"
- id: Mapped[int] = mapped_column(BigInteger, primary_key=True, autoincrement=False, comment="主键ID")
- quote_id: Mapped[Optional[int]] = mapped_column(BigInteger, comment="报价单ID")
- quote_no: Mapped[Optional[str]] = mapped_column(String(50), comment="报价单编号")
- step: Mapped[Optional[int]] = mapped_column(Integer, comment="审批步骤")
- approver_id: Mapped[Optional[int]] = mapped_column(BigInteger, comment="审批人ID")
- approver_name: Mapped[Optional[str]] = mapped_column(String(50), comment="审批人姓名")
- approval_result: Mapped[Optional[str]] = mapped_column(String(20), comment="审批结果(pass/reject)")
- approval_opinion: Mapped[Optional[str]] = mapped_column(Text, comment="审批意见")
- approval_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="备注")
- class CrmQuoteShareLog(Base):
- __tablename__ = "crm_quote_share_log"
- id: Mapped[int] = mapped_column(BigInteger, primary_key=True, autoincrement=False, comment="主键ID")
- quote_id: Mapped[Optional[int]] = mapped_column(BigInteger, comment="报价单ID")
- share_code: Mapped[Optional[str]] = mapped_column(String(50), comment="分享码")
- visit_time: Mapped[Optional[datetime]] = mapped_column(DateTime, comment="访问时间")
- ip_address: Mapped[Optional[str]] = mapped_column(String(50), comment="IP地址")
- location: Mapped[Optional[str]] = mapped_column(String(200), comment="地理位置")
- device_type: Mapped[Optional[str]] = mapped_column(String(50), comment="设备类型")
- browser: Mapped[Optional[str]] = mapped_column(String(100), comment="浏览器")
- stay_duration: Mapped[Optional[int]] = mapped_column(Integer, comment="停留时长(秒)")
- page_views: Mapped[Optional[int]] = mapped_column(Integer, comment="浏览页数")
- tenant_id: Mapped[Optional[str]] = mapped_column(String(20), default="000000", comment="租户编号")
- create_time: Mapped[Optional[datetime]] = mapped_column(DateTime, comment="创建时间")
|