|
from sqlalchemy.orm import Session
|
|
from database import Product, Transaction
|
|
import uuid
|
|
from datetime import datetime
|
|
|
|
def add_product(db: Session, name: str, current_stock: float, safety_stock: float, lead_time: float, monthly_demand: float, product_class: str):
|
|
product = Product(name=name, current_stock=current_stock, safety_stock=safety_stock, lead_time=lead_time, monthly_demand=monthly_demand, product_class=product_class)
|
|
db.add(product)
|
|
db.commit()
|
|
db.refresh(product)
|
|
return product
|
|
|
|
def get_all_products(db: Session):
|
|
return db.query(Product).all()
|
|
|
|
def get_product_by_id(db: Session, product_id: int):
|
|
product = db.query(Product).filter(Product.id == product_id).first()
|
|
if not product:
|
|
raise ValueError("Product not found")
|
|
return product
|
|
|
|
|
|
def add_product_memory(session_products: list, name: str, current_stock: float, safety_stock: float, lead_time: float, monthly_demand: float, product_class: str):
|
|
if any(p["name"].lower() == name.lower() for p in session_products):
|
|
raise ValueError("Product name already exists in your session")
|
|
product = {"id": str(uuid.uuid4()), "name": name, "current_stock": current_stock, "safety_stock": safety_stock, "lead_time": lead_time, "monthly_demand": monthly_demand, "product_class": product_class}
|
|
session_products.append(product)
|
|
return product
|
|
|
|
def update_product_memory(session_products: list, product_id: str, name: str, current_stock: float, safety_stock: float, lead_time: float, monthly_demand: float, product_class: str):
|
|
if any(p["name"].lower() == name.lower() and p["id"] != product_id for p in session_products):
|
|
raise ValueError("Product name already exists in your session")
|
|
for product in session_products:
|
|
if product["id"] == product_id:
|
|
product.update({"name": name, "current_stock": current_stock, "safety_stock": safety_stock, "lead_time": lead_time, "monthly_demand": monthly_demand, "product_class": product_class})
|
|
return product
|
|
raise ValueError("Product not found")
|
|
|
|
def delete_product_memory(session_products: list, product_id: str):
|
|
for i, product in enumerate(session_products):
|
|
if product["id"] == product_id:
|
|
session_products.pop(i)
|
|
return
|
|
raise ValueError("Product not found")
|
|
|
|
def add_stock_memory(session_products: list, session_transactions: list, product_id: str, quantity: float):
|
|
for product in session_products:
|
|
if product["id"] == product_id:
|
|
product["current_stock"] += quantity
|
|
session_transactions.append({"id": str(uuid.uuid4()), "product_id": product_id, "quantity": quantity, "transaction_type": "ADD", "timestamp": datetime.now()})
|
|
return
|
|
raise ValueError("Product not found")
|
|
|
|
def remove_stock_memory(session_products: list, session_transactions: list, product_id: str, quantity: float):
|
|
for product in session_products:
|
|
if product["id"] == product_id:
|
|
if product["current_stock"] < quantity:
|
|
raise ValueError("Insufficient stock")
|
|
product["current_stock"] -= quantity
|
|
session_transactions.append({"id": str(uuid.uuid4()), "product_id": product_id, "quantity": quantity, "transaction_type": "REMOVE", "timestamp": datetime.now()})
|
|
return
|
|
raise ValueError("Product not found")
|
|
|
|
def get_transactions_memory(session_transactions: list):
|
|
return session_transactions |