Files
n3wt-school/Back-End/School/management/commands/init_payment_plans.py
2025-02-13 17:13:31 +01:00

63 lines
2.4 KiB
Python

from django.core.management.base import BaseCommand
from django.utils import timezone
from dateutil.relativedelta import relativedelta
from School.models import PaymentPlan, PaymentPlanType, FeeType, Establishment
class Command(BaseCommand):
help = 'Initialize or update Payment Plans'
def handle(self, *args, **kwargs):
self.create_or_update_payment_plans()
def create_or_update_payment_plans(self):
current_date = timezone.now().date()
establishment = Establishment.objects.get(name="N3WT")
for fee_type in FeeType.choices:
fee_type_value = fee_type[0]
# 1 fois - échéance à 1 mois à partir de la date actuelle
PaymentPlan.objects.update_or_create(
frequency=PaymentPlanType.ONE_TIME,
type=fee_type_value,
defaults={
'due_dates': [current_date + relativedelta(months=1)],
'is_active': True,
'establishment': establishment
}
)
# 3 fois - échéances espacées de 4 mois
PaymentPlan.objects.update_or_create(
frequency=PaymentPlanType.THREE_TIMES,
type=fee_type_value,
defaults={
'due_dates': [current_date + relativedelta(months=1+4*i) for i in range(3)],
'is_active': False,
'establishment': establishment
}
)
# 10 fois - échéances espacées d'un mois
PaymentPlan.objects.update_or_create(
frequency=PaymentPlanType.TEN_TIMES,
type=fee_type_value,
defaults={
'due_dates': [current_date + relativedelta(months=1+i) for i in range(10)],
'is_active': False,
'establishment': establishment
}
)
# 12 fois - échéances espacées d'un mois
PaymentPlan.objects.update_or_create(
frequency=PaymentPlanType.TWELVE_TIMES,
type=fee_type_value,
defaults={
'due_dates': [current_date + relativedelta(months=1+i) for i in range(12)],
'is_active': False,
'establishment': establishment
}
)
self.stdout.write(self.style.SUCCESS('Payment Plans initialized or updated successfully'))