""" Additional models for complete legacy system coverage """ from sqlalchemy import Column, Integer, String, Text, Date, Float, ForeignKey from sqlalchemy.orm import relationship from app.models.base import BaseModel class Deposit(BaseModel): """ Daily bank deposit summaries Corresponds to DEPOSITS table in legacy system """ __tablename__ = "deposits" deposit_date = Column(Date, primary_key=True, index=True) total = Column(Float, nullable=False, default=0.0) notes = Column(Text) # Relationships payments = relationship("Payment", back_populates="deposit", cascade="all, delete-orphan") def __repr__(self): return f"" class Payment(BaseModel): """ Individual payments within deposits Corresponds to PAYMENTS table in legacy system """ __tablename__ = "payments" id = Column(Integer, primary_key=True, autoincrement=True) deposit_date = Column(Date, ForeignKey("deposits.deposit_date"), nullable=False) file_no = Column(String(45), ForeignKey("files.file_no"), nullable=True) client_id = Column(String(80), ForeignKey("rolodex.id"), nullable=True) regarding = Column(Text) amount = Column(Float, nullable=False, default=0.0) note = Column(Text) # Relationships deposit = relationship("Deposit", back_populates="payments") file = relationship("File", back_populates="payments") client = relationship("Rolodex", back_populates="payments") def __repr__(self): return f"" class FileNote(BaseModel): """ Case file notes and memos Corresponds to FILENOTS table in legacy system """ __tablename__ = "file_notes" id = Column(Integer, primary_key=True, autoincrement=True) file_no = Column(String(45), ForeignKey("files.file_no"), nullable=False, index=True) memo_date = Column(Date, nullable=False, index=True) memo_note = Column(Text, nullable=False) # Relationships file = relationship("File", back_populates="notes") def __repr__(self): return f"" class FormVariable(BaseModel): """ Document template variables for form generation Corresponds to FVARLKUP table in legacy system """ __tablename__ = "form_variables" identifier = Column(String(100), primary_key=True, index=True) query = Column(String(500), nullable=False) response = Column(Text) active = Column(Integer, default=1) # Legacy system uses integer for boolean def __repr__(self): return f"" class ReportVariable(BaseModel): """ Report template variables for report generation Corresponds to RVARLKUP table in legacy system """ __tablename__ = "report_variables" identifier = Column(String(100), primary_key=True, index=True) query = Column(String(500), nullable=False) active = Column(Integer, default=1) # Legacy system uses integer for boolean def __repr__(self): return f""