57 行
1.3 KiB
Python
57 行
1.3 KiB
Python
from pydantic import BaseModel
|
|
from typing import Optional
|
|
from datetime import datetime
|
|
|
|
|
|
# ===== 库存 =====
|
|
class InventoryBase(BaseModel):
|
|
cInvCode: str
|
|
supplier: Optional[str] = None
|
|
casing_label_remark: Optional[str] = None
|
|
batch: Optional[str] = None
|
|
current_remaining: float = 0
|
|
storage_location: Optional[str] = None
|
|
|
|
|
|
class InventoryCreate(InventoryBase):
|
|
pass
|
|
|
|
|
|
class InventoryUpdate(BaseModel):
|
|
cInvCode: Optional[str] = None
|
|
supplier: Optional[str] = None
|
|
casing_label_remark: Optional[str] = None
|
|
batch: Optional[str] = None
|
|
current_remaining: Optional[float] = None
|
|
storage_location: Optional[str] = None
|
|
|
|
|
|
class InventoryResponse(InventoryBase):
|
|
id: int
|
|
created_at: Optional[datetime] = None
|
|
updated_at: Optional[datetime] = None
|
|
|
|
class Config:
|
|
from_attributes = True
|
|
|
|
|
|
# ===== 出入库 =====
|
|
class StockOperation(BaseModel):
|
|
inventory_id: int
|
|
type: str # "in" or "out"
|
|
quantity: float
|
|
remark: Optional[str] = None
|
|
|
|
|
|
class TransactionLogResponse(BaseModel):
|
|
id: int
|
|
inventory_id: int
|
|
cInvCode: str
|
|
type: str
|
|
quantity: float
|
|
remark: Optional[str] = None
|
|
created_at: Optional[datetime] = None
|
|
|
|
class Config:
|
|
from_attributes = True
|