106 lines
6.2 KiB
Python
106 lines
6.2 KiB
Python
|
|
from sqlalchemy import BigInteger, Integer, Numeric, String, Text
|
||
|
|
from sqlalchemy.orm import Mapped, mapped_column
|
||
|
|
|
||
|
|
from backend.app.models.base import BaseModel, TimestampMixin
|
||
|
|
|
||
|
|
|
||
|
|
class CrmCustomer(TimestampMixin, BaseModel):
|
||
|
|
__tablename__ = "crm_customer"
|
||
|
|
|
||
|
|
id: Mapped[int] = mapped_column(BigInteger, primary_key=True)
|
||
|
|
customer_name: Mapped[str] = mapped_column(String(64), nullable=False)
|
||
|
|
mobile: Mapped[str] = mapped_column(String(20), nullable=False)
|
||
|
|
address: Mapped[str | None] = mapped_column(String(255))
|
||
|
|
settlement_type: Mapped[str | None] = mapped_column(String(32))
|
||
|
|
settlement_days: Mapped[int | None] = mapped_column(Integer)
|
||
|
|
settlement_start_type: Mapped[str | None] = mapped_column(String(32))
|
||
|
|
customer_type: Mapped[str | None] = mapped_column(String(32))
|
||
|
|
salesman_id: Mapped[int | None] = mapped_column(BigInteger)
|
||
|
|
credit_limit: Mapped[float] = mapped_column(Numeric(18, 2), nullable=False, default=0)
|
||
|
|
arrears_amount: Mapped[float] = mapped_column(Numeric(18, 2), nullable=False, default=0)
|
||
|
|
status: Mapped[int] = mapped_column(Integer, nullable=False, default=1)
|
||
|
|
remark: Mapped[str | None] = mapped_column(String(500))
|
||
|
|
deleted: Mapped[int] = mapped_column(Integer, nullable=False, default=0)
|
||
|
|
|
||
|
|
|
||
|
|
class Product(TimestampMixin, BaseModel):
|
||
|
|
__tablename__ = "product"
|
||
|
|
|
||
|
|
id: Mapped[int] = mapped_column(BigInteger, primary_key=True)
|
||
|
|
product_name: Mapped[str] = mapped_column(String(128), nullable=False)
|
||
|
|
specification: Mapped[str] = mapped_column(String(128), nullable=False)
|
||
|
|
unit: Mapped[str] = mapped_column(String(32), nullable=False)
|
||
|
|
category: Mapped[str] = mapped_column(String(64), nullable=False)
|
||
|
|
cost_price: Mapped[float] = mapped_column(Numeric(18, 2), nullable=False, default=0)
|
||
|
|
sale_price: Mapped[float] = mapped_column(Numeric(18, 2), nullable=False, default=0)
|
||
|
|
status: Mapped[int] = mapped_column(Integer, nullable=False, default=1)
|
||
|
|
remark: Mapped[str | None] = mapped_column(String(500))
|
||
|
|
deleted: Mapped[int] = mapped_column(Integer, nullable=False, default=0)
|
||
|
|
|
||
|
|
|
||
|
|
class BaseSupplier(TimestampMixin, BaseModel):
|
||
|
|
__tablename__ = "base_supplier"
|
||
|
|
|
||
|
|
id: Mapped[int] = mapped_column(BigInteger, primary_key=True)
|
||
|
|
supplier_name: Mapped[str] = mapped_column(String(128), nullable=False)
|
||
|
|
supplier_type: Mapped[str] = mapped_column(String(32), nullable=False)
|
||
|
|
contact_name: Mapped[str | None] = mapped_column(String(64))
|
||
|
|
contact_mobile: Mapped[str | None] = mapped_column(String(20))
|
||
|
|
address: Mapped[str | None] = mapped_column(String(255))
|
||
|
|
template_type: Mapped[str | None] = mapped_column(String(64))
|
||
|
|
status: Mapped[int] = mapped_column(Integer, nullable=False, default=1)
|
||
|
|
remark: Mapped[str | None] = mapped_column(String(500))
|
||
|
|
deleted: Mapped[int] = mapped_column(Integer, nullable=False, default=0)
|
||
|
|
|
||
|
|
|
||
|
|
class SalesOrder(TimestampMixin, BaseModel):
|
||
|
|
__tablename__ = "sales_order"
|
||
|
|
|
||
|
|
id: Mapped[int] = mapped_column(BigInteger, primary_key=True)
|
||
|
|
order_no: Mapped[str] = mapped_column(String(64), nullable=False, unique=True)
|
||
|
|
customer_id: Mapped[int | None] = mapped_column(BigInteger)
|
||
|
|
customer_name_snapshot: Mapped[str] = mapped_column(String(64), nullable=False)
|
||
|
|
customer_mobile_snapshot: Mapped[str] = mapped_column(String(20), nullable=False)
|
||
|
|
salesman_id: Mapped[int] = mapped_column(BigInteger, nullable=False)
|
||
|
|
order_source: Mapped[str | None] = mapped_column(String(64))
|
||
|
|
order_status: Mapped[str] = mapped_column(String(32), nullable=False)
|
||
|
|
delivery_type: Mapped[str | None] = mapped_column(String(32))
|
||
|
|
factory_id: Mapped[int | None] = mapped_column(BigInteger)
|
||
|
|
sale_price_total: Mapped[float] = mapped_column(Numeric(18, 2), nullable=False, default=0)
|
||
|
|
cost_price_total: Mapped[float] = mapped_column(Numeric(18, 2), nullable=False, default=0)
|
||
|
|
rebate_total: Mapped[float] = mapped_column(Numeric(18, 2), nullable=False, default=0)
|
||
|
|
freight_total: Mapped[float] = mapped_column(Numeric(18, 2), nullable=False, default=0)
|
||
|
|
tax_total: Mapped[float] = mapped_column(Numeric(18, 2), nullable=False, default=0)
|
||
|
|
other_fee_total: Mapped[float] = mapped_column(Numeric(18, 2), nullable=False, default=0)
|
||
|
|
profit_total: Mapped[float] = mapped_column(Numeric(18, 2), nullable=False, default=0)
|
||
|
|
profit_rate: Mapped[float] = mapped_column(Numeric(10, 4), nullable=False, default=0)
|
||
|
|
created_by: Mapped[int] = mapped_column(BigInteger, nullable=False)
|
||
|
|
submitted_at: Mapped[str | None] = mapped_column(String(32))
|
||
|
|
approved_by: Mapped[int | None] = mapped_column(BigInteger)
|
||
|
|
approved_at: Mapped[str | None] = mapped_column(String(32))
|
||
|
|
canceled_at: Mapped[str | None] = mapped_column(String(32))
|
||
|
|
completed_at: Mapped[str | None] = mapped_column(String(32))
|
||
|
|
remark: Mapped[str | None] = mapped_column(String(1000))
|
||
|
|
deleted: Mapped[int] = mapped_column(Integer, nullable=False, default=0)
|
||
|
|
|
||
|
|
|
||
|
|
class SalesOrderItem(TimestampMixin, BaseModel):
|
||
|
|
__tablename__ = "sales_order_item"
|
||
|
|
|
||
|
|
id: Mapped[int] = mapped_column(BigInteger, primary_key=True)
|
||
|
|
order_id: Mapped[int] = mapped_column(BigInteger, nullable=False)
|
||
|
|
product_id: Mapped[int | None] = mapped_column(BigInteger)
|
||
|
|
product_name_snapshot: Mapped[str] = mapped_column(String(128), nullable=False)
|
||
|
|
specification_snapshot: Mapped[str] = mapped_column(String(128), nullable=False)
|
||
|
|
unit_snapshot: Mapped[str] = mapped_column(String(32), nullable=False)
|
||
|
|
quantity: Mapped[float] = mapped_column(Numeric(18, 4), nullable=False, default=0)
|
||
|
|
sale_price: Mapped[float] = mapped_column(Numeric(18, 2), nullable=False, default=0)
|
||
|
|
cost_price: Mapped[float] = mapped_column(Numeric(18, 2), nullable=False, default=0)
|
||
|
|
rebate_amount: Mapped[float] = mapped_column(Numeric(18, 2), nullable=False, default=0)
|
||
|
|
freight_amount: Mapped[float] = mapped_column(Numeric(18, 2), nullable=False, default=0)
|
||
|
|
tax_amount: Mapped[float] = mapped_column(Numeric(18, 2), nullable=False, default=0)
|
||
|
|
other_fee_amount: Mapped[float] = mapped_column(Numeric(18, 2), nullable=False, default=0)
|
||
|
|
line_profit: Mapped[float] = mapped_column(Numeric(18, 2), nullable=False, default=0)
|
||
|
|
remark: Mapped[str | None] = mapped_column(String(500))
|
||
|
|
deleted: Mapped[int] = mapped_column(Integer, nullable=False, default=0)
|