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

109 lines
2.7 KiB
Python

from typing import List, Optional, Dict, Any
from pydantic import BaseModel, Field
from datetime import datetime
from enum import Enum
from app.models.inventory import LocationType, TransactionType
# Location schemas
class LocationTypeEnum(str, Enum):
WAREHOUSE = "warehouse"
STORE = "store"
SUPPLIER = "supplier"
class LocationBase(BaseModel):
name: str
type: LocationTypeEnum = LocationTypeEnum.WAREHOUSE
address: Optional[str] = None
description: Optional[str] = None
class LocationCreate(LocationBase):
pass
class LocationUpdate(BaseModel):
name: Optional[str] = None
type: Optional[LocationTypeEnum] = None
address: Optional[str] = None
description: Optional[str] = None
class LocationInDB(LocationBase):
id: int
created_at: datetime
updated_at: datetime
class Config:
from_attributes = True
# Inventory item schemas
class InventoryItemBase(BaseModel):
product_id: int
location_id: int
quantity: float
minimum_stock: float = 0
maximum_stock: Optional[float] = None
class InventoryItemCreate(InventoryItemBase):
pass
class InventoryItemUpdate(BaseModel):
quantity: Optional[float] = None
minimum_stock: Optional[float] = None
maximum_stock: Optional[float] = None
class InventoryItemInDB(InventoryItemBase):
id: int
created_at: datetime
updated_at: datetime
class Config:
from_attributes = True
class InventoryItemWithDetails(InventoryItemInDB):
product: Dict[str, Any]
location: Dict[str, Any]
# Transaction schemas
class TransactionTypeEnum(str, Enum):
PURCHASE = "purchase"
SALE = "sale"
TRANSFER = "transfer"
ADJUSTMENT = "adjustment"
RETURN = "return"
class InventoryTransactionBase(BaseModel):
type: TransactionTypeEnum
reference_id: Optional[str] = None
notes: Optional[str] = None
class InventoryTransactionCreate(InventoryTransactionBase):
pass
class InventoryTransactionItemBase(BaseModel):
product_id: int
quantity: float
from_location_id: Optional[int] = None
to_location_id: Optional[int] = None
class InventoryTransactionItemCreate(InventoryTransactionItemBase):
pass
class InventoryTransactionWithItems(InventoryTransactionBase):
items: List[InventoryTransactionItemCreate]
class InventoryTransactionItemInDB(InventoryTransactionItemBase):
id: int
transaction_id: int
created_at: datetime
updated_at: datetime
class Config:
from_attributes = True
class InventoryTransactionInDB(InventoryTransactionBase):
id: int
created_at: datetime
updated_at: datetime
transaction_items: List[InventoryTransactionItemInDB] = []
class Config:
from_attributes = True