62 lines
1.3 KiB
Python
62 lines
1.3 KiB
Python
from datetime import date, datetime
|
|
from typing import List, Optional
|
|
|
|
from pydantic import BaseModel
|
|
|
|
from app.models.transaction import TransactionType
|
|
|
|
|
|
class InventoryValueItem(BaseModel):
|
|
id: int
|
|
name: str
|
|
sku: str
|
|
quantity: int
|
|
price: float
|
|
total_value: float
|
|
|
|
|
|
class InventoryValueReport(BaseModel):
|
|
total_inventory_value: float
|
|
items: List[InventoryValueItem]
|
|
report_date: datetime = datetime.utcnow()
|
|
|
|
|
|
class CategorySummaryItem(BaseModel):
|
|
category_id: int
|
|
category_name: str
|
|
item_count: int
|
|
total_value: float
|
|
average_price: float
|
|
|
|
|
|
class CategorySummaryReport(BaseModel):
|
|
categories: List[CategorySummaryItem]
|
|
report_date: datetime = datetime.utcnow()
|
|
|
|
|
|
class LowStockItem(BaseModel):
|
|
id: int
|
|
name: str
|
|
sku: str
|
|
quantity: int
|
|
reorder_level: int
|
|
category_name: Optional[str] = None
|
|
|
|
|
|
class LowStockReport(BaseModel):
|
|
low_stock_items: List[LowStockItem]
|
|
report_date: datetime = datetime.utcnow()
|
|
|
|
|
|
class TransactionSummaryItem(BaseModel):
|
|
transaction_type: TransactionType
|
|
count: int
|
|
total_quantity: int
|
|
total_value: Optional[float] = None
|
|
|
|
|
|
class TransactionSummaryReport(BaseModel):
|
|
start_date: date
|
|
end_date: date
|
|
transactions: List[TransactionSummaryItem]
|
|
report_date: datetime = datetime.utcnow() |