templates: add multi-category filter (repeatable or CSV) to GET /api/templates/search; add has_keywords filter; add categories listing endpoint with counts; update docs; add tests
This commit is contained in:
411
docs/LEGACY_SYSTEM_ANALYSIS.md
Normal file
411
docs/LEGACY_SYSTEM_ANALYSIS.md
Normal file
@@ -0,0 +1,411 @@
|
||||
# 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.
|
||||
Reference in New Issue
Block a user