This commit is contained in:
2026-07-13 17:44:37 +08:00
parent 6b3188e693
commit 975fa1ffac
13 changed files with 0 additions and 68 deletions
@@ -0,0 +1,66 @@
from pydantic import BaseModel, Field
from typing import Optional, List
from datetime import datetime, date
from decimal import Decimal
class PurchaseOrderItemCreate(BaseModel):
product_id: int
quantity: int = Field(..., gt=0, description="采购数量")
unit_price: Optional[Decimal] = Field(None, description="单价(可选,不填则使用物料成本价格)")
remark: Optional[str] = None
class PurchaseOrderCreate(BaseModel):
supplier_id: int
expected_date: Optional[date] = None
remark: Optional[str] = None
items: List[PurchaseOrderItemCreate] = Field(min_length=1)
class PurchaseOrderResponse(BaseModel):
id: int
order_no: str
supplier_name: str
order_date: datetime
expected_date: Optional[date]
status: str
receipt_status: str # "pending" | "partial_received" | "received" | "cancelled"
payment_status: str # "unpaid" | "paid"
total_amount: Decimal
paid_amount: Decimal
remark: Optional[str]
created_at: datetime
received_date: Optional[datetime]
paid_date: Optional[datetime]
class Config:
from_attributes = True
class PurchaseOrderItemResponse(BaseModel):
id: int
product_id: int
product_sku: str
product_name: str
quantity: int
received_quantity: int
unit_price: Decimal
amount: Decimal
remark: Optional[str] = None
class PurchaseOrderDetailResponse(PurchaseOrderResponse):
supplier_id: int
items: List[PurchaseOrderItemResponse]
class PurchaseOrderReceiveItem(BaseModel):
item_id: int
receive_quantity: int = Field(gt=0)
class PurchaseOrderReceiveRequest(BaseModel):
warehouse_id: Optional[int] = None
items: List[PurchaseOrderReceiveItem] = Field(min_length=1)
remark: Optional[str] = None