schemas.py 1.2 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556
  1. from pydantic import BaseModel
  2. from typing import Optional
  3. from datetime import datetime
  4. # ===== 库存 =====
  5. class InventoryBase(BaseModel):
  6. cInvCode: str
  7. supplier: Optional[str] = None
  8. casing_label_remark: Optional[str] = None
  9. batch: Optional[str] = None
  10. current_remaining: float = 0
  11. storage_location: Optional[str] = None
  12. class InventoryCreate(InventoryBase):
  13. pass
  14. class InventoryUpdate(BaseModel):
  15. cInvCode: Optional[str] = None
  16. supplier: Optional[str] = None
  17. casing_label_remark: Optional[str] = None
  18. batch: Optional[str] = None
  19. current_remaining: Optional[float] = None
  20. storage_location: Optional[str] = None
  21. class InventoryResponse(InventoryBase):
  22. id: int
  23. created_at: Optional[datetime] = None
  24. updated_at: Optional[datetime] = None
  25. class Config:
  26. from_attributes = True
  27. # ===== 出入库 =====
  28. class StockOperation(BaseModel):
  29. inventory_id: int
  30. type: str # "in" or "out"
  31. quantity: float
  32. remark: Optional[str] = None
  33. class TransactionLogResponse(BaseModel):
  34. id: int
  35. inventory_id: int
  36. cInvCode: str
  37. type: str
  38. quantity: float
  39. remark: Optional[str] = None
  40. created_at: Optional[datetime] = None
  41. class Config:
  42. from_attributes = True