Files
geMoldInsight/src/inventory/api/schemas/purchase_order_schemas.py
T

65 lines
1.6 KiB
Python
Raw Normal View History

2026-03-25 23:59:29 +08:00
from pydantic import BaseModel, Field
2026-03-08 22:58:25 +08:00
from typing import Optional, List
2026-03-25 23:59:29 +08:00
from datetime import datetime, date
2026-04-19 23:41:35 +08:00
from decimal import Decimal
2026-03-08 22:58:25 +08:00
class PurchaseOrderItemCreate(BaseModel):
product_id: int
2026-03-25 23:59:29 +08:00
quantity: int = Field(..., gt=0, description="采购数量")
2026-04-19 23:41:35 +08:00
unit_price: Optional[Decimal] = Field(None, description="单价(可选,后端自动使用物料成本价格)")
2026-03-08 22:58:25 +08:00
remark: Optional[str] = None
class PurchaseOrderCreate(BaseModel):
supplier_id: int
2026-03-25 23:59:29 +08:00
expected_date: Optional[date] = None
2026-03-08 22:58:25 +08:00
remark: Optional[str] = None
2026-03-25 23:59:29 +08:00
items: List[PurchaseOrderItemCreate] = Field(min_length=1)
2026-03-08 22:58:25 +08:00
class PurchaseOrderResponse(BaseModel):
id: int
order_no: str
supplier_name: str
order_date: datetime
2026-03-25 23:59:29 +08:00
expected_date: Optional[date]
2026-03-08 22:58:25 +08:00
status: str
2026-04-19 23:41:35 +08:00
total_amount: Decimal
paid_amount: Decimal
2026-03-08 22:58:25 +08:00
remark: Optional[str]
created_at: datetime
2026-03-31 01:00:22 +08:00
received_date: Optional[datetime]
paid_date: Optional[datetime]
2026-03-08 22:58:25 +08:00
class Config:
from_attributes = True
2026-03-17 22:20:56 +08:00
class PurchaseOrderItemResponse(BaseModel):
id: int
product_id: int
product_sku: str
product_name: str
quantity: int
received_quantity: int
2026-04-19 23:41:35 +08:00
unit_price: Decimal
amount: Decimal
2026-03-17 22:20:56 +08:00
remark: Optional[str] = None
class PurchaseOrderDetailResponse(PurchaseOrderResponse):
supplier_id: int
items: List[PurchaseOrderItemResponse]
class PurchaseOrderReceiveItem(BaseModel):
item_id: int
2026-03-25 23:59:29 +08:00
receive_quantity: int = Field(gt=0)
2026-03-17 22:20:56 +08:00
class PurchaseOrderReceiveRequest(BaseModel):
warehouse_id: Optional[int] = None
2026-03-25 23:59:29 +08:00
items: List[PurchaseOrderReceiveItem] = Field(min_length=1)
2026-03-17 22:20:56 +08:00
remark: Optional[str] = None