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:
@@ -7484,6 +7484,7 @@ def create_quarterly_support_payment(nachweis):
|
||||
Get or create a single support payment for this quarterly confirmation
|
||||
Ensures only one payment exists per destinataer per quarter
|
||||
"""
|
||||
from datetime import date
|
||||
destinataer = nachweis.destinataer
|
||||
|
||||
# Check if all requirements are met
|
||||
@@ -7532,19 +7533,21 @@ def create_quarterly_support_payment(nachweis):
|
||||
if not default_konto:
|
||||
return None
|
||||
|
||||
# Calculate payment due date (last day of quarter)
|
||||
quarter_end_month = nachweis.quartal * 3
|
||||
# Calculate payment due date (advance payment schedule)
|
||||
# Payments are made in advance according to semester schedule:
|
||||
# September 15: Payment for Q4 of current year
|
||||
# December 15: Payment for Q1 of next year
|
||||
# March 15: Payment for Q2 of current year
|
||||
# June 15: Payment for Q3 of current year
|
||||
|
||||
if nachweis.quartal == 1: # Q1: January-March (ends March 31)
|
||||
quarter_end_day = 31
|
||||
elif nachweis.quartal == 2: # Q2: April-June (ends June 30)
|
||||
quarter_end_day = 30
|
||||
elif nachweis.quartal == 3: # Q3: July-September (ends September 30)
|
||||
quarter_end_day = 30
|
||||
else: # Q4: October-December (ends December 31)
|
||||
quarter_end_day = 31
|
||||
|
||||
payment_due_date = datetime(nachweis.jahr, quarter_end_month, quarter_end_day).date()
|
||||
if nachweis.quartal == 1: # Q1 payment due December 15 of previous year
|
||||
payment_due_date = date(nachweis.jahr - 1, 12, 15)
|
||||
elif nachweis.quartal == 2: # Q2 payment due March 15 of same year
|
||||
payment_due_date = date(nachweis.jahr, 3, 15)
|
||||
elif nachweis.quartal == 3: # Q3 payment due June 15 of same year
|
||||
payment_due_date = date(nachweis.jahr, 6, 15)
|
||||
else: # Q4 payment due September 15 of same year
|
||||
payment_due_date = date(nachweis.jahr, 9, 15)
|
||||
|
||||
# Create the support payment
|
||||
payment = DestinataerUnterstuetzung.objects.create(
|
||||
|
||||
Reference in New Issue
Block a user