import enum from sqlalchemy import Column, DateTime, Enum, Float, ForeignKey, Integer, String, Text from sqlalchemy.orm import relationship from sqlalchemy.sql import func from app.db.base import Base class MovementType(str, enum.Enum): STOCK_IN = "STOCK_IN" STOCK_OUT = "STOCK_OUT" ADJUSTMENT = "ADJUSTMENT" RETURN = "RETURN" class InventoryMovement(Base): __tablename__ = "inventory_movements" id = Column(String, primary_key=True, index=True) product_id = Column(String, ForeignKey("products.id"), nullable=False) quantity = Column(Integer, nullable=False) type = Column(Enum(MovementType), nullable=False) reference = Column(String, nullable=True) notes = Column(Text, nullable=True) unit_price = Column(Float, nullable=True) created_by = Column(String, ForeignKey("users.id"), nullable=True) created_at = Column(DateTime(timezone=True), server_default=func.now()) # Relationships product = relationship("Product", back_populates="inventory_movements")