# πŸŽ‰ Custom Recurring Expenses - Feature Summary ## What's New ### ✨ Custom Frequency Intervals - **Any interval you want**: Not limited to weekly/monthly - **Examples**: Every 45 days, every 10 days, every 3 days - **Perfect for**: Unusual billing cycles, medication refills, custom contracts ### πŸ“… Advanced Scheduling - **Start Date**: When subscription begins - **End Date**: Automatic deactivation after date - **Total Payments**: Limit number of occurrences - **Occurrence Counter**: Track how many times paid ### ⚑ Auto-Create Expenses - **Automatic**: Creates expenses on due date - **Manual Control**: Click button to trigger - **Safe**: Only creates once per day, respects limits - **Convenient**: No more forgetting to log recurring expenses ## Quick Comparison ### Before (Basic Subscriptions) ``` βœ— Only weekly/monthly/quarterly/yearly βœ— Manual expense creation required βœ— No end dates βœ— No payment limits βœ— Basic tracking only ``` ### After (Custom Recurring) ``` βœ“ Any custom interval (in days) βœ“ Auto-create expenses on due date βœ“ Set start and end dates βœ“ Limit total number of payments βœ“ Full automation with occurrence tracking ``` ## Real-World Examples ### Medication Refill ``` πŸ’Š Name: Blood Pressure Meds Amount: $25 Every: 30 days Limit: 6 refills Auto-Create: ON ⚑ ``` ### Gym Membership (12 months) ``` πŸ’ͺ Name: Fitness Center Amount: $50 Every: Monthly Total Payments: 12 End Date: Dec 31, 2025 Auto-Create: ON ⚑ ``` ### Car Maintenance ``` πŸš— Name: Oil Change Amount: $75 Every: 90 days (Custom) Start: Today Auto-Create: OFF (manual reminder) ``` ### Subscription Trial ``` πŸ“Ί Name: Streaming Service Amount: $14.99 Every: Monthly End Date: Mar 31, 2025 Auto-Create: ON ⚑ ``` ## How to Use ### Create Custom Subscription 1. Navigate to **Subscriptions** page 2. Click **βž• Add Subscription** 3. Fill in details: - Name & Amount - Choose "Custom" frequency (or standard) - Enter custom interval (if custom selected) - Set start date - Optional: Set end date or total payments - Check "Auto-Create Expenses" if desired 4. Click **Save** ### Auto-Create Expenses **Option 1 - Manual**: - Visit Subscriptions page - Click **⚑ Create Due Expenses** button - Expenses created instantly for today's due dates **Option 2 - Automation**: - Set up cron job (see guide) - Runs automatically daily - Zero manual effort ### Edit Existing Subscription 1. Click **Edit** on any subscription 2. Modify any field 3. Add/remove auto-create 4. Update dates or limits 5. Click **Save** ## New UI Elements ### Subscription List ``` πŸ”„ Netflix Premium ⚑ AUTO πŸ’° $19.99 / Monthly πŸ“… Next: Jan 15, 2025 πŸ“Š Annual: $239.88 [Edit] [Delete] ``` ### Custom Frequency Display ``` πŸ’° $75 / Every 45 days ``` ### Occurrence Counter ``` πŸ”’ 8/12 times (4 remaining) ``` ### Auto-Create Indicator ``` ⚑ AUTO badge - Green highlight Tooltip: "Expenses will be created automatically" ``` ## Database Changes ### New Fields | Field | Type | Purpose | |-------|------|---------| | `custom_interval_days` | INTEGER | Days between payments (for custom) | | `start_date` | DATE | First occurrence date | | `end_date` | DATE | Last allowed date (optional) | | `total_occurrences` | INTEGER | Payment limit (optional) | | `occurrences_count` | INTEGER | Current count | | `auto_create_expense` | BOOLEAN | Enable auto-creation | | `last_auto_created` | DATE | Last auto-create date | ### Migration Required ```bash # Run this to add new fields python migrate_custom_recurring.py # Or use full migration ./migrate_smart_features.sh ``` ## Translation Support All new features translated in: - πŸ‡¬πŸ‡§ **English**: "Auto-Create Expenses", "Custom Interval" - πŸ‡·πŸ‡΄ **Romanian**: "Creare automatΔƒ cheltuieli", "Interval personalizat" - πŸ‡ͺπŸ‡Έ **Spanish**: "Auto-crear gastos", "Intervalo personalizado" ## Key Benefits ### 🎯 Flexibility - Handle ANY recurring payment schedule - Not limited to standard frequencies - Perfect for unusual billing cycles ### ⏱️ Time Saving - Auto-create expenses on due date - No manual logging needed - Set it and forget it ### πŸ“Š Better Tracking - See occurrence count in real-time - Know when subscriptions will end - Track remaining payments ### πŸ’° Budget Control - Set payment limits for fixed terms - Automatic end dates - Annual cost calculations ### 🌐 Multi-Language - Fully translated interface - Consistent experience worldwide - Easy language switching ## Technical Details ### Auto-Create Logic ```python def should_create_expense_today(): - Check if today == next_due_date βœ“ - Check if already created today βœ— - Check if within occurrence limits βœ“ - Check if before end date βœ“ - Check if subscription active βœ“ return True/False ``` ### Next Payment Calculation ```python next_payment = current_payment + interval_days if occurrences_count >= total_occurrences: deactivate() if next_payment > end_date: deactivate() ``` ### Frequency Resolution ```python if frequency == "custom": interval = custom_interval_days else: interval = frequency_map[frequency] # 7, 14, 30, 90, 365 ``` ## Files Modified ### Models - `app/models/subscription.py` - Added 7 new fields + methods ### Routes - `app/routes/subscriptions.py` - Added auto-create endpoint ### Templates - `app/templates/subscriptions/create.html` - Custom frequency form - `app/templates/subscriptions/edit.html` - Edit custom fields - `app/templates/subscriptions/index.html` - Display AUTO badge ### Translations - `app/translations.py` - 15+ new translation keys (3 languages) ### Migration - `migrate_custom_recurring.py` - Database upgrade script ## Testing Checklist - [ ] Create subscription with custom interval (e.g., 45 days) - [ ] Create subscription with end date - [ ] Create subscription with total payments limit - [ ] Enable auto-create and trigger creation - [ ] Verify occurrence counter increments - [ ] Verify subscription deactivates at limit - [ ] Verify subscription deactivates after end date - [ ] Edit custom interval on existing subscription - [ ] Test in Romanian language - [ ] Test in Spanish language - [ ] Verify AUTO badge displays correctly - [ ] Check dashboard widget shows custom intervals ## Next Steps 1. **Run Migration**: `python migrate_custom_recurring.py` 2. **Restart App**: `docker compose restart` 3. **Test Feature**: Create custom subscription 4. **Enable Auto-Create**: Check the box on important subscriptions 5. **Set Up Automation**: (Optional) Configure cron job ## Support See full documentation: `CUSTOM_RECURRING_GUIDE.md` ## Version Info - **Feature**: Custom Recurring Expenses - **Version**: 1.0 - **Date**: December 2025 - **Languages**: EN, RO, ES - **Status**: βœ… Ready for Production --- **Enjoy your new smart subscription management! πŸŽ‰**