110 lines
4.3 KiB
Markdown
110 lines
4.3 KiB
Markdown
# Column Rename: finish_date → end_date
|
|
|
|
## Overview
|
|
Renamed the `finish_date` column to `end_date` across the entire billing module for better semantic clarity. The column represents when a server's subscription ends/expires, so "end_date" is more descriptive.
|
|
|
|
## Files Modified
|
|
|
|
### Database Schema
|
|
1. **module.php** - Line 77
|
|
- Updated schema definition: `finish_date` DATETIME NULL → `end_date` DATETIME NULL
|
|
|
|
2. **migration_to_invoices.sql**
|
|
- Line 26: Updated AFTER clause in ADD COLUMN statement
|
|
- Lines 49-60: Updated column conversion logic from VARCHAR to DATETIME
|
|
- All references to the column name updated
|
|
|
|
### PHP Application Code
|
|
3. **cron-shop.php** (19 occurrences)
|
|
- Lines 78-80: Updated query conditions checking end_date IS NOT NULL
|
|
- Lines 97, 121, 124: Updated email notification date formatting
|
|
- Lines 142, 150-151: Updated suspension query conditions
|
|
- Lines 218, 226-227: Updated deletion query conditions
|
|
- Lines 283, 288: Updated legacy code comments and queries
|
|
- Lines 301, 304: Updated developer notes
|
|
- Lines 336, 341: Updated suspension logic
|
|
- Line 395: Updated final cleanup query
|
|
|
|
4. **cart.php** (14 occurrences)
|
|
- Lines 89-106: Updated variable names from $finish_date to $end_date
|
|
- Line 111: Updated column existence check
|
|
- Lines 117, 119, 121, 127: Updated SQL UPDATE statements
|
|
- Line 148-149: Updated audit logging
|
|
|
|
5. **my_account.php** (4 occurrences)
|
|
- Line 128: Updated SELECT query field
|
|
- Line 328: Updated display formatting (3 references in same line)
|
|
|
|
6. **my_servers.php** (2 occurrences)
|
|
- Line 43: Updated SQL comment
|
|
- Line 44: Updated column alias
|
|
|
|
7. **admin_invoices.php** (1 occurrence)
|
|
- Line 99: Updated display column
|
|
|
|
8. **add_to_cart.php** (10 occurrences)
|
|
- Lines 134-151: Updated variable names, column checks, INSERT queries, logging
|
|
|
|
9. **create_servers.php** (12 occurrences)
|
|
- Line 244: Updated condition check
|
|
- Lines 295-296: Updated comments
|
|
- Lines 301-330: Updated variable names in date calculation logic
|
|
- Line 342: Updated SET clause in UPDATE query (2 references)
|
|
|
|
10. **payment_success.php** (11 occurrences)
|
|
- Lines 35-102: Updated all references in payment processing logic
|
|
- Variable renamed: $finish_date_val → $end_date_val
|
|
- Updated column existence checks and SQL generation
|
|
|
|
### Documentation
|
|
11. **INVOICE_SYSTEM.md** (6 occurrences)
|
|
- Line 27: Updated field description
|
|
- Line 67: Updated workflow documentation
|
|
- Line 74: Updated renewal process
|
|
- Line 84: Updated expiration logic
|
|
- Line 113: Updated payment completion notes
|
|
- Line 124: Updated My Account display notes
|
|
|
|
12. **MIGRATION_SUMMARY.md** (4 occurrences)
|
|
- Line 11: Updated changelog entry
|
|
- Line 18: Updated bug fix description
|
|
- Lines 30, 36: Updated cron process descriptions
|
|
- Line 87: Updated SQL schema example
|
|
- Line 141: Updated verification notes
|
|
|
|
## Database Impact
|
|
|
|
### For Fresh Installations
|
|
- New installations will create the `ogp_billing_orders` table with `end_date` DATETIME NULL
|
|
|
|
### For Existing Installations
|
|
- Run the updated `migration_to_invoices.sql` script
|
|
- The script will handle the column rename automatically using dynamic SQL:
|
|
```sql
|
|
-- Checks if column exists as 'finish_date' and renames to 'end_date'
|
|
-- Then converts data type from VARCHAR to DATETIME
|
|
```
|
|
|
|
## Testing Checklist
|
|
- [x] Module schema updated (module.php)
|
|
- [x] Migration script updated (migration_to_invoices.sql)
|
|
- [x] All PHP files using the column updated
|
|
- [x] All SQL queries updated
|
|
- [x] All variable names updated
|
|
- [x] All comments and documentation updated
|
|
- [x] Verified no remaining `finish_date` references (except log files)
|
|
|
|
## Backwards Compatibility
|
|
⚠️ **BREAKING CHANGE**: This rename requires running the migration script on existing databases.
|
|
|
|
**Migration Path:**
|
|
1. Backup database
|
|
2. Run updated `migration_to_invoices.sql`
|
|
3. The script will automatically rename `finish_date` to `end_date`
|
|
4. Verify column exists: `SHOW COLUMNS FROM ogp_billing_orders LIKE 'end_date';`
|
|
|
|
## Notes
|
|
- Log files may still contain old references to `finish_date` - this is expected and harmless
|
|
- The semantic meaning of the column is unchanged (server expiration date)
|
|
- All date calculations remain identical
|
|
- No functional changes, only naming improvement for clarity
|