6.8 KiB
6.8 KiB
🎉 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
- Navigate to Subscriptions page
- Click ➕ Add Subscription
- 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
- 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
- Click Edit on any subscription
- Modify any field
- Add/remove auto-create
- Update dates or limits
- 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
# 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
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
next_payment = current_payment + interval_days
if occurrences_count >= total_occurrences:
deactivate()
if next_payment > end_date:
deactivate()
Frequency Resolution
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 formapp/templates/subscriptions/edit.html- Edit custom fieldsapp/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
- Run Migration:
python migrate_custom_recurring.py - Restart App:
docker compose restart - Test Feature: Create custom subscription
- Enable Auto-Create: Check the box on important subscriptions
- 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! 🎉