411 lines
14 KiB
Markdown
411 lines
14 KiB
Markdown
# Legacy System Analysis: Delphi Consulting Group Database
|
||
|
||
## Executive Summary
|
||
|
||
This document provides a comprehensive analysis of the legacy Paradox-based database system used by Delphi Consulting Group, based on examination of the .sc (script) files found in the `old database` folder. The legacy system was a sophisticated legal practice management application specialized for family law attorneys handling divorce cases involving pension plan division (QDROs).
|
||
|
||
## System Architecture Overview
|
||
|
||
### Technology Stack
|
||
- **Platform**: Paradox Database Management System
|
||
- **Language**: PAL (Paradox Application Language)
|
||
- **Integration**: WordPerfect document assembly
|
||
- **File Structure**: Modular .SC script files with shared procedure library
|
||
|
||
### Core Directory Structure
|
||
```
|
||
R:\PDOXDATA\OFFICE\ # Main data directory
|
||
R:\DOCUMENT\WPDOCS\ # WordPerfect documents
|
||
R:\PRIVATE\ # Temporary/merge files
|
||
OFFICE.LIB # Shared procedure library
|
||
```
|
||
|
||
## Module-by-Module Analysis
|
||
|
||
### 1. Main Application Entry (`Main_RH.SC`)
|
||
|
||
**Purpose**: Application bootstrap and main menu system
|
||
|
||
**Key Features**:
|
||
- Splash screen with company branding
|
||
- Hierarchical pulldown menu system
|
||
- Library and configuration management
|
||
- Keyboard shortcut definitions
|
||
|
||
**Menu Structure**:
|
||
```
|
||
Open
|
||
├── Rolodex (contact management)
|
||
├── File Cabinet (case management)
|
||
├── QDRO Screen (pension division documents)
|
||
├── Plan Information (retirement plan database)
|
||
├── Annuity Evaluator (present value calculations)
|
||
└── Deposit Book (banking records)
|
||
|
||
Utilities
|
||
├── Basic Data (lookup tables)
|
||
└── Tally Accounts (financial reconciliation)
|
||
|
||
System
|
||
├── Customize (letterhead/branding)
|
||
└── Printers (output configuration)
|
||
```
|
||
|
||
**Startup Sequence**:
|
||
1. Load procedure library (OFFICE.LIB)
|
||
2. Initialize directory paths and variables
|
||
3. Display animated splash screen
|
||
4. Launch main menu loop
|
||
5. Handle user selections via switch statements
|
||
|
||
### 2. Contact Management (`ROLODEX.SC`)
|
||
|
||
**Purpose**: Comprehensive contact database for clients, opposing counsel, and related parties
|
||
|
||
**Data Structure**:
|
||
- **Primary Table**: Rolodex (main contact info)
|
||
- **Related Tables**: Phone (multiple numbers per contact)
|
||
- **Indexing**: By ID, last name, group classification
|
||
|
||
**Key Features**:
|
||
|
||
**Multi-Form Interface**:
|
||
- Form 1: Standard contact entry
|
||
- Form 4: Detailed view with extended information
|
||
- Alt-F: Toggle between forms
|
||
|
||
**Search Capabilities**:
|
||
- Multi-criteria search dialog
|
||
- ID, name, address, phone number filters
|
||
- Group-based filtering (client, opposing counsel, personal)
|
||
- Phone number cross-referencing
|
||
|
||
**Integration Points**:
|
||
- File cabinet owner/opposing party lookups
|
||
- Document assembly merge fields
|
||
- Envelope and label generation
|
||
- Phone book report generation
|
||
|
||
**Report Types**:
|
||
- Envelope generation
|
||
- Phone book (numbers only)
|
||
- Phone book with addresses
|
||
- Complete rolodex information
|
||
|
||
### 3. File Cabinet System (`FILCABNT.SC`)
|
||
|
||
**Purpose**: Case management with integrated time and billing
|
||
|
||
**Architecture**: Master-Detail relationship
|
||
- **Master**: Files table (case information, account summaries)
|
||
- **Detail**: Ledger table (time entries, disbursements, payments)
|
||
|
||
**File Management Features**:
|
||
|
||
**Case Information**:
|
||
- Unique file numbers
|
||
- Client assignment (linked to Rolodex)
|
||
- Area of law classification
|
||
- Open/close date tracking
|
||
- Status management (ACTIVE, INACTIVE, FOLLOW UP, etc.)
|
||
- Opposing counsel assignment
|
||
- Billing rate assignment by employee
|
||
|
||
**Account Management**:
|
||
- Real-time balance calculations
|
||
- Trust account tracking
|
||
- Hourly fees, flat fees, disbursements
|
||
- Credit/payment tracking
|
||
- Transferable amount calculations (trust → fees)
|
||
- Previously billed vs. current balance separation
|
||
|
||
**Advanced Features**:
|
||
|
||
**Time Tracking**:
|
||
- Built-in timer (Alt-T start/stop)
|
||
- Elapsed time display with hours:minutes:seconds
|
||
- Automatic time entry integration
|
||
|
||
**Account Operations**:
|
||
- Account closure (Alt-C): Automatically closes file and creates payment entry
|
||
- Account reopening (Alt-R): Reverses closure process
|
||
- Balance summarization (Alt-B): Popup with detailed breakdowns
|
||
|
||
**Search and Reporting**:
|
||
- Complex multi-criteria search
|
||
- Account balance filters
|
||
- File status filtering (SEND/HOLD for statement printing)
|
||
- Multiple report formats (detailed, summary, statements)
|
||
|
||
### 4. Ledger/Billing System (`LEDGER.SC`)
|
||
|
||
**Purpose**: Transaction-level time and billing management
|
||
|
||
**Transaction Types**:
|
||
1. **Type 1**: Trust account entries
|
||
2. **Type 2**: Hourly time entries (quantity × rate)
|
||
3. **Type 3**: Flat fee charges
|
||
4. **Type 4**: Disbursements/expenses
|
||
5. **Type 5**: Credits/payments
|
||
|
||
**Data Entry Features**:
|
||
|
||
**Automatic Calculations**:
|
||
- Quantity × Rate = Amount for hourly entries
|
||
- Employee rate lookups from Employee table
|
||
- Real-time amount recalculation on field changes
|
||
|
||
**Validation and Business Rules**:
|
||
- Required fields: Date, Transaction Code, Employee, Amount
|
||
- Automatic item number assignment (handles key violations)
|
||
- Billed status tracking (Y/N)
|
||
- Default employee assignment from parent file
|
||
|
||
**Advanced Entry Features**:
|
||
- Insert new records (INS key) with date inheritance
|
||
- Quick billed status toggle (Alt-Y/Alt-N)
|
||
- Date increment/decrement (+/- keys)
|
||
- Integrated balance summarization
|
||
|
||
**Account Reconciliation**:
|
||
- Real-time account total updates on record changes
|
||
- Separation of billed vs. unbilled amounts
|
||
- Trust account balance calculations
|
||
- Transferable amount determination
|
||
|
||
### 5. QDRO Module (`QDRO.SC`)
|
||
|
||
**Purpose**: Qualified Domestic Relations Order document preparation
|
||
|
||
**Specialized Features**:
|
||
- QDRO-specific data entry forms
|
||
- Integration with document assembly system
|
||
- Version tracking for QDRO revisions
|
||
- User-specific output table generation
|
||
|
||
**Document Generation Process**:
|
||
1. Data entry in QDRO table
|
||
2. Copy to temporary output table (Q_Output or user-specific)
|
||
3. File number versioning ([File_No] + [Version])
|
||
4. Integration with form selection system
|
||
5. Automatic cleanup of temporary tables
|
||
|
||
### 6. Setup and Configuration (`SETUP.SC`)
|
||
|
||
**Purpose**: Lookup table management and system configuration
|
||
|
||
**Managed Tables**:
|
||
|
||
**Basic Data Tables**:
|
||
- **FileType**: Areas of law (divorce, personal injury, etc.)
|
||
- **Employee**: Attorney/staff information with billing rates
|
||
- **TrnsType**: Transaction groupings for accounting
|
||
- **Footers**: Statement footer text templates
|
||
- **GrupLkup**: Rolodex group classifications
|
||
- **TrnsLkup**: Transaction codes and descriptions
|
||
- **FileStat**: File status definitions with print settings
|
||
- **States**: State abbreviations and full names
|
||
- **Printers**: Printer configuration and setup strings
|
||
|
||
**Table Management Features**:
|
||
- Uniform editing interface across all lookup tables
|
||
- Field-specific prompts and help text
|
||
- Form-based entry with validation
|
||
- Print report capabilities for each table
|
||
- Context-sensitive speedbar help
|
||
|
||
**Special Processing**:
|
||
- **Deposits**: Automatic payment totaling
|
||
- **Date manipulation**: +/- key support for date fields
|
||
- **Printer setup**: Integration with printer configuration
|
||
|
||
### 7. Document Assembly System (`FORM_MGR.SC`)
|
||
|
||
**Purpose**: Sophisticated legal document generation system
|
||
|
||
**Architecture**:
|
||
- **Form Library**: Searchable database of document templates
|
||
- **Index System**: Keyword-based form categorization
|
||
- **Merge Process**: Data extraction and WordPerfect integration
|
||
|
||
**Form Management**:
|
||
|
||
**Form Selection Interface**:
|
||
- Directory browsing with form file listings
|
||
- Form description database integration
|
||
- Multi-form selection capabilities
|
||
- Search by name, description, status, keywords
|
||
|
||
**Search Capabilities**:
|
||
- Text-based searching (name, description, status)
|
||
- Keyword index searching with dynamic arrays
|
||
- Boolean search combinations
|
||
- User-friendly selection interface
|
||
|
||
**Document Generation Process**:
|
||
1. **Form Selection**: Browse and select multiple forms
|
||
2. **Data Extraction**: Query current data set for merge fields
|
||
3. **Configuration File**: Generate merge instruction file
|
||
4. **External Processing**: Execute DOS batch file (GO.BAT)
|
||
5. **WordPerfect Integration**: Automatic document assembly
|
||
|
||
**Technical Implementation**:
|
||
- Dynamic array management for form lists
|
||
- File system integration for template discovery
|
||
- Automatic data export for merge process
|
||
- Error handling for missing templates
|
||
|
||
### 8. Utility Functions (`UTILITY.SC`)
|
||
|
||
**Purpose**: Shared utility procedures used throughout the system
|
||
|
||
**Core Utilities**:
|
||
|
||
**Mode Management**:
|
||
- `Edit_Mode()`: Switch to data editing mode
|
||
- `Main_Mode()`: Return to read-only mode
|
||
- `Clear_Table()`: Exit current data view
|
||
|
||
**User Interface**:
|
||
- `Message_Box()`: Standard dialog messages
|
||
- `Yes_No_Cancel()`: Three-button confirmation dialogs
|
||
- `Response_Is_Yes()`: Binary confirmation dialogs
|
||
- `Sound_Off()`: Audio feedback system
|
||
|
||
**System Configuration**:
|
||
- `Get_Custom_Setup_Variables()`: Load company settings
|
||
- `Customize_Setup()`: Edit letterhead and branding
|
||
- Printer configuration and management
|
||
- Default printer selection
|
||
|
||
**Reporting Infrastructure**:
|
||
- `Print_Report()`: Universal report output handler
|
||
- Destination selection (printer/screen/file)
|
||
- Escape sequence processing for printer codes
|
||
- File output with overwrite protection
|
||
|
||
**Data Management**:
|
||
- `Organize()`: Archive file management (ARCHIVE status handling)
|
||
- `Update_Calendar()`: Appointment archival system
|
||
- Printer status checking and error handling
|
||
|
||
## Business Domain Analysis
|
||
|
||
### Legal Practice Specialization
|
||
|
||
**Target Market**: Family law attorneys specializing in divorce cases involving retirement benefit division
|
||
|
||
**Core Competencies**:
|
||
1. **QDRO Expertise**: Qualified Domestic Relations Orders for pension division
|
||
2. **Complex Asset Division**: Retirement plan valuation and division
|
||
3. **Time and Billing**: Specialized legal billing requirements
|
||
4. **Document Generation**: Automated legal document preparation
|
||
|
||
### Workflow Integration
|
||
|
||
**Typical Case Flow**:
|
||
1. **Client Intake**: Rolodex entry with contact information
|
||
2. **File Opening**: Create case file with billing parameters
|
||
3. **Time Tracking**: Record attorney/staff time with built-in timer
|
||
4. **Document Preparation**: Select and generate legal documents
|
||
5. **QDRO Drafting**: Specialized pension division order preparation
|
||
6. **Billing**: Generate statements and track payments
|
||
7. **Case Closure**: Automatic account reconciliation
|
||
|
||
### Advanced Features
|
||
|
||
**Financial Management**:
|
||
- Trust account IOLTA compliance tracking
|
||
- Separate billed/unbilled amount tracking
|
||
- Automatic transferable amount calculations
|
||
- Statement generation with customizable footers
|
||
|
||
**Document Automation**:
|
||
- Template library with keyword indexing
|
||
- Automated data merge with WordPerfect
|
||
- Version control for document revisions
|
||
- Batch document generation capabilities
|
||
|
||
## Technical Architecture Patterns
|
||
|
||
### Event-Driven Programming
|
||
- Standardized `WAIT WORKSPACE` event loops
|
||
- Consistent key binding patterns (F2=Save, F8=Clear, F9=Edit)
|
||
- Menu-driven interactions with hierarchical structure
|
||
- Trigger-based field and record validation
|
||
|
||
### Data Validation Framework
|
||
- Field-level validation on departure
|
||
- Record-level validation before posting
|
||
- Business rule enforcement (required fields, calculations)
|
||
- Automatic default value assignment
|
||
|
||
### Master-Detail Relationships
|
||
- Files ↔ Ledger (1:many) with automatic totaling
|
||
- Rolodex ↔ Phone (1:many) with contact integration
|
||
- Files ↔ Rolodex (many:1) for client/opposing party references
|
||
- Form ↔ Index (1:many) for document categorization
|
||
|
||
### Search and Query Patterns
|
||
- Dynamic query building with user criteria
|
||
- Complex multi-table joins for reporting
|
||
- Pattern matching with wildcard support
|
||
- Result set management with subset tables
|
||
|
||
### User Experience Design
|
||
- Context-sensitive help and prompts
|
||
- Consistent speedbar layouts
|
||
- Progressive disclosure in menu systems
|
||
- Modal dialog standardization
|
||
|
||
## Integration Points
|
||
|
||
### External System Integration
|
||
- **WordPerfect**: Document merge and generation
|
||
- **DOS**: Batch file execution for complex operations
|
||
- **Printer Systems**: Direct escape sequence management
|
||
- **File System**: Template and configuration file management
|
||
|
||
### Data Export/Import
|
||
- Configuration file generation for merges
|
||
- Report output to multiple formats (printer/screen/file)
|
||
- Automatic data extraction for document assembly
|
||
- Archive and reorganization utilities
|
||
|
||
## Performance and Scalability Considerations
|
||
|
||
### Database Design
|
||
- Indexed access patterns for fast lookups
|
||
- Efficient master-detail navigation
|
||
- Query optimization with selective criteria
|
||
- Memory management with dynamic arrays
|
||
|
||
### User Interface Responsiveness
|
||
- Immediate feedback for user actions
|
||
- Progress indicators for long operations
|
||
- Background processing for reports
|
||
- Efficient screen updates with ECHO control
|
||
|
||
## Security and Data Integrity
|
||
|
||
### Access Control
|
||
- User-based table access (seen in QDRO user checking)
|
||
- Function-level security through menu disabling
|
||
- Data validation to prevent corruption
|
||
|
||
### Backup and Recovery
|
||
- Archive table management for historical data
|
||
- Automatic data reorganization utilities
|
||
- Printer and configuration backup systems
|
||
|
||
## Conclusion
|
||
|
||
The legacy system represents a sophisticated, domain-specific application with deep understanding of legal practice management needs. Key strengths include:
|
||
|
||
1. **Specialized Legal Functionality**: QDRO expertise and legal document automation
|
||
2. **Integrated Financial Management**: Complex billing with trust account compliance
|
||
3. **Advanced User Interface**: Consistent, efficient data entry patterns
|
||
4. **Document Assembly Integration**: Sophisticated template and merge system
|
||
5. **Comprehensive Reporting**: Multiple output formats with printer management
|
||
|
||
The system demonstrates mature software architecture principles adapted to the constraints and capabilities of the Paradox platform, with particular excellence in the specialized domain of family law practice management. |