Files
delphi-database/app/models/rolodex.py
HotSwapp ae4484381f progress
2025-08-16 10:05:42 -05:00

66 lines
2.5 KiB
Python

"""
Rolodex (Customer/Client) models based on legacy ROLODEX.SC analysis
"""
from sqlalchemy import Column, Integer, String, Date, Text, ForeignKey
from sqlalchemy.orm import relationship
from app.models.base import BaseModel
class Rolodex(BaseModel):
"""
Customer/Client information table
Corresponds to ROLODEX table in legacy system
"""
__tablename__ = "rolodex"
id = Column(String(80), primary_key=True, index=True) # Unique key from legacy
last = Column(String(80), nullable=False, index=True) # Last name or company
first = Column(String(45)) # First name
middle = Column(String(45)) # Middle name or initial
prefix = Column(String(45)) # Title like Mr., Ms., Dr.
suffix = Column(String(45)) # Jr., Sr., M.D., etc.
title = Column(String(45)) # Official title/position
group = Column(String(45)) # Client, opposing counsel, personal, etc.
# Address fields
a1 = Column(String(45)) # Address line 1 or firm name
a2 = Column(String(45)) # Address line 2
a3 = Column(String(45)) # Address line 3
city = Column(String(80)) # City
abrev = Column(String(45)) # State abbreviation
zip = Column(String(45)) # Zip code
# Contact info
email = Column(String(100)) # Email address
# Personal info
dob = Column(Date) # Date of birth
ss_number = Column(String(20)) # Social Security Number
legal_status = Column(String(45)) # Petitioner/Respondent, etc.
# Notes
memo = Column(Text) # Notes for this rolodex entry
# Relationships
phone_numbers = relationship("Phone", back_populates="rolodex_entry", cascade="all, delete-orphan")
files = relationship("File", back_populates="owner")
payments = relationship("Payment", back_populates="client")
billing_statements = relationship("BillingStatement", back_populates="customer")
timers = relationship("Timer", back_populates="customer")
time_entries = relationship("TimeEntry", back_populates="customer")
class Phone(BaseModel):
"""
Phone numbers linked to rolodex entries
Corresponds to PHONE table in legacy system
"""
__tablename__ = "phone"
id = Column(Integer, primary_key=True, autoincrement=True)
rolodex_id = Column(String(80), ForeignKey("rolodex.id"), nullable=False)
location = Column(String(45)) # Office, Home, Mobile, etc.
phone = Column(String(45), nullable=False) # Phone number
# Relationships
rolodex_entry = relationship("Rolodex", back_populates="phone_numbers")