from sqlalchemy import Column, Integer, String, DateTime, ForeignKey, Enum as SQLEnum from sqlalchemy.orm import relationship from sqlalchemy.sql import func from app.database import Base from app.models.enums import TipoMovimiento class MovimientoTimbre(Base): __tablename__ = "movimientos_timbres" id = Column(Integer, primary_key=True, index=True) cliente_id = Column(Integer, ForeignKey("clientes.id"), nullable=False) subcliente_id = Column(Integer, ForeignKey("subclientes.id"), nullable=True) tipo = Column(SQLEnum(TipoMovimiento), nullable=False) cantidad = Column(Integer, nullable=False) # Información adicional descripcion = Column(String(500)) referencia_externa = Column(String(255), index=True) # ID de la firma/timbre en el sistema externo # Balances después del movimiento balance_cliente = Column(Integer, nullable=False) # Timestamps created_at = Column(DateTime(timezone=True), server_default=func.now()) # Relaciones cliente = relationship("Cliente", back_populates="movimientos") subcliente = relationship("SubCliente", back_populates="movimientos") def __repr__(self): return f""