Implement advance payment schedule for quarterly payments

BREAKING CHANGE: Payment due dates now follow advance payment schedule:
- Q1 payments: Due December 15 of previous year
- Q2 payments: Due March 15 of same year
- Q3 payments: Due June 15 of same year
- Q4 payments: Due September 15 of same year

Changes:
- Updated create_quarterly_support_payment() to use advance schedule
- Enhanced diagnostic commands to check advance payment dates
- Added fix_advance_payment_dates command for comprehensive fixes
- Updated fix_q4_payment_dates to correct Q4 from 31.12 to 15.09

This aligns with semester-based document submissions while maintaining
the advance payment system where payments are made before each quarter.
This commit is contained in:
2025-10-01 12:04:34 +02:00
parent 149078aaee
commit 6aa218004c
4 changed files with 143 additions and 26 deletions

View File

@@ -89,14 +89,29 @@ class Command(BaseCommand):
else:
self.stdout.write(' ❌ Run: python manage.py update_semester_deadlines')
# Check if payments need updating
wrong_payments = DestinataerUnterstuetzung.objects.filter(
# Check if payments need updating (advance payment schedule)
wrong_q4_payments = DestinataerUnterstuetzung.objects.filter(
faellig_am='2025-12-31',
beschreibung__icontains='Q4/2025'
).count()
if wrong_payments > 0:
self.stdout.write(f'{wrong_payments} payments have wrong due date (31.12 instead of 15.12)')
# Also check for other quarters with wrong advance payment dates
wrong_q1_payments = DestinataerUnterstuetzung.objects.filter(
faellig_am='2025-03-31',
beschreibung__icontains='Q1/2025'
).count()
if wrong_q4_payments > 0:
self.stdout.write(f'{wrong_q4_payments} Q4 payments have wrong due date (31.12 instead of 15.09)')
self.stdout.write(' Run: python manage.py fix_q4_payment_dates')
elif wrong_q1_payments > 0:
self.stdout.write(f'{wrong_q1_payments} Q1 payments have wrong due date (advance payment schedule)')
else:
self.stdout.write(' ✓ Payment due dates appear correct')
self.stdout.write(' ✓ Payment due dates appear correct')
# Show the advance payment schedule
self.stdout.write('\nAdvance Payment Schedule:')
self.stdout.write(' Q1 payments: Due December 15 of previous year')
self.stdout.write(' Q2 payments: Due March 15 of same year')
self.stdout.write(' Q3 payments: Due June 15 of same year')
self.stdout.write(' Q4 payments: Due September 15 of same year')