🎯 Improvements Made:
- Increased pagination from 20 to 50 entries per page
- Added default sorting by last name (nachname) in ascending order
- Added visual sorting indicators with Font Awesome icons (up/down arrows)
- Added results info showing current page range and total count
- Display shows sorting method when active
📊 User Experience:
- List now shows 50 destinataers by default (as requested)
- Always sorted by last name for consistent browsing
- Clear visual feedback for which column is sorted
- Informative pagination showing 'X-Y of Z entries (50 per page)'
✅ Template & View Changes:
- Modified destinataer_list view in views.py
- Enhanced destinataer_list.html template
- Maintained all existing filtering and search functionality
🐛 Error Fixed:
- AttributeError: 'VierteljahresNachweis' object has no attribute 'completion_percentage'
- Line 5347 in destinataer_export view was calling completion_percentage()
- Corrected to call get_completion_percentage() which is the actual method name
✅ Export functionality now works correctly for destinataers with quarterly confirmations
The error occurred when exporting a destinataer that had quarterly tracking data.
All quarterly confirmation completion percentages are now properly exported.
🎯 Key Changes:
- Quarterly tracking now always visible (removed studiennachweis_erforderlich condition)
- Removed automatic support payment creation when 'Unterstützung bestätigt' checkbox is checked
- Support payments now ONLY created through quarterly confirmation approval workflow
- Updated auto-creation logic to create quarterly confirmations for ALL destinataers
- Updated 'no quarterly confirmations' message to be more user-friendly
🚫 Duplicate Prevention:
- No more duplicate destinataer entries in Unterstützungen list
- Single source of truth: quarterly confirmation system controls support payment creation
📋 Template Analysis:
- Reviewed all if/else statements in quarterly tracking section
- Kept all functional logic (status checks, file existence, permissions)
- Removed only the visibility-controlling conditions
✅ Result:
- Quarterly tracking always visible regardless of study proof requirements
- Clean separation between 'Unterstützung bestätigt' checkbox and support payment creation
- Eliminates the duplicate destinataer issue reported by user
Features added:
- ✅ Fixed quarterly confirmation approval system with URL pattern
- ✅ Added re-approval and status reset functionality for quarterly confirmations
- ✅ Synchronized quarterly approval status with support payment system
- ✅ Enhanced Destinataer export with missing fields (anrede, titel, mobil)
- ✅ Added quarterly confirmation data and documents to export system
- ✅ Fixed address field display issues in destinataer template
- ✅ Added quarterly statistics dashboard to support payment lists
- ✅ Implemented duplicate support payment prevention and cleanup
- ✅ Added visual indicators for quarterly-linked support payments
Technical improvements:
- Enhanced create_quarterly_support_payment() with duplicate detection
- Added get_related_support_payment() method to VierteljahresNachweis model
- Improved quarterly confirmation workflow with proper status transitions
- Added computed address property to Destinataer model
- Fixed template field mismatches (anrede, titel, mobil vs strasse, plz, ort)
- Enhanced backup system with operation tracking and cancellation
Workflow enhancements:
- Quarterly confirmations now properly sync with support payments
- Single support payment per destinataer per quarter (no duplicates)
- Approval button works for both eingereicht and geprueft status
- Reset functionality allows workflow restart
- Export includes complete quarterly data with uploaded documents
- Enhanced 'Alle Unterstützungen' view with IBAN and Verwendungszweck columns for better payment tracking
- Updated export functions to handle both legacy 'selected_fields' and new 'fields' parameters
- Added IBAN and Verwendungszweck to default export field selections
- Improved destinataer list UI by adding Status column and removing obsolete study proof field
- Fixed infinite growing animation bug in 'Größen der Grundstücke (Top 30)' chart by replacing Chart.js with CSS-based implementation
- Removed Bootstrap h-100 class conflicts that caused chart resize loops
- Remove complex GHCR image pulling logic that was causing deployment failures
- Always build containers from source code on production server
- Remove unused build job that pushes to container registry
- Use docker-compose up -d --build to ensure latest code is built and deployed
- This ensures all new features like quarterly confirmations are available in production
- Add VierteljahresNachweis model for quarterly document tracking
- Remove studiennachweis_erforderlich field (now always required)
- Fix modal edit view to include studiennachweis section
- Implement automatic DestinataerUnterstuetzung creation when requirements met
- Set payment due dates to exact quarter end dates (Mar 31, Jun 30, Sep 30, Dec 31)
- Add quarterly confirmation CRUD views with modal and full-screen editing
- Update templates with comprehensive quarterly management interface
- Include proper validation, status tracking, and progress indicators
- Created PRODUCTION_ENV_UPDATE.md with step-by-step fix for CookieError
- Provides SSH commands to add missing SESSION_COOKIE_NAME and CSRF_COOKIE_NAME
- Includes verification steps to confirm fix works
- Fixed empty cookie name issue in production by improving fallback logic
- Changed 'Neue Förderung' to 'Neue Unterstützung' in destinataer detail page
- Updated icon from fa-gift to fa-heart for better UX
- Workflow now correctly uses unterstuetzung_create with destinataer pre-population
Resolves CookieError: Illegal key '' in production environment
- Added configurable SESSION_COOKIE_NAME and CSRF_COOKIE_NAME to Django settings
- Main app now uses 'stiftung_sessionid' instead of default 'sessionid'
- Paperless continues using default 'sessionid' for separation
- All configuration centralized in .env files as requested
- Updated both development and production compose configurations
- Added session settings to env templates for easy deployment
This resolves the session conflict where logging into one app would
kick out sessions from the other app. Both applications now maintain
independent login sessions.
- Created custom Dockerfile extending official paperless-ngx image
- Added tesseract-ocr-deu package for German language OCR
- Set PAPERLESS_OCR_LANGUAGE=deu+eng environment variable
- Updated CI/CD pipeline to build and push custom paperless image
- Modified deployment script to pull paperless image from GHCR
- Tested locally: German (deu) language pack now available alongside English
- Updated git pull strategy to use fetch + reset instead of pull to handle divergent branches
- Added docker system prune to clean up build artifacts
- Modified image pulling to separate web services from standard images
- Added --no-build flag to prevent accidental local builds
- Addresses production 502 errors from failed deployments
- Local environment tested and working correctly
- All Destinataer improvements verified locally
- Trigger GitHub Actions to redeploy to production VPS
- Address 502 errors on production server
- Bump version from v2.1.3 to v2.1.4
- Update status badge from 'Stabil' to 'Enhanced'
- Reflect recent improvements to Destinataer inline editing and CSV import
- Add inline edit mode to destinataer detail view with AJAX save/cancel
- Fix form validation by aligning select choices with model definitions
- Update Destinataer model to make familienzweig and berufsgruppe optional
- Fix StiftungsKonto integration in forms and views
- Redesign destinataer list view with new column layout:
* Vorname, Nachname, E-Mail, Vierteljährlicher Betrag
* Letzter Studiennachweis, Unterstützung bestätigt, Aktionen
- Improve form styling and user experience
- Add proper field validation and error handling
- Enhance UI with better badges, icons, and formattingv2_sortorderfixed_remmer
- Add inline edit mode to destinataer detail view with AJAX save/cancel
- Fix form validation by aligning select choices with model definitions
- Update Destinataer model to make familienzweig and berufsgruppe optional
- Fix StiftungsKonto integration in forms and views
- Redesign destinataer list view with new column layout:
* Vorname, Nachname, E-Mail, Vierteljährlicher Betrag
* Letzter Studiennachweis, Unterstützung bestätigt, Aktionen
- Improve form styling and user experience
- Add proper field validation and error handling
- Enhance UI with better badges, icons, and formatting
- Change all form templates from col-md-6 to col-12 layout
- Affects destinataer_form.html, paechter_form.html, and land_form.html
- Ensures consistent single-column layout across all entity forms
- All input fields now appear underneath their labels instead of side-by-side
- Improves form readability and user experience on all screen sizes
- Update Destinataer template: added 8 missing fields (ist_abkoemmling, haushaltsgroesse, monatliche_bezuege, vermoegen, unterstuetzung_bestaetigt, vierteljaehrlicher_betrag, studiennachweis_erforderlich, letzter_studiennachweis)
- Update Laendereien template: added 20 missing fields including property details, tenant info, contract terms, financial data, and tax information
- Fix JavaScript template download functionality: correct block name from extra_js to javascript
- Add comprehensive debugging and error handling for download process
- Improve CSV formatting with proper quoting for text fields containing spaces
- Add fallback download methods for better browser compatibility
All CSV templates now include complete field sets matching current model definitions.
- Remove external port mapping for grampsweb service
- Add GRAMPSWEB_BASE_URL environment variable
- Gramps will be accessible via https://vhtv-stiftung.de/ahnenforschung/
- Requires Nginx reverse proxy configuration on VPS
- paperless_document_redirect was adding /paperless/ twice
- PAPERLESS_API_URL already includes /paperless/ path
- Now redirects to: base_url/documents/{id}/details/ instead of base_url/paperless/documents/{id}/details/
- Fixes 404 errors when clicking document links
- Remove hardcoded fallbacks from config.py (relied on old prod values)
- Add missing Paperless env vars to compose.yml for production
- Update compose.dev.yml with complete Paperless configuration
- Fixes 500 errors by ensuring all env vars are passed to containers
Required: VPS .env must have PAPERLESS_*_TAG_ID and PAPERLESS_*_TAG variables
- Remove hardcoded defaults from PAPERLESS_*_TAG_ID in settings.py
- Fix Paperless document redirect to include /paperless/ prefix and /details/ suffix
- Update footer to v2.1.3 with deer icon
- Requires PAPERLESS_DESTINATAERE_TAG_ID, PAPERLESS_LAND_TAG_ID, PAPERLESS_ADMIN_TAG_ID in environment
- Remove reference to deploy-production/docker-compose.prod.yml (now archived)
- Use compose.yml directly as the production configuration
- This should fix the deployment script and enable proper image updates
- Archive deploy-production directory as deploy-production-archived (legacy)
- Add DOCKER_COMPOSE_README.md for documentation
- Main configuration now uses compose.yml with working Paperless integration
- Paperless API URL configured as https://vhtv-stiftung.de/paperless
- Fix deployment script to copy docker-compose.prod.yml to compose.yml (not docker-compose.yml)
- Update all docker-compose commands to use -f compose.yml explicitly
- Rename legacy deploy-synology/docker-compose.yml to .old
- This should fix the deployment issue where VPS wasn't getting updated
CRITICAL: This fixes the deployment issue where changes weren't appearing on production
Changes:
- Update docker-compose.prod.yml to use ghcr.io pre-built images instead of local builds
- Fix deployment script to pull latest images rather than building locally
- Add proper GitHub Container Registry authentication
- Remove --build flag that was causing deployment to use stale local code
This should resolve the issue where www.vhtv-stiftung.de wasn't showing the new Verpachtung features.
- Fix admin list_display and list_filter to use actual model fields
- Update field names: pachtpreis_qm -> pachtzins_pauschal, laufzeit_von -> pachtbeginn, etc.
- Add comprehensive fieldsets matching actual LandVerpachtung model structure
- Resolves SystemCheckError preventing migrations in production
- Register LandVerpachtung model in admin for easy production verification
- Add comprehensive list display with status, dates, and relationships
- Include colored status display and proper fieldsets
- Enables verification of Verpachtung functionality in production