In Development - Unreleased
DownTimeErrorWill no longer send out warning logs
4.0.0 - 2026-05-09
Important
This Release needs at least Alliance Auth v5 Please make sure to update your Alliance Auth before you install this APP
- Compatibility to Alliance Auth v5
- Compatibility to Alliance Auth v4
3.0.4 - 2026-05-03
- Discord Notification System, Automated alerts for outstanding payments at both the Alliance and Corporation levels.
tax_messagefield for Owner to specify custom First Message.
Configuration The frequency of these alerts can be managed through the following setting:
TAXSYSTEM_NOTIFICATION_EXPIRATION_DAYS = "1"Defines the timeframe (in days) before a notification expires. The system will only trigger a new Discord alert for the outstanding balance once this period has elapsed. This prevents notification fatigue while ensuring consistent follow-up on unpaid dues.
- Enhance error handling for ESI downtime and update retry logic in providers
- Update Translation
3.0.3 - 2026-04-14
Warning
If you are not having already follow all instructions for v2.0.2 you need to do that now, otherwise this version will not work!
You can install the previous version with
pip install aa-taxsystem==2.0.2- Python 3.13 Support
- Allow Negative Numbers in adjustment payments
3.0.2 - 2026-03-30
Warning
If you are not having already follow all instructions for v2.0.2 you need to do that now, otherwise this version will not work!
You can install the previous version with
pip install aa-taxsystem==2.0.2Follow the Instructions and then upgrade to v3
- Update corporation and alliance update tasks to use eve_id for processing (#185)
- Update task arguments to use owner_eve_id for corporation and alliance updates
- Update force_update method to use owner_eve_id for corporation owner
- Update corporation and alliance update tasks to use eve_id for processing
3.0.1 - 2026-03-30
Warning
If you are not having already follow all instructions for v2.0.2 you need to do that now, otherwise this version will not work!
You can install the previous version with
pip install aa-taxsystem==2.0.2Follow the Instructions and then upgrade to v3
- Test Preperation for AAv5 Release
- Add null check for first party in journal
- Task Tests
- refactor task parameters and add retry manager for corporation and alliance updates
3.0.0 - 2026-03-17
Warning
If you are not having already follow all instructions for v2.0.2 you need to do that now, otherwise this version will not work!
You can install the previous version with
pip install aa-taxsystem==2.0.2Follow the Instructions and then upgrade to v3
django-eveuniversedependency
- Operational code has been refactored and the dependency
django-eveuniversewill be removed with the v3. - Enhance bulk_resolve_names to handle existing IDs and new entity creation (#172)
Important
Please note that this release involves structural dependency changes. To avoid any service disruptions, it is essential to read the update manual prior to performing the upgrade.
python manage.py migrate
python manage.py taxsystem_migrate_eveentity2.0.1 - 2026-02-10
- Updated Translation
- Simplified German Translation for Requests
- Improved naming consistency in hints and modal text
- ESI Retry Manager for
HTTPServerErrors - Missing Migration
- Handle RequestError in
retry_task_on_esi_error
- HTTPServer Catch in
update_section_if_changed
2.0.0 - 2025-12-31
Warning
We changed the Payments Information, please use the following django command to migrate old Payments You need to execute the following commands in order to avoid issues
python manage.py taxsystem_cleanup_payments
python manage.py taxsystem_migrate_payments
python manage.py migrateNote
entry_id entry_id from Corporation/Alliance Payments Model is deprecated and will be deleted with version 2.1, a Migration is necessary to avoid data loss!
- Implement Bulk Actions for payments management, including modals and checkbox selection
- Implement UpdateManager Class for Tasks
- Implement Bulk Actions in Managment View
- Implement AppLogger and retry_task_on_esi_error for enhanced logging and error handling
- Implement Icon Backend Creation
- Implement Alliance Tax System
- Implement Filter Match Type
- Test Enviroment with NoSocket Function and OpenAPI ESI Stub Class for ESI Tests
- Added DataTable v2 Version 2.3.5
- API
- Payments API Endpoint
- Logs API Endpoint
- Filter API Endpoint
- Corporation API Endpoint
- Enhance payment modals with reset functionality and reload logic
- Django Backend Administration
AllianceOwnerAdminclass with:- List display showing alliance info, corporation link, and last update timestamp
- Force update action for manual data refresh
- Read-only permissions (no add/change capabilities)
- Optimized queryset with
select_relatedfor corporation data
CorporationOwnerAdminenhanced with:- Force update action for manual data refresh
- Last update timestamp display with humanized time
- Documentation
- Comprehensive User Manual (
docs/USER_MANUAL.md)- Getting Started Guide
- Adding Corporations and Alliances
- Payment System explanation (automatic vs manual approval)
- Filter System tutorial with examples
- Account Management guide
- Administration features
- FAQ and troubleshooting
- README.md updated with:
- New permissions documentation (Alliance permissions)
- Documentation section with link to User Manual
- Updated features list (Multi-Owner Support, Alliance Tax System)
- Comprehensive User Manual (
- and many more...
- Balance named as Balance Due
- AttributeError: 'NoneType' object has no attribute 'character_id' in Payments Situations
- CSS Issues with Standard AA Theme
- missing get_visible for Alliance Payments
- Reset
depositand Update Status in Taskupdate_corp_tax_accounts,update_ally_tax_accounts - Payments with Status
pendingorneeds_approvalhighlighted in yellow - Use AA
numberFomatterfor Currency in JavaScript - Refactored Doc Strings for greater clarity
- Payments are now only displayed depending on the user's permission.
- Moved Manage Post Requests from Views to API
- Refactored JS Structure
- Optimized Modal System
- Optimized DataTable Structure
- Unified Modal Structure
- Unified Settings Structure
- Unified DataTable Structure
- Optimized Settings System
- Added Locale
- Added DataTable Settings
- Refactored Template Structure
- All views are now accessible with or without specifying corporation_id/alliance_id. If not provided, the user's main character's corporation/alliance is used by default.
- Renamed
Manage Tax SystemtoManage CorporationorManage Alliance - Index page (
/) now redirects to Owner Overview instead of payment list - Task Queue Order
- CSS Arrows for Editable Popup
taxsystem_statictemplatetagallianceauth-app-utilsdependency- unused ESI-related functions and imports from decorators.py
- unused EVE Online and Fuzzwork API settings from app_settings
- unused add_info_to_context function
- unused custom exception classes from errors.py
2.0.0-beta.6 - 2025-12-22
- missing get_visible for Alliance Payments
2.0.0-beta.5 - 2025-12-22
- AttributeError: 'NoneType' object has no attribute 'character_id' in Payments Situations
- Beta Migration Command for Beta Tester (will be deleted with Release v2.0.0)
2.0.0-beta.4 - 2025-12-21
Warning
We changed the Payments Information, please use the following django command to migrate old Payments You need to execute the following commands in order to avoid issues with later versions
python manage.py taxsystem_cleanup_payments
python manage.py taxsystem_migrate_payments
python manage.py migrateNote
entry_id entry_id from Corporation/Alliance Payments Model is deprecated and will be deleted with version 2.1, a Migration is necessary to avoid data loss!
- UpdateManager Class for Tasks
- Bulk Actions in Managment View
- Translation for DataTable
- implement AppLogger and retry_task_on_esi_error for enhanced logging and error handling
- OpenAPI ESIStub Class
- Detailed Doc Strings
- API
- Payments API Endpoint
- Logs API Endpoint
- Filter API Endpoint
- removed Arrows for Editable Popup
- Payments are now only displayed depending on the user's permission.
- Moved Manage Requests to API
- Refactored API Structure
- Icons Helper Function
- Added DataTable v2 Version 2.3.5
- Refactored JS Structure
- Optimized Modal System
- Optimized DataTable Structure
- Unified Modal Structure
- Unified Settings Structure
- Unified DataTable Structure
- Optimized Settings System
- Added Locale
- Added DataTable Settings
- Refactored Template Structure
- use AA
numberFomatterfor Currency
- CSS Issues with Standard AA Theme
taxsystem_statictemplatetagallianceauth-app-utilsdependency- unused ESI-related functions and imports from decorators.py
- unused EVE Online and Fuzzwork API settings from app_settings
- unused add_info_to_context function
- unused custom exception classes from errors.py
2.0.0-beta.3 - 2025-12-03
Warning
We changed the Payments Information, please use the following django command to migrate old Payments You need to execute the following commands in order to avoid issues
python manage.py taxsystem_cleanup_payments
python manage.py taxsystem_migrate_payments
python manage.py migrate- entry_id is now nullable and unique to prevent multiple entries from ESI Fetch
- TAXSYSTEM_BULK_BATCH_SIZE: Configurable batch size for
bulk_create,bulk_update— preventsmax_allowed_packeterrors by splitting large inserts
2.0.0-beta.2 - 2025-12-02
- Row colors not work
- Improve payment count logic to accurately reflect active payments
- Update main character status to active when relevant
- Corporation Payments have no Owner ID
- Add character_id parameter to account view for enhanced functionality
- Fix parentheses placement in payment account tax period check for clarity
- Refactor payment account management to improve account checking and reactivation logic
2.0.0-beta.1 - 2025-11-24
Warning
We changed the Payments Information, please use the following django command to migrate old Payments
python manage.py taxsystem_migrate_payments- Implement payment system add payments button and associated template
- Enhance payment modals with reset functionality and reload logic
- Reset deposit and update status for payment accounts on owner change
- shared constant
AUTH_SELECT_RELATED_MAIN_CHARACTERintaxsystem/constants.pyto centralize repeatedselect_relatedfields check_tax_accountsmethod to manage payment account statuses- Django Admin Integration
AllianceOwnerAdminclass with:- List display showing alliance info, corporation link, and last update timestamp
- Force update action for manual data refresh
- Read-only permissions (no add/change capabilities)
- Optimized queryset with
select_relatedfor corporation data
CorporationOwnerAdminenhanced with:- Force update action for manual data refresh
- Last update timestamp display with humanized time
- Comprehensive admin test suite (
taxsystem/tests/test_admin.py)- 19 test methods covering both admin classes
- Tests for list display, entity pictures, permissions, force update actions
- Queryset optimization validation
- Documentation
- Comprehensive User Manual (
docs/USER_MANUAL.md)- Getting Started Guide
- Adding Corporations and Alliances
- Payment System explanation (automatic vs manual approval)
- Filter System tutorial with examples
- Account Management guide
- Administration features
- FAQ and troubleshooting
- README.md updated with:
- New permissions documentation (Alliance permissions)
- Documentation section with link to User Manual
- Updated features list (Multi-Owner Support, Alliance Tax System)
- Comprehensive User Manual (
- Update type annotations for manager objects in Corporation models
- Refactor activity calculation to return numeric values and update related templates for consistent display
- Refactor payment account management and update member tracking logic
- Model Protection
AllianceOwner.corporationForeignKey changed fromCASCADEtoPROTECT- Prevents accidental deletion of CorporationOwner when referenced by Alliance
- Must explicitly delete AllianceOwner before deleting linked Corporation
- Enhance card body styling for Own Payments and Payments pages
next_dueproperty to PaymentAccount and update related views and templates
- Generic Views Refactoring
account()view now supports both Corporation and Alliance ownersfaq()view now supports both Corporation and Alliance owners- Views use
get_manage_owner()for unified owner retrieval - Dynamic owner type detection with isinstance() checks
- Generic Status checks instead of hardcoded CorporationPaymentAccount
- Backwards compatible context keys maintained
- Humanized Date Display
last_paidandnext_duein manage.js now usemoment.fromNow()for relative time display- Account template now uses Django's
naturaltimefilter for all date fields - More intuitive date representation (e.g., "2 days ago", "in 5 days")
- View Permission Fix
generic_owner_own_payments()now correctly usesget_corporation()andget_alliance()instead of management methods- End-user view no longer requires management permissions
- MultipleObjectsReturned: get() returned more than one AlliancePayments -- it returned 2!
- Alliance Tax System
- Payments
- Payment Accounts
- Owner Overview Page (
/owners/)- Unified view displaying both Corporations and Alliances
- Permission-based action buttons (Payments/Manage)
- DataTables integration with responsive design
- Portrait display for all owners
- Active/Inactive status badges
- Dark theme compatible (btn-warning for manage buttons)
- Automatic redirect from index to owner overview
- Administration view now checking for permission and if Corporation is still available
- EVE Portrait and Logo Helper Functions
- Backend lazy helpers:
get_character_portrait_url(),get_corporation_logo_url(),get_alliance_logo_url() - Template tags:
|character_portrait_url:size,|corporation_logo_url:size,|alliance_logo_url:size
- Backend lazy helpers:
- Owner Permissions via Manager Methods
CorporationOwner.objects.manage_to(user)andAllianceOwner.objects.manage_to(user)visible_to(user)methods for broader visibility
- Menu navigation now points to Owner Overview instead of payment list
- Test Suite after API parameter migration (158 tests passing, 71% coverage)
- Updated test parameters from
corporation_idtoowner_idfor generic owner endpoints - Fixed payment creation in character tests to use correct
owner_idfield - Fixed response assertions to match new "owner" schema
- Added missing
MessageMiddlewareto test requests - Created missing test data for manage_user tests
- Fixed FAQ URL routing in access tests
- Implemented Alliance payment tests with proper factory functions
- Performance tests now use
assertIsNotNone()instead of silent skipping
- Updated test parameters from
- DataTables warning for empty Owner Overview table (incorrect column count)
- Owner Overview now uses
visible_to()instead ofmanage_to()for correct permission filtering
- Refactor Tax System and prepare for Alliance Tax System migration
- All views are now accessible with or without specifying corporation_id/alliance_id. If not provided, the user's main character's corporation/alliance is used by default.
- Renamed
Manage Tax SystemtoManage CorporationorManage Alliance - Index page (
/) now redirects to Owner Overview instead of payment list - Owner Overview removes
get_statuscolumn (admin-focused, not user-focused) - Empty state message changed from "manage" to "view" for better user understanding
- Task Queue Order
- Performance Optimization: N+1 Query Fixes
- Payment queries now use
select_related()for account, user, profile, and main_character (70-80% query reduction) - Payment System uses
prefetch_related()for character_ownerships (85-90% query reduction) - Members queries optimized with
select_related()for owner relationships (60-70% faster)
- Payment queries now use
- API Migration: Generic owner endpoints now use
owner_idparameter instead ofcorporation_id- Affects: filter management, payment system, and filter set endpoints
- Corporation-specific endpoints still use
corporation_id
- Views Terminology: Permission error messages for generic owner operations now use "owner" instead of "corporation"
- Database Indexes for Performance
- Test Quality: All tests must work properly or fail with clear assertions (no silent skipping allowed)
- AlliancePayments: Composite index (account, owner_id, request_status, -date) + (request_status, -date)
- CorporationPayments: Composite index (account, owner_id, request_status, -date) + (request_status, -date)
- Members: Indexes on (owner, character_name) + (status)
- Expected: 50%+ faster filtered queries, combined with N+1 fixes: 60-80% total improvement
- Statistics Query Optimization
- Analyzed and confirmed all statistics functions already use optimal single aggregate() queries
get_payments_statistics(): 1 query for all counts (total, pending, automatic, manual)get_payment_system_statistics(): 1 query for all counts (users, active, inactive, deactivated, paid, unpaid)get_members_statistics(): 1 query for all counts (total, mains, alts, unregistered)- Dashboard statistics: 3 optimized queries (1 per table) vs potentially 10+ separate queries
- Result: Already using best-practice aggregate() approach - no further optimization possible
1.0.2 - 2025-11-20
- Dependencies
django-eveuniverseset to1.6django-ninjaset to>=1.5,<2allianceauth-app-utilsset to>=1.3django-esiset to>=8,<9
django-ninjadependency pin<1.5- csrf arg from
django-ninja - allow-direct-references
1.0.1 - 2025-11-13
- Temporary pin
django-ninjatodjango-ninja<=1.5
- Statistics is not showing when Data is
null
- Switch to OPENAPI3 ESI Client
- Dependency
allianceauth-app-utilsset to2b1 - Use new ETag System from
django-esi
- Dependency
- Updated dependencies
- Updated README url for translations
1.0.0-beta.1 - 2025-11-03
Caution
This is a BETA version, not intended for production use! Please test it in a test environment first and report any issues.
- Switch to OPENAPI3 ESI Client
- Updated dependencies
- Updated README url for translations
Warning
We changed the Payments Information, please use the following django command to migrate to new payments
python manage.py taxsystem_migrate_payments- Long loading issue in Payments View
- Makefile System
- Custom Payments
- Contributing Guidelines
- Open previous Modal if exist
- Updated Translations
- Updated Pre-Commit
- Updated npm
- moved
reloadStatisticsto bundle - Updated ESI Status Check to fit new rate-limit guidelines
- CSS Issues
- Approve Modal not working in Admin View
- NoneType error in
divisionproperty - Payments should be Corporation related
- Smart Filter, Smart Group
- Filter System
- Add Filter
- Add Filter Set
- Filter Modal
- Payments Manager Test
- Add Filter Menu to Administration
- Removed Payments, Payment System, Own Payments State Save
- Updated German Translation
- Table Sorting for Payments
- Renamed Last Paid to Last Debit
- Use Localisation in Administration Dashboard
- Update Status Sections in Administration Dashboard
- Corporation Wallet Journal not Updating until ETag expire
- Moved Update Status Icon to Update Status Dashboard
Wallet ActivityExclude transactions within Corporation
- NoneType Error in Administration Dashboard
- Missing Migration
- 0006 Migration (created now by
calc_update_needed)
- Wallet Balance not updating correctly
- New Sections not included to Updates
- NoneType Error on Admin Dashboard
- Use
Django SRIfor Cache Busting
- Account View
- FAQ View
- Not Paid Badge in Menu
- Wallet Activity (Last 30 Days)
- dependabot
django-esidependency
- Use
django-esinew User Agent Guidelines
- Minimum dependencies
- allianceauth>=4.8.0
- Missing Static images
- Divison 1 Name from "" to "Master Wallet"
- Divison to Payments View & Administration
has_paidproperty
- Update Section System - Inspired by @[Eric Kalkoken]
- TokenError Handler
- HTTPInternalServerError, HTTPGatewayTimeoutError Handler
- Update Section retrieves information between Etag System (Not Updating if NotModified)
- Disable Update on Token Error
- Update Information
- Update Issues Badge
- Admin Menu (superuser only)
- Task System
- Use Django Manager for Updates
- Refactor Tasks
- Tests
- Use app_utils
LoggerAddTagLogger System - Make
READMElogger settings optional - Changed model relation:
corporationtoowner - Renamed payment_system functions args from
user_pktopayment_system_pk - Optimized url paths in settings
- Added related name for filters model
- Add mariadb 11.4 support
- Model relation from
corporationtoowner - Add Permission req. for update tax views
- Add Python 3.13 support
add_corpbool error
- Timeout Handler for ESI Requests
- Check Payment Accounts
- Check if Account is in Corporation
- Update Account on Corporation Change
- Reactivate Account on returning to Corporation
TAXSYSTEM_STALE_TIMEDefines the time (in days) after which data is considered outdated and needs a update- Member Delete Button
- Delete Missing Member from Corp Members list
- Refactor Task Process
- Update Logger System
- Wrong Payment User Count on Corporation Leave
- Payments Error if no Main Character Exist
- Redirect Loop
- Amount, Reason to Payment Details #10
- Moved Templates
- Translations
- Permission Issues
manage_accesspermission
- Corporation Menu
- Own Payments View
- CSS Style
- Cleaned templates
- Table Error Handler
- Wrong Permission in Administration View
- API System
- Administration
- Account Payments Overview
- Dashboard
- Payments
- Payment System
- Payment Details
- Filter System with Hook Feature
- Amount Filter
- Reason Filter
- Date Filter
- Corporation Overview
- Members Tracking
- Payment Users
- Payments
- Automatic Payments Approves via Filter
- Manual Approvment
- Models
- OwnerAudit
- Members
- Payment System
- Payments
- WalletJournal
- Translation
- German
- English
- Tasks
- Wallet Journal Task
- Members Tracking Task
- Payments Task
- Payment System Task
- Logs fo Payments
- Modal
- Modal System
- Approve Modal
- Confirm Modal
- Table Modal
- Logs
- Log Payment Changes
- Log Administration Changes
- Initial public release