mirror of
https://github.com/DRYTRIX/TimeTracker.git
synced 2026-01-06 03:30:25 -06:00
Implement complete Advanced Expense Management feature set with UI templates, database schema fixes, and reorganized navigation structure. Features: - Expense Categories: Full CRUD with budget tracking and visualization - Mileage Tracking: Vehicle mileage entries with approval workflow - Per Diem Management: Daily allowance claims with location-based rates - Receipt OCR: Infrastructure for receipt scanning (utilities ready) Database: - Migration 037: Create expense_categories, mileage, per_diem_rates, per_diems tables - Migration 038: Fix schema column name mismatches (trip_purpose→purpose, etc.) - Add missing columns (description, odometer, rates, reimbursement tracking) - Fix circular foreign key dependencies Templates (11 new files): - expense_categories/: list, form, view - mileage/: list, form, view - per_diem/: list, form, view, rates_list, rate_form Navigation: - Move Mileage and Per Diem to Expenses sub-pages (header buttons) - Move Expense Categories to Admin menu only - Remove expense management items from Finance menu Fixes: - Fix NoneType comparison error in expense categories utilization - Handle None values safely in budget progress bars - Resolve database column name mismatches UI/UX: - Responsive design with Tailwind CSS and dark mode support - Real-time calculations for mileage amounts - Color-coded budget utilization progress bars - Status badges for approval workflow states - Advanced filtering on all list views Default data: - 7 expense categories (Travel, Meals, Accommodation, etc.) - 4 per diem rates (US, GB, DE, FR)
76 lines
1.1 KiB
Plaintext
76 lines
1.1 KiB
Plaintext
# Core Flask dependencies
|
|
Flask==3.0.0
|
|
Flask-SQLAlchemy==3.1.1
|
|
Flask-Migrate==4.0.5
|
|
Flask-Login==0.6.3
|
|
Flask-SocketIO==5.3.6
|
|
|
|
# OAuth / OIDC
|
|
Authlib==1.3.1
|
|
PyJWT==2.8.0
|
|
|
|
# Database
|
|
SQLAlchemy==2.0.23
|
|
alembic==1.13.1
|
|
psycopg2-binary==2.9.9
|
|
|
|
# Web server
|
|
gunicorn==23.0.0
|
|
eventlet==0.40.3
|
|
|
|
# Security and forms
|
|
Flask-WTF==1.2.1
|
|
Flask-Limiter==3.8.0
|
|
|
|
# Utilities
|
|
python-dotenv==1.0.0
|
|
pytz==2023.3
|
|
python-dateutil==2.8.2
|
|
Werkzeug==3.0.6
|
|
requests==2.32.4
|
|
|
|
# Email
|
|
Flask-Mail==0.9.1
|
|
|
|
# Excel export
|
|
openpyxl==3.1.2
|
|
|
|
# PDF Generation
|
|
WeasyPrint==60.2
|
|
pydyf==0.10.0
|
|
Pillow==10.4.0
|
|
reportlab==4.0.7
|
|
|
|
# Background tasks
|
|
APScheduler==3.10.4
|
|
|
|
# Internationalization
|
|
Flask-Babel==4.0.0
|
|
Babel==2.14.0
|
|
|
|
# Development and testing
|
|
pytest==7.4.3
|
|
pytest-flask==1.3.0
|
|
pytest-cov==4.1.0
|
|
coverage[toml]==7.4.0
|
|
black==24.8.0
|
|
flake8==6.1.0
|
|
|
|
# Security
|
|
cryptography==45.0.6
|
|
markdown==3.6
|
|
bleach==6.1.0
|
|
|
|
# Analytics and Monitoring
|
|
python-json-logger==2.0.7
|
|
sentry-sdk==1.40.0
|
|
prometheus-client==0.19.0
|
|
posthog==3.1.0
|
|
|
|
# API Documentation
|
|
flask-swagger-ui==5.21.0
|
|
apispec==6.3.0
|
|
marshmallow==3.20.1
|
|
|
|
# OCR for receipt scanning
|
|
pytesseract==0.3.10 |