crm_product.py 12 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167
  1. from datetime import datetime
  2. from decimal import Decimal
  3. from typing import Optional
  4. from sqlalchemy import BigInteger, String, DateTime, Integer, Text, Numeric, SMALLINT
  5. from sqlalchemy.orm import Mapped, mapped_column
  6. from app.database import Base
  7. class CrmProduct(Base):
  8. __tablename__ = "crm_product"
  9. id: Mapped[int] = mapped_column(BigInteger, primary_key=True, autoincrement=False, comment="主键ID")
  10. product_no: Mapped[Optional[str]] = mapped_column(String(50), default="", comment="产品编号")
  11. product_name: Mapped[Optional[str]] = mapped_column(String(200), default="", comment="产品名称")
  12. category_id: Mapped[Optional[int]] = mapped_column(BigInteger, comment="分类ID")
  13. category_name: Mapped[Optional[str]] = mapped_column(String(100), default="", comment="分类名称")
  14. model: Mapped[Optional[str]] = mapped_column(String(100), default="", comment="规格型号")
  15. unit: Mapped[Optional[str]] = mapped_column(String(20), default="", comment="单位")
  16. barcode: Mapped[Optional[str]] = mapped_column(String(100), default="", comment="条形码")
  17. price: Mapped[Optional[Decimal]] = mapped_column(Numeric(15, 2), default=Decimal("0"), comment="销售价格")
  18. cost: Mapped[Optional[Decimal]] = mapped_column(Numeric(15, 2), default=Decimal("0"), comment="成本价格")
  19. min_price: Mapped[Optional[Decimal]] = mapped_column(Numeric(15, 2), default=Decimal("0"), comment="最低价格")
  20. stock: Mapped[Optional[int]] = mapped_column(Integer, default=0, comment="库存数量")
  21. low_stock: Mapped[Optional[int]] = mapped_column(Integer, default=0, comment="最低库存")
  22. status: Mapped[Optional[str]] = mapped_column(String(20), default="1", comment="状态")
  23. tax_rate: Mapped[Optional[Decimal]] = mapped_column(Numeric(5, 2), default=Decimal("0"), comment="税率")
  24. description: Mapped[Optional[str]] = mapped_column(Text, comment="产品描述")
  25. images: Mapped[Optional[str]] = mapped_column(String(1000), default="", comment="产品图片")
  26. sale_count: Mapped[Optional[int]] = mapped_column(Integer, default=0, comment="销售数量")
  27. tenant_id: Mapped[Optional[str]] = mapped_column(String(20), default="000000", comment="租户编号")
  28. create_dept: Mapped[Optional[int]] = mapped_column(BigInteger, comment="创建部门")
  29. create_by: Mapped[Optional[int]] = mapped_column(BigInteger, comment="创建者")
  30. create_time: Mapped[Optional[datetime]] = mapped_column(DateTime, comment="创建时间")
  31. update_by: Mapped[Optional[int]] = mapped_column(BigInteger, comment="更新者")
  32. update_time: Mapped[Optional[datetime]] = mapped_column(DateTime, comment="更新时间")
  33. del_flag: Mapped[Optional[int]] = mapped_column(SMALLINT, default=0, comment="删除标志(0存在 1删除)")
  34. version: Mapped[Optional[int]] = mapped_column(Integer, default=0, comment="版本号")
  35. remark: Mapped[Optional[str]] = mapped_column(String(500), default="", comment="备注")
  36. class CrmProductCategory(Base):
  37. __tablename__ = "crm_product_category"
  38. id: Mapped[int] = mapped_column(BigInteger, primary_key=True, autoincrement=False, comment="主键ID")
  39. category_name: Mapped[Optional[str]] = mapped_column(String(100), default="", comment="分类名称")
  40. parent_id: Mapped[Optional[int]] = mapped_column(BigInteger, default=0, comment="父分类ID")
  41. ancestors: Mapped[Optional[str]] = mapped_column(String(500), default="", comment="祖级列表")
  42. sort: Mapped[Optional[int]] = mapped_column(Integer, default=0, comment="排序号")
  43. status: Mapped[Optional[str]] = mapped_column(String(10), default="1", comment="状态")
  44. tenant_id: Mapped[Optional[str]] = mapped_column(String(20), default="000000", comment="租户编号")
  45. create_dept: Mapped[Optional[int]] = mapped_column(BigInteger, comment="创建部门")
  46. create_by: Mapped[Optional[int]] = mapped_column(BigInteger, comment="创建者")
  47. create_time: Mapped[Optional[datetime]] = mapped_column(DateTime, comment="创建时间")
  48. update_by: Mapped[Optional[int]] = mapped_column(BigInteger, comment="更新者")
  49. update_time: Mapped[Optional[datetime]] = mapped_column(DateTime, comment="更新时间")
  50. del_flag: Mapped[Optional[int]] = mapped_column(SMALLINT, default=0, comment="删除标志(0存在 1删除)")
  51. version: Mapped[Optional[int]] = mapped_column(Integer, default=0, comment="版本号")
  52. remark: Mapped[Optional[str]] = mapped_column(String(500), default="", comment="备注")
  53. class CrmProductTag(Base):
  54. __tablename__ = "crm_product_tag"
  55. id: Mapped[int] = mapped_column(BigInteger, primary_key=True, autoincrement=False, comment="主键ID")
  56. tag_name: Mapped[Optional[str]] = mapped_column(String(50), default="", comment="标签名称")
  57. tag_color: Mapped[Optional[str]] = mapped_column(String(20), default="", comment="标签颜色")
  58. sort: Mapped[Optional[int]] = mapped_column(Integer, default=0, comment="排序号")
  59. status: Mapped[Optional[str]] = mapped_column(String(1), default="1", comment="状态")
  60. remark: Mapped[Optional[str]] = mapped_column(String(500), default="", comment="备注")
  61. del_flag: Mapped[Optional[int]] = mapped_column(Integer, default=0, comment="删除标志")
  62. create_by: Mapped[Optional[int]] = mapped_column(BigInteger, comment="创建者")
  63. create_time: Mapped[Optional[datetime]] = mapped_column(DateTime, comment="创建时间")
  64. update_by: Mapped[Optional[int]] = mapped_column(BigInteger, comment="更新者")
  65. update_time: Mapped[Optional[datetime]] = mapped_column(DateTime, comment="更新时间")
  66. tenant_id: Mapped[Optional[str]] = mapped_column(String(20), default="000000", comment="租户编号")
  67. class CrmProductTagRelation(Base):
  68. __tablename__ = "crm_product_tag_relation"
  69. id: Mapped[int] = mapped_column(BigInteger, primary_key=True, autoincrement=False, comment="主键ID")
  70. product_id: Mapped[Optional[int]] = mapped_column(BigInteger, comment="产品ID")
  71. tag_id: Mapped[Optional[int]] = mapped_column(BigInteger, comment="标签ID")
  72. create_time: Mapped[Optional[datetime]] = mapped_column(DateTime, comment="创建时间")
  73. tenant_id: Mapped[Optional[str]] = mapped_column(String(20), default="000000", comment="租户编号")
  74. class CrmProductAttachment(Base):
  75. __tablename__ = "crm_product_attachment"
  76. id: Mapped[int] = mapped_column(BigInteger, primary_key=True, autoincrement=False, comment="主键ID")
  77. product_id: Mapped[Optional[int]] = mapped_column(BigInteger, comment="产品ID")
  78. file_name: Mapped[Optional[str]] = mapped_column(String(200), default="", comment="文件名称")
  79. file_path: Mapped[Optional[str]] = mapped_column(String(500), default="", comment="文件路径")
  80. file_type: Mapped[Optional[str]] = mapped_column(String(50), default="", comment="文件类型")
  81. file_size: Mapped[Optional[int]] = mapped_column(BigInteger, default=0, comment="文件大小")
  82. attachment_type: Mapped[Optional[str]] = mapped_column(String(50), default="", comment="附件类型")
  83. download_count: Mapped[Optional[int]] = mapped_column(Integer, default=0, comment="下载次数")
  84. sort: Mapped[Optional[int]] = mapped_column(Integer, default=0, comment="排序号")
  85. remark: Mapped[Optional[str]] = mapped_column(String(500), default="", comment="备注")
  86. del_flag: Mapped[Optional[int]] = mapped_column(Integer, default=0, comment="删除标志")
  87. create_by: Mapped[Optional[int]] = mapped_column(BigInteger, comment="创建者")
  88. create_time: Mapped[Optional[datetime]] = mapped_column(DateTime, comment="创建时间")
  89. update_by: Mapped[Optional[int]] = mapped_column(BigInteger, comment="更新者")
  90. update_time: Mapped[Optional[datetime]] = mapped_column(DateTime, comment="更新时间")
  91. tenant_id: Mapped[Optional[str]] = mapped_column(String(20), default="000000", comment="租户编号")
  92. class CrmProductPrice(Base):
  93. __tablename__ = "crm_product_price"
  94. id: Mapped[int] = mapped_column(BigInteger, primary_key=True, autoincrement=False, comment="主键ID")
  95. product_id: Mapped[Optional[int]] = mapped_column(BigInteger, comment="产品ID")
  96. price_type: Mapped[Optional[str]] = mapped_column(String(20), default="", comment="价格类型")
  97. price: Mapped[Optional[Decimal]] = mapped_column(Numeric(12, 2), default=Decimal("0"), comment="价格")
  98. start_date: Mapped[Optional[datetime]] = mapped_column(DateTime, comment="开始日期")
  99. end_date: Mapped[Optional[datetime]] = mapped_column(DateTime, comment="结束日期")
  100. status: Mapped[Optional[str]] = mapped_column(String(10), default="1", comment="状态")
  101. remark: Mapped[Optional[str]] = mapped_column(String(500), default="", comment="备注")
  102. del_flag: Mapped[Optional[int]] = mapped_column(Integer, default=0, comment="删除标志")
  103. create_dept: Mapped[Optional[int]] = mapped_column(BigInteger, comment="创建部门")
  104. create_by: Mapped[Optional[int]] = mapped_column(BigInteger, comment="创建者")
  105. create_time: Mapped[Optional[datetime]] = mapped_column(DateTime, comment="创建时间")
  106. update_by: Mapped[Optional[int]] = mapped_column(BigInteger, comment="更新者")
  107. update_time: Mapped[Optional[datetime]] = mapped_column(DateTime, comment="更新时间")
  108. tenant_id: Mapped[Optional[str]] = mapped_column(String(20), default="000000", comment="租户编号")
  109. class CrmProductPriceHistory(Base):
  110. __tablename__ = "crm_product_price_history"
  111. id: Mapped[int] = mapped_column(BigInteger, primary_key=True, autoincrement=False, comment="主键ID")
  112. product_id: Mapped[Optional[int]] = mapped_column(BigInteger, comment="产品ID")
  113. price_type: Mapped[Optional[str]] = mapped_column(String(20), default="", comment="价格类型")
  114. old_price: Mapped[Optional[Decimal]] = mapped_column(Numeric(12, 2), default=Decimal("0"), comment="原价格")
  115. new_price: Mapped[Optional[Decimal]] = mapped_column(Numeric(12, 2), default=Decimal("0"), comment="新价格")
  116. price_change: Mapped[Optional[Decimal]] = mapped_column(Numeric(12, 2), default=Decimal("0"), comment="价格变动")
  117. change_percent: Mapped[Optional[Decimal]] = mapped_column(Numeric(5, 2), default=Decimal("0"), comment="变动百分比")
  118. adjust_reason: Mapped[Optional[str]] = mapped_column(String(500), default="", comment="调整原因")
  119. effective_date: Mapped[Optional[datetime]] = mapped_column(DateTime, comment="生效日期")
  120. create_by: Mapped[Optional[int]] = mapped_column(BigInteger, comment="创建者")
  121. create_time: Mapped[Optional[datetime]] = mapped_column(DateTime, comment="创建时间")
  122. tenant_id: Mapped[Optional[str]] = mapped_column(String(20), default="000000", comment="租户编号")
  123. class CrmProductStockLog(Base):
  124. __tablename__ = "crm_product_stock_log"
  125. id: Mapped[int] = mapped_column(BigInteger, primary_key=True, autoincrement=False, comment="主键ID")
  126. product_id: Mapped[Optional[int]] = mapped_column(BigInteger, comment="产品ID")
  127. operation_type: Mapped[Optional[str]] = mapped_column(String(20), default="", comment="操作类型")
  128. quantity: Mapped[Optional[int]] = mapped_column(Integer, default=0, comment="数量")
  129. before_stock: Mapped[Optional[int]] = mapped_column(Integer, default=0, comment="操作前库存")
  130. after_stock: Mapped[Optional[int]] = mapped_column(Integer, default=0, comment="操作后库存")
  131. unit_price: Mapped[Optional[Decimal]] = mapped_column(Numeric(12, 2), default=Decimal("0"), comment="单价")
  132. total_amount: Mapped[Optional[Decimal]] = mapped_column(Numeric(12, 2), default=Decimal("0"), comment="总金额")
  133. related_no: Mapped[Optional[str]] = mapped_column(String(100), default="", comment="关联单号")
  134. related_type: Mapped[Optional[str]] = mapped_column(String(50), default="", comment="关联类型")
  135. supplier: Mapped[Optional[str]] = mapped_column(String(200), default="", comment="供应商")
  136. operator: Mapped[Optional[str]] = mapped_column(String(100), default="", comment="操作人")
  137. operation_date: Mapped[Optional[datetime]] = mapped_column(DateTime, comment="操作日期")
  138. remark: Mapped[Optional[str]] = mapped_column(String(500), default="", comment="备注")
  139. create_by: Mapped[Optional[int]] = mapped_column(BigInteger, comment="创建者")
  140. create_time: Mapped[Optional[datetime]] = mapped_column(DateTime, comment="创建时间")
  141. tenant_id: Mapped[Optional[str]] = mapped_column(String(20), default="000000", comment="租户编号")