crm_invoice.py 9.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117
  1. from datetime import datetime, date
  2. from decimal import Decimal
  3. from typing import Optional
  4. from sqlalchemy import BigInteger, String, DateTime, Integer, Text, Numeric, SmallInteger, Date, CHAR
  5. from sqlalchemy.orm import Mapped, mapped_column
  6. from app.database import Base
  7. class CrmInvoice(Base):
  8. __tablename__ = "crm_invoice"
  9. id: Mapped[int] = mapped_column(BigInteger, primary_key=True, autoincrement=False, comment="主键ID")
  10. invoice_no: Mapped[Optional[str]] = mapped_column(String(50), comment="发票编号")
  11. invoice_code: Mapped[Optional[str]] = mapped_column(String(50), comment="发票代码")
  12. invoice_number: Mapped[Optional[str]] = mapped_column(String(50), comment="发票号码")
  13. contract_id: Mapped[Optional[int]] = mapped_column(BigInteger, comment="合同ID")
  14. contract_no: Mapped[Optional[str]] = mapped_column(String(50), comment="合同编号")
  15. customer_id: Mapped[Optional[int]] = mapped_column(BigInteger, comment="客户ID")
  16. customer_name: Mapped[Optional[str]] = mapped_column(String(200), comment="客户名称")
  17. payment_id: Mapped[Optional[int]] = mapped_column(BigInteger, comment="回款ID")
  18. payment_no: Mapped[Optional[str]] = mapped_column(String(50), comment="回款编号")
  19. invoice_type: Mapped[Optional[str]] = mapped_column(String(20), comment="发票类型")
  20. invoice_title: Mapped[Optional[str]] = mapped_column(String(200), comment="发票抬头")
  21. tax_no: Mapped[Optional[str]] = mapped_column(String(50), comment="纳税人识别号")
  22. company_address: Mapped[Optional[str]] = mapped_column(String(255), comment="公司地址")
  23. company_phone: Mapped[Optional[str]] = mapped_column(String(50), comment="公司电话")
  24. bank_name: Mapped[Optional[str]] = mapped_column(String(100), comment="开户银行")
  25. bank_account: Mapped[Optional[str]] = mapped_column(String(100), comment="银行账号")
  26. amount: Mapped[Optional[Decimal]] = mapped_column(Numeric(15, 2), comment="金额")
  27. tax_rate: Mapped[Optional[Decimal]] = mapped_column(Numeric(5, 2), comment="税率")
  28. is_tax_included: Mapped[Optional[int]] = mapped_column(SmallInteger, default=0, comment="是否含税")
  29. tax_amount: Mapped[Optional[Decimal]] = mapped_column(Numeric(15, 2), comment="税额")
  30. total_amount: Mapped[Optional[Decimal]] = mapped_column(Numeric(15, 2), comment="价税合计")
  31. invoice_content: Mapped[Optional[str]] = mapped_column(String(200), comment="开票内容")
  32. invoice_date: Mapped[Optional[date]] = mapped_column(Date, comment="开票日期")
  33. status: Mapped[Optional[str]] = mapped_column(String(20), default="0", comment="状态")
  34. reject_reason: Mapped[Optional[str]] = mapped_column(String(500), comment="驳回原因")
  35. invalid_reason: Mapped[Optional[str]] = mapped_column(String(500), comment="作废原因")
  36. invalid_time: Mapped[Optional[datetime]] = mapped_column(DateTime, comment="作废时间")
  37. invoice_file: Mapped[Optional[str]] = mapped_column(String(500), comment="发票文件")
  38. invoice_image: Mapped[Optional[str]] = mapped_column(String(500), comment="发票图片")
  39. express_company: Mapped[Optional[str]] = mapped_column(String(50), comment="快递公司")
  40. express_no: Mapped[Optional[str]] = mapped_column(String(100), comment="快递单号")
  41. express_status: Mapped[Optional[str]] = mapped_column(String(20), comment="快递状态")
  42. express_time: Mapped[Optional[datetime]] = mapped_column(DateTime, comment="快递时间")
  43. receive_time: Mapped[Optional[datetime]] = mapped_column(DateTime, comment="签收时间")
  44. mail_address: Mapped[Optional[str]] = mapped_column(String(255), comment="邮寄地址")
  45. mail_contact: Mapped[Optional[str]] = mapped_column(String(50), comment="邮寄联系人")
  46. mail_mobile: Mapped[Optional[str]] = mapped_column(String(20), comment="邮寄电话")
  47. owner_user_id: Mapped[Optional[int]] = mapped_column(BigInteger, comment="负责人ID")
  48. owner_user_name: Mapped[Optional[str]] = mapped_column(String(50), comment="负责人姓名")
  49. apply_by: Mapped[Optional[int]] = mapped_column(BigInteger, comment="申请人ID")
  50. apply_by_name: Mapped[Optional[str]] = mapped_column(String(50), comment="申请人姓名")
  51. apply_time: Mapped[Optional[datetime]] = mapped_column(DateTime, comment="申请时间")
  52. approve_by: Mapped[Optional[int]] = mapped_column(BigInteger, comment="审批人ID")
  53. approve_by_name: Mapped[Optional[str]] = mapped_column(String(50), comment="审批人姓名")
  54. approve_time: Mapped[Optional[datetime]] = mapped_column(DateTime, comment="审批时间")
  55. invoice_by: Mapped[Optional[int]] = mapped_column(BigInteger, comment="开票人ID")
  56. invoice_by_name: Mapped[Optional[str]] = mapped_column(String(50), comment="开票人姓名")
  57. tenant_id: Mapped[Optional[str]] = mapped_column(String(20), default="000000", comment="租户编号")
  58. create_dept: Mapped[Optional[int]] = mapped_column(BigInteger, comment="创建部门")
  59. create_by: Mapped[Optional[int]] = mapped_column(BigInteger, comment="创建者")
  60. create_time: Mapped[Optional[datetime]] = mapped_column(DateTime, comment="创建时间")
  61. update_by: Mapped[Optional[int]] = mapped_column(BigInteger, comment="更新者")
  62. update_time: Mapped[Optional[datetime]] = mapped_column(DateTime, comment="更新时间")
  63. del_flag: Mapped[Optional[int]] = mapped_column(SmallInteger, default=0, comment="删除标志(0存在 1删除)")
  64. version: Mapped[Optional[int]] = mapped_column(Integer, default=0, comment="版本号")
  65. remark: Mapped[Optional[str]] = mapped_column(String(500), comment="备注")
  66. class CrmInvoiceInfo(Base):
  67. __tablename__ = "crm_invoice_info"
  68. id: Mapped[int] = mapped_column(BigInteger, primary_key=True, autoincrement=False, comment="主键ID")
  69. customer_id: Mapped[Optional[int]] = mapped_column(BigInteger, comment="客户ID")
  70. company_name: Mapped[Optional[str]] = mapped_column(String(200), comment="公司名称")
  71. company_address: Mapped[Optional[str]] = mapped_column(String(500), comment="公司地址")
  72. legal_representative: Mapped[Optional[str]] = mapped_column(String(100), comment="法人代表")
  73. agent: Mapped[Optional[str]] = mapped_column(String(100), comment="代理人")
  74. phone_fax: Mapped[Optional[str]] = mapped_column(String(100), comment="电话传真")
  75. bank_name: Mapped[Optional[str]] = mapped_column(String(200), comment="开户银行")
  76. bank_account: Mapped[Optional[str]] = mapped_column(String(100), comment="银行账号")
  77. is_default: Mapped[Optional[str]] = mapped_column(CHAR(1), default="0", comment="是否默认")
  78. remark: Mapped[Optional[str]] = mapped_column(String(500), comment="备注")
  79. tenant_id: Mapped[Optional[str]] = mapped_column(String(20), default="000000", comment="租户编号")
  80. create_dept: Mapped[Optional[int]] = mapped_column(BigInteger, comment="创建部门")
  81. create_by: Mapped[Optional[int]] = mapped_column(BigInteger, comment="创建者")
  82. create_time: Mapped[Optional[datetime]] = mapped_column(DateTime, comment="创建时间")
  83. update_by: Mapped[Optional[int]] = mapped_column(BigInteger, comment="更新者")
  84. update_time: Mapped[Optional[datetime]] = mapped_column(DateTime, comment="更新时间")
  85. del_flag: Mapped[Optional[int]] = mapped_column(Integer, default=0, comment="删除标志(0存在 1删除)")
  86. class CrmInvoiceItem(Base):
  87. __tablename__ = "crm_invoice_item"
  88. id: Mapped[int] = mapped_column(BigInteger, primary_key=True, autoincrement=False, comment="主键ID")
  89. invoice_id: Mapped[Optional[int]] = mapped_column(BigInteger, comment="发票ID")
  90. item_name: Mapped[Optional[str]] = mapped_column(String(200), comment="项目名称")
  91. spec: Mapped[Optional[str]] = mapped_column(String(100), comment="规格型号")
  92. unit: Mapped[Optional[str]] = mapped_column(String(50), comment="单位")
  93. quantity: Mapped[Optional[Decimal]] = mapped_column(Numeric(15, 2), comment="数量")
  94. unit_price: Mapped[Optional[Decimal]] = mapped_column(Numeric(15, 2), comment="单价")
  95. amount: Mapped[Optional[Decimal]] = mapped_column(Numeric(15, 2), comment="金额")
  96. tax_rate: Mapped[Optional[Decimal]] = mapped_column(Numeric(5, 2), comment="税率")
  97. tax_amount: Mapped[Optional[Decimal]] = mapped_column(Numeric(15, 2), comment="税额")
  98. total_amount: Mapped[Optional[Decimal]] = mapped_column(Numeric(15, 2), comment="价税合计")
  99. sort: Mapped[Optional[int]] = mapped_column(Integer, default=0, comment="排序")
  100. tenant_id: Mapped[Optional[str]] = mapped_column(String(20), default="000000", comment="租户编号")
  101. create_by: Mapped[Optional[int]] = mapped_column(BigInteger, comment="创建者")
  102. create_time: Mapped[Optional[datetime]] = mapped_column(DateTime, comment="创建时间")
  103. update_by: Mapped[Optional[int]] = mapped_column(BigInteger, comment="更新者")
  104. update_time: Mapped[Optional[datetime]] = mapped_column(DateTime, comment="更新时间")
  105. del_flag: Mapped[Optional[int]] = mapped_column(SmallInteger, default=0, comment="删除标志(0存在 1删除)")
  106. remark: Mapped[Optional[str]] = mapped_column(String(500), comment="备注")