felicity-lims/felicity/apps/inventory/schemas.py
2023-05-11 20:32:50 +02:00

294 lines
5.9 KiB
Python

from datetime import datetime
from typing import Optional
from apps.common.schemas import BaseAuditModel
from apps.setup.schemas import Department, Supplier
from apps.storage.schemas import StoreRoom
from 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
class Config:
orm_mode = 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
class Config:
orm_mode = 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
class Config:
orm_mode = 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
class Config:
orm_mode = 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
class Config:
orm_mode = 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: datetime | None = None
expiry_date: datetime | None = None
received_by_uid: str| None = None
received_by: Optional[User] = None
class StockProduct(StockProductBase):
uid: str| None = None
class Config:
orm_mode = 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
class StockOrder(StockOrderBase):
uid: str| None = None
class Config:
orm_mode = 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
class Config:
orm_mode = 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
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
class Config:
orm_mode = 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
class Config:
orm_mode = True
class StockAdjustmentCreate(StockAdjustmentBase):
pass
class StockAdjustmentUpdate(StockAdjustmentBase):
pass