Automated Action 54bf9880b9 Implement Small Business Inventory Management System
This commit implements a comprehensive inventory management system for small businesses using FastAPI and SQLAlchemy. Features include:
- Product and category management
- Inventory tracking across multiple locations
- Supplier management
- Purchase management
- Transaction tracking for inventory movements
- Complete API documentation

generated with BackendIM... (backend.im)
2025-05-12 12:55:31 +00:00

47 lines
1.9 KiB
Python

from sqlalchemy import Column, String, Float, Integer, Text, Boolean, ForeignKey, DateTime
from sqlalchemy.orm import relationship
from app.models.base import BaseModel
class Supplier(BaseModel):
"""Supplier model"""
__tablename__ = "suppliers"
name = Column(String(255), nullable=False, index=True)
contact_name = Column(String(100), nullable=True)
email = Column(String(255), nullable=True)
phone = Column(String(20), nullable=True)
address = Column(Text, nullable=True)
notes = Column(Text, nullable=True)
is_active = Column(Boolean, default=True)
# Relationships
purchases = relationship("Purchase", back_populates="supplier")
class Purchase(BaseModel):
"""Purchase model for orders from suppliers"""
__tablename__ = "purchases"
supplier_id = Column(Integer, ForeignKey("suppliers.id"), nullable=False)
reference_number = Column(String(100), nullable=True, unique=True)
order_date = Column(DateTime, nullable=True)
delivery_date = Column(DateTime, nullable=True)
total_amount = Column(Float, nullable=False, default=0)
notes = Column(Text, nullable=True)
# Relationships
supplier = relationship("Supplier", back_populates="purchases")
purchase_items = relationship("PurchaseItem", back_populates="purchase")
class PurchaseItem(BaseModel):
"""Purchase item model for items in a purchase"""
__tablename__ = "purchase_items"
purchase_id = Column(Integer, ForeignKey("purchases.id"), nullable=False)
product_id = Column(Integer, ForeignKey("products.id"), nullable=False)
quantity = Column(Float, nullable=False)
unit_price = Column(Float, nullable=False)
total_price = Column(Float, nullable=False)
# Relationships
purchase = relationship("Purchase", back_populates="purchase_items")
product = relationship("Product", back_populates="purchase_items")