Fix semester system: 2x yearly docs, 4x yearly payments with Q4 on Sep 15
Document Submission (twice yearly): - Q1 & Q2 documents: Due March 15 (Spring semester) - Q3 & Q4 documents: Due September 15 (Fall semester) Payment Schedule (quarterly): - Q1 payments: Due March 15 - Q2 payments: Due June 15 - Q3 payments: Due September 15 - Q4 payments: Due September 15 (aligned with Fall semester docs) This gives the desired Q4 payment due date of 15.09.2025 while maintaining quarterly payment frequency and semester-based document submissions.
This commit is contained in:
@@ -29,17 +29,17 @@ class Command(BaseCommand):
|
||||
|
||||
self.stdout.write(f'Checking quarterly payments for {year} using advance payment schedule...')
|
||||
|
||||
# Define correct advance payment schedule
|
||||
advance_schedule = {
|
||||
f'Q1/{year}': date(year - 1, 12, 15), # Q1 paid in December of previous year
|
||||
f'Q2/{year}': date(year, 3, 15), # Q2 paid in March of same year
|
||||
f'Q3/{year}': date(year, 6, 15), # Q3 paid in June of same year
|
||||
f'Q4/{year}': date(year, 9, 15), # Q4 paid in September of same year
|
||||
# Define correct quarterly payment schedule
|
||||
quarterly_schedule = {
|
||||
f'Q1/{year}': date(year, 3, 15), # Q1 payment due March 15
|
||||
f'Q2/{year}': date(year, 6, 15), # Q2 payment due June 15
|
||||
f'Q3/{year}': date(year, 9, 15), # Q3 payment due September 15
|
||||
f'Q4/{year}': date(year, 9, 15), # Q4 payment due September 15 (semester alignment)
|
||||
}
|
||||
|
||||
total_fixed = 0
|
||||
|
||||
for quarter_desc, correct_date in advance_schedule.items():
|
||||
for quarter_desc, correct_date in quarterly_schedule.items():
|
||||
# Find payments for this quarter that have wrong dates
|
||||
wrong_payments = DestinataerUnterstuetzung.objects.filter(
|
||||
beschreibung__icontains=quarter_desc
|
||||
@@ -81,9 +81,9 @@ class Command(BaseCommand):
|
||||
self.style.SUCCESS(f'\n✅ Successfully fixed {total_fixed} payment due dates')
|
||||
)
|
||||
|
||||
# Show the advance payment schedule
|
||||
self.stdout.write(f'\nAdvance Payment Schedule for {year}:')
|
||||
for quarter_desc, due_date in advance_schedule.items():
|
||||
# Show the quarterly payment schedule
|
||||
self.stdout.write(f'\nQuarterly Payment Schedule for {year}:')
|
||||
for quarter_desc, due_date in quarterly_schedule.items():
|
||||
self.stdout.write(f' {quarter_desc}: Due {due_date.strftime("%B %d, %Y")}')
|
||||
|
||||
# Check for other years that might need fixing
|
||||
@@ -91,7 +91,7 @@ class Command(BaseCommand):
|
||||
other_year_payments = DestinataerUnterstuetzung.objects.filter(
|
||||
beschreibung__regex=r'Q[1-4]/202[6-9]'
|
||||
).exclude(
|
||||
faellig_am__in=[date(2024, 12, 15), date(2026, 3, 15), date(2026, 6, 15), date(2026, 9, 15)]
|
||||
faellig_am__in=[date(2026, 3, 15), date(2026, 6, 15), date(2026, 9, 15), date(2026, 9, 15)]
|
||||
).count()
|
||||
|
||||
if other_year_payments > 0:
|
||||
|
||||
Reference in New Issue
Block a user