from datetime import datetime import enum from sqlalchemy import Column, DateTime, Enum, Float, ForeignKey, Integer, String from sqlalchemy.orm import relationship from app.db.base import Base class TransactionType(str, enum.Enum): """ Enum for transaction types (stock in or out). """ STOCK_IN = "stock_in" STOCK_OUT = "stock_out" class Transaction(Base): """ Transaction model for tracking inventory movements. """ __tablename__ = "transactions" id = Column(Integer, primary_key=True, index=True) quantity = Column(Integer, nullable=False) transaction_type = Column(Enum(TransactionType), nullable=False) unit_price = Column(Float, nullable=False) total_price = Column(Float, nullable=False) reference = Column(String, nullable=True) notes = Column(String, nullable=True) timestamp = Column(DateTime, default=datetime.utcnow, nullable=False) # Foreign keys item_id = Column(Integer, ForeignKey("items.id"), nullable=False) user_id = Column(Integer, ForeignKey("users.id"), nullable=False) # Relationships item = relationship("Item", back_populates="transactions") user = relationship("User", back_populates="transactions")