93 lines
1.7 KiB
Python

from typing import Optional, List
from pydantic import BaseModel, Field
class ItemBase(BaseModel):
sku: Optional[str] = None
name: Optional[str] = None
description: Optional[str] = None
quantity: Optional[int] = 0
reorder_level: Optional[int] = 5
unit_price: Optional[float] = None
category_id: Optional[int] = None
supplier_id: Optional[int] = None
location: Optional[str] = None
is_active: Optional[bool] = True
class ItemCreate(ItemBase):
sku: str
name: str
unit_price: float
class ItemUpdate(ItemBase):
pass
class ItemInDBBase(ItemBase):
id: int
class Config:
from_attributes = True
class Item(ItemInDBBase):
pass
class TransactionItemBase(BaseModel):
item_id: int
quantity: int
unit_price: float
class TransactionItemCreate(TransactionItemBase):
pass
class TransactionItemUpdate(TransactionItemBase):
pass
class TransactionItemInDBBase(TransactionItemBase):
id: int
transaction_id: int
class Config:
from_attributes = True
class TransactionItem(TransactionItemInDBBase):
pass
class TransactionBase(BaseModel):
transaction_type: str
reference_number: Optional[str] = None
notes: Optional[str] = None
class TransactionCreate(TransactionBase):
items: List[TransactionItemCreate]
class TransactionUpdate(TransactionBase):
pass
class TransactionInDBBase(TransactionBase):
id: int
class Config:
from_attributes = True
class Transaction(TransactionInDBBase):
items: List[TransactionItem] = []
class InventoryAdjustment(BaseModel):
item_id: int
quantity: int = Field(..., description="Positive for additions, negative for subtractions")
reason: Optional[str] = None