Automated Action 54bf9880b9 Implement Small Business Inventory Management System
This commit implements a comprehensive inventory management system for small businesses using FastAPI and SQLAlchemy. Features include:
- Product and category management
- Inventory tracking across multiple locations
- Supplier management
- Purchase management
- Transaction tracking for inventory movements
- Complete API documentation

generated with BackendIM... (backend.im)
2025-05-12 12:55:31 +00:00

85 lines
2.1 KiB
Python

from typing import List, Optional, Dict, Any
from pydantic import BaseModel, Field
from datetime import datetime
# Supplier schemas
class SupplierBase(BaseModel):
name: str
contact_name: Optional[str] = None
email: Optional[str] = None
phone: Optional[str] = None
address: Optional[str] = None
notes: Optional[str] = None
is_active: bool = True
class SupplierCreate(SupplierBase):
pass
class SupplierUpdate(BaseModel):
name: Optional[str] = None
contact_name: Optional[str] = None
email: Optional[str] = None
phone: Optional[str] = None
address: Optional[str] = None
notes: Optional[str] = None
is_active: Optional[bool] = None
class SupplierInDB(SupplierBase):
id: int
created_at: datetime
updated_at: datetime
class Config:
from_attributes = True
# Purchase schemas
class PurchaseItemBase(BaseModel):
product_id: int
quantity: float
unit_price: float
total_price: float = None # Will be calculated server-side
class PurchaseItemCreate(PurchaseItemBase):
pass
class PurchaseItemInDB(PurchaseItemBase):
id: int
purchase_id: int
created_at: datetime
updated_at: datetime
class Config:
from_attributes = True
class PurchaseItemWithDetails(PurchaseItemInDB):
product: Dict[str, Any]
class PurchaseBase(BaseModel):
supplier_id: int
reference_number: Optional[str] = None
order_date: datetime = None
delivery_date: Optional[datetime] = None
notes: Optional[str] = None
total_amount: float = 0
class PurchaseCreate(PurchaseBase):
items: List[PurchaseItemCreate]
class PurchaseUpdate(BaseModel):
supplier_id: Optional[int] = None
reference_number: Optional[str] = None
order_date: Optional[datetime] = None
delivery_date: Optional[datetime] = None
notes: Optional[str] = None
class PurchaseInDB(PurchaseBase):
id: int
created_at: datetime
updated_at: datetime
class Config:
from_attributes = True
class PurchaseWithItems(PurchaseInDB):
items: List[PurchaseItemWithDetails] = []
supplier: Dict[str, Any]