smallbusinessinventorymanag.../app/models/inventory_movement.py

32 lines
1.0 KiB
Python

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")