34 lines
1.3 KiB
Python
34 lines
1.3 KiB
Python
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"<MovimientoTimbre {self.tipo} - Cantidad: {self.cantidad} - Cliente: {self.cliente_id}>"
|