feat: Mise en place des paiements en plusieurs fois (partie BACK) [#25]

This commit is contained in:
N3WT DE COMPET
2025-02-11 20:48:11 +01:00
parent ffc6ce8de8
commit 23203c0397
17 changed files with 599 additions and 86 deletions

View File

@ -0,0 +1,58 @@
from django.core.management.base import BaseCommand
from django.utils import timezone
from dateutil.relativedelta import relativedelta
from School.models import PaymentPlan, PaymentPlanType, FeeType
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()
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
}
)
# 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
}
)
# 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
}
)
# 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
}
)
self.stdout.write(self.style.SUCCESS('Payment Plans initialized or updated successfully'))