v1.3.147:
- Changed from /customers/{id}/invoices/sent (404) to /invoices/drafts
- Fetch all drafts, then filter by customer number
- Apply date filter ONLY on customer invoices (fixes bug)
- Proper order: fetch all -> filter customer -> filter date
v1.3.146:
- Changed to /customers/{customerNumber}/invoices/sent
- More direct approach - fetches only that customer's invoices
- Removed unnecessary customer filtering step
- Still applies 13-month date filter
v1.3.145:
- CRITICAL FIX: Date filter was running on all invoices
- Now correctly filters customer_invoices by date
- Prevents showing other customers' invoices
v1.3.143:
- Check drafts, booked, paid, unpaid endpoints
- Deduplicate invoices by invoice number
- Pagination support for each endpoint
- Filter by customer + 13 months date after fetching
v1.3.142:
- Changed from /invoices/sent to /invoices/drafts
- /drafts contains most active invoices (29 vs 0 in /sent)
- Still applies pagination and 13-month filter
v1.3.141:
- Removed unsupported customer filter from API params
- Fetch all invoices from /invoices/sent with pagination
- Filter by customer number in code
- Apply 13-month date filter after customer filter
v1.3.140:
- Use /invoices/sent endpoint with customer.customerNumber filter
- More efficient: only fetch invoices for specific customer
- Apply 13-month date filter after fetching
- Simplified endpoint logic (single endpoint vs 8 endpoints)
v1.3.139:
- Removed date filter from API params (causes 404 on some endpoints)
- Apply 13-month filter in code after fetching invoices
- Parse invoice dates and filter >= start_date
- More reliable filtering across all e-conomic endpoints
v1.3.138:
- Fixed ValueError: month must be in 1..12
- Use python-dateutil for proper month arithmetic
- Uses relativedelta for correct 13 month calculation
v1.3.136:
- Changed filter from 365 days to exactly 12 months
- Uses 1st day of the month 12 months ago
- Example: Jan 27, 2026 -> fetches from Feb 1, 2025
v1.3.135:
- Added date filter to e-conomic API (only fetch invoices from last year)
- Implemented product search in billing matrix
- Shows/hides search field based on product count
- Real-time filtering with clear button
- Add migration 053 for approval columns
- Checks if columns exist before adding (safe)
- Adds: approved_hours, rounded_to, approval_note, billable, is_travel, approved_at, approved_by
- Adds indexes for status and approved_at
- Required for production deployment
- Add logging before approval object creation
- Add logging after approval object creation
- Add logging before database update
- Add logging after database update
- Add time_id to error messages
- This will help diagnose 500 errors on production
- Let Pydantic handle Decimal conversion
- Send approved_hours as Decimal, not float
- Send rounded_to as Decimal, not float
- Add exc_info=True to error logging
- Fix parameter handling in approve_time_entry endpoint
- Change from query params to body Dict[str, Any]
- Send all required fields to wizard.approve_time_entry()
- Calculate rounded_to if auto-rounding enabled
- Add approval_note, billable, is_travel fields
- Add Dict, Any imports