from pydantic import BaseModel from datetime import datetime from typing import Optional from app.schemas.category import Category from app.schemas.supplier import Supplier class ItemBase(BaseModel): name: str description: Optional[str] = None sku: str barcode: Optional[str] = None unit_price: float cost_price: Optional[float] = None quantity_in_stock: int = 0 minimum_stock_level: int = 0 maximum_stock_level: Optional[int] = None reorder_point: int = 0 is_active: bool = True category_id: Optional[int] = None supplier_id: Optional[int] = None class ItemCreate(ItemBase): pass class ItemUpdate(BaseModel): name: Optional[str] = None description: Optional[str] = None sku: Optional[str] = None barcode: Optional[str] = None unit_price: Optional[float] = None cost_price: Optional[float] = None quantity_in_stock: Optional[int] = None minimum_stock_level: Optional[int] = None maximum_stock_level: Optional[int] = None reorder_point: Optional[int] = None is_active: Optional[bool] = None category_id: Optional[int] = None supplier_id: Optional[int] = None class Item(ItemBase): id: int created_at: datetime updated_at: datetime category: Optional[Category] = None supplier: Optional[Supplier] = None class Config: from_attributes = True class ItemWithLowStock(BaseModel): id: int name: str sku: str quantity_in_stock: int minimum_stock_level: int reorder_point: int class Config: from_attributes = True