dingdanquanliucheng/backend/app/schemas/orders.py

66 lines
1.8 KiB
Python

from pydantic import BaseModel, Field
class OrderListQuery(BaseModel):
order_status: str | None = None
customer_name: str | None = None
customer_mobile: str | None = None
salesman_id: int | None = None
factory_id: int | None = None
order_source: str | None = None
start_time: str | None = None
end_time: str | None = None
page_no: int = 1
page_size: int = 20
class OrderItemPayload(BaseModel):
product_id: int | None = None
product_name: str
specification: str
unit: str
quantity: float = Field(gt=0)
sale_price: float = Field(ge=0)
cost_price: float = Field(ge=0)
rebate_amount: float = Field(default=0, ge=0)
freight_amount: float = Field(default=0, ge=0)
tax_amount: float = Field(default=0, ge=0)
other_fee_amount: float = Field(default=0, ge=0)
remark: str | None = None
class CreateOrderRequest(BaseModel):
customer_name: str
customer_mobile: str
customer_address: str | None = None
order_source: str | None = None
delivery_type: str | None = None
factory_id: int | None = None
commission_amount: float = Field(default=0, ge=0)
rebate_total: float = Field(default=0, ge=0)
freight_total: float = Field(default=0, ge=0)
tax_total: float = Field(default=0, ge=0)
other_fee_total: float = Field(default=0, ge=0)
remark: str | None = None
items: list[OrderItemPayload] = Field(default_factory=list)
class CancelOrderRequest(BaseModel):
cancel_reason: str
cancel_opinion: str | None = None
class ApproveOrderRequest(BaseModel):
approve_result: str
approve_opinion: str | None = None
class SupplierTextRequest(BaseModel):
supplier_id: int
class ConfirmSupplierTextRequest(BaseModel):
supplier_id: int
text_content: str
remark: str | None = None