felicity-lims/felicity/apps/inventory/schemas.py
Aurthur Musendame 9352b91fac formated code
2024-02-16 17:48:19 +02:00

289 lines
6.2 KiB
Python

from datetime import date, datetime
from typing import Optional
from pydantic import ConfigDict
from felicity.apps.common.schemas import BaseAuditModel
from felicity.apps.setup.schemas import Department, Supplier
from felicity.apps.storage.schemas import StoreRoom
from felicity.apps.user.schemas import User
#
# StockItem Schemas
#
class StockItemBase(BaseAuditModel):
"""StockItem Standardization"""
name: str | None = None
description: str | None = None
department_uid: str | None = None
department: Optional[Department] = None
minimum_level: int | None = None
maximum_level: int | None = None
class StockItem(StockItemBase):
uid: str | None = None
model_config = ConfigDict(from_attributes=True)
class StockItemCreate(StockItemBase):
pass
class StockItemUpdate(StockItemBase):
pass
#
# StockCategory Schemas
#
class StockCategoryBase(BaseAuditModel):
"""StockCategory
Consumable, Reagents, Durables
"""
name: str | None = None
description: str | None = None
class StockCategory(StockCategoryBase):
uid: str | None = None
model_config = ConfigDict(from_attributes=True)
class StockCategoryCreate(StockCategoryBase):
pass
class StockCategoryUpdate(StockCategoryBase):
pass
#
# Hazard Schemas
#
class HazardBase(BaseAuditModel):
"""Hazard"""
name: str | None = None
description: str | None = None
class Hazard(HazardBase):
uid: str | None = None
model_config = ConfigDict(from_attributes=True)
class HazardCreate(HazardBase):
pass
class HazardUpdate(HazardBase):
pass
#
# StockUnit Schemas
#
class StockUnitBase(BaseAuditModel):
name: str | None = None
class StockUnit(StockUnitBase):
uid: str | None = None
model_config = ConfigDict(from_attributes=True)
class StockUnitCreate(StockUnitBase):
pass
class StockUnitUpdate(StockUnitBase):
pass
#
# StockPackaging Schemas
#
class StockPackagingBase(BaseAuditModel):
name: str | None = None
class StockPackaging(StockPackagingBase):
uid: str | None = None
model_config = ConfigDict(from_attributes=True)
class StockPackagingCreate(StockPackagingBase):
pass
class StockPackagingUpdate(StockPackagingBase):
pass
#
# StockProduct Schemas
#
class StockProductBase(BaseAuditModel):
name: str | None = None
stock_item_uid: str | None = None
department_uid: str | None = None
department: Optional[Department] = None
supplier_uid: str | None = None
supplier: Optional[Supplier] = None
category_uid: str | None = None
category: Optional[StockCategory] = None
hazard_uid: str | None = None
hazard: Optional[Hazard] = None
store_room_uid: str | None = None
store_room: Optional[StoreRoom] = None
lot_number: str | None = None
batch: str | None = None
size: float | None = None
unit_uid: str | None = None
unit: Optional[StockUnit] = None
packaging_uid: str | None = None
packaging: Optional[StockPackaging] = None
price: float | None = None
quantity_received: int | None = None
remaining: int | None = None
date_received: date | None = None
expiry_date: date | None = None
received_by_uid: str | None = None
received_by: Optional[User] = None
class StockProduct(StockProductBase):
uid: str | None = None
model_config = ConfigDict(from_attributes=True)
class StockProductCreate(StockProductBase):
pass
class StockProductUpdate(StockProductBase):
pass
#
# StockOrder Schemas
#
class StockOrderBase(BaseAuditModel):
order_by_uid: str | None = None
order_by: Optional[User] = None
department_uid: str | None = None
department: Optional[Department] = None
status: str | None = None
order_number: str | None = None
remarks: str | None = None
fulfilled_by_uid: str | None = None
fulfilled_by: Optional[User] = None
class StockOrder(StockOrderBase):
uid: str | None = None
model_config = ConfigDict(from_attributes=True)
class StockOrderCreate(StockOrderBase):
pass
class StockOrderUpdate(StockOrderBase):
pass
#
# StockOrderProduct Schemas
#
class StockOrderProductBase(BaseAuditModel):
product_uid: str | None = None
product: Optional[StockProduct] = None
order_uid: str | None = None
order: Optional[StockOrder] = None
price: float | None = None
quantity: int | None = None
remarks: str | None = None
class StockOrderProduct(StockOrderProductBase):
uid: str | None = None
model_config = ConfigDict(from_attributes=True)
class StockOrderProductCreate(StockOrderProductBase):
pass
class StockOrderProductUpdate(StockOrderProductBase):
pass
#
# StockTransaction Schemas
#
class StockTransactionBase(BaseAuditModel):
product_uid: str | None = None
product: Optional[StockProduct] = None
issued: int | None = None
issued_to_uid: str | None = None
issued_to: Optional[User] = None
department_uid: str | None = None
department: Optional[Department] = None
date_issued: datetime | None = None
transaction_by_uid: str | None = None
transaction_by: Optional[User] = None
class StockTransaction(StockTransactionBase):
uid: str | None = None
model_config = ConfigDict(from_attributes=True)
class StockTransactionCreate(StockTransactionBase):
pass
class StockTransactionUpdate(StockTransactionBase):
pass
#
# StockAdjustment Schemas
#
class StockAdjustmentBase(BaseAuditModel):
product_uid: str | None = None
product: Optional[StockProduct] = None
adjustment_type: str | None = None
adjust: int | None = None
adjustment_date: datetime | None = None
remarks: str | None = None
adjustment_by_uid: str | None = None
adjustment_by: Optional[User] = None
class StockAdjustment(StockAdjustmentBase):
uid: str | None = None
model_config = ConfigDict(from_attributes=True)
class StockAdjustmentCreate(StockAdjustmentBase):
pass
class StockAdjustmentUpdate(StockAdjustmentBase):
pass