mirror of
https://git.v0id.ovh/n3wt-innov/n3wt-school.git
synced 2026-01-28 23:43:22 +00:00
fix: Calcul du montant total des tarif par RF + affichage des tarifs
actifs lors de la création d'un RF [#26]
This commit is contained in:
@ -8,27 +8,6 @@ from School.models import SchoolClass, Fee, Discount
|
||||
|
||||
from datetime import datetime
|
||||
|
||||
class RegistrationFee(models.Model):
|
||||
"""
|
||||
Représente un tarif ou frais d’inscription avec différentes options de paiement.
|
||||
"""
|
||||
class PaymentOptions(models.IntegerChoices):
|
||||
SINGLE_PAYMENT = 0, _('Paiement en une seule fois')
|
||||
MONTHLY_PAYMENT = 1, _('Paiement mensuel')
|
||||
QUARTERLY_PAYMENT = 2, _('Paiement trimestriel')
|
||||
|
||||
name = models.CharField(max_length=255, unique=True)
|
||||
description = models.TextField(blank=True)
|
||||
base_amount = models.DecimalField(max_digits=10, decimal_places=2)
|
||||
discounts = models.JSONField(blank=True, null=True)
|
||||
supplements = models.JSONField(blank=True, null=True)
|
||||
validity_start_date = models.DateField()
|
||||
validity_end_date = models.DateField()
|
||||
payment_option = models.IntegerField(choices=PaymentOptions, default=PaymentOptions.SINGLE_PAYMENT)
|
||||
|
||||
def __str__(self):
|
||||
return self.name
|
||||
|
||||
class Language(models.Model):
|
||||
"""
|
||||
Représente une langue parlée par l’élève.
|
||||
|
||||
@ -1,6 +1,6 @@
|
||||
from rest_framework import serializers
|
||||
from .models import RegistrationFileTemplate, RegistrationFile, RegistrationForm, Student, Guardian, Sibling, Language, RegistrationFee
|
||||
from School.models import SchoolClass, Fee, Discount
|
||||
from .models import RegistrationFileTemplate, RegistrationFile, RegistrationForm, Student, Guardian, Sibling, Language
|
||||
from School.models import SchoolClass, Fee, Discount, FeeType
|
||||
from School.serializers import FeeSerializer, DiscountSerializer
|
||||
from Auth.models import Profile
|
||||
from Auth.serializers import ProfileSerializer
|
||||
@ -11,12 +11,6 @@ from django.utils import timezone
|
||||
import pytz
|
||||
from datetime import datetime
|
||||
|
||||
class RegistrationFeeSerializer(serializers.ModelSerializer):
|
||||
id = serializers.IntegerField(required=False)
|
||||
class Meta:
|
||||
model = RegistrationFee
|
||||
fields = '__all__'
|
||||
|
||||
class RegistrationFileSerializer(serializers.ModelSerializer):
|
||||
class Meta:
|
||||
model = RegistrationFile
|
||||
@ -136,6 +130,8 @@ class RegistrationFormSerializer(serializers.ModelSerializer):
|
||||
registration_files = RegistrationFileSerializer(many=True, required=False)
|
||||
fees = serializers.PrimaryKeyRelatedField(queryset=Fee.objects.all(), many=True, required=False)
|
||||
discounts = serializers.PrimaryKeyRelatedField(queryset=Discount.objects.all(), many=True, required=False)
|
||||
totalRegistrationFees = serializers.SerializerMethodField()
|
||||
totalTuitionFees = serializers.SerializerMethodField()
|
||||
|
||||
class Meta:
|
||||
model = RegistrationForm
|
||||
@ -184,6 +180,14 @@ class RegistrationFormSerializer(serializers.ModelSerializer):
|
||||
|
||||
return local_time.strftime("%d-%m-%Y %H:%M")
|
||||
|
||||
def get_totalRegistrationFees(self, obj):
|
||||
for fee in obj.fees.filter(type=FeeType.REGISTRATION_FEE):
|
||||
print(fee.base_amount)
|
||||
return sum(fee.base_amount for fee in obj.fees.filter(type=FeeType.REGISTRATION_FEE))
|
||||
|
||||
def get_totalTuitionFees(self, obj):
|
||||
return sum(fee.base_amount for fee in obj.fees.filter(type=FeeType.TUITION_FEE))
|
||||
|
||||
class StudentByParentSerializer(serializers.ModelSerializer):
|
||||
id = serializers.IntegerField(required=False)
|
||||
|
||||
|
||||
@ -1,7 +1,7 @@
|
||||
from django.urls import path, re_path
|
||||
|
||||
from . import views
|
||||
from .views import RegistrationFileTemplateView, RegisterFormListView, RegisterFormView, StudentView, GuardianView, ChildrenListView, StudentListView, RegistrationFeeView, RegistrationFileView
|
||||
from .views import RegistrationFileTemplateView, RegisterFormListView, RegisterFormView, StudentView, GuardianView, ChildrenListView, StudentListView, RegistrationFileView
|
||||
|
||||
urlpatterns = [
|
||||
re_path(r'^registerForms/(?P<_filter>[a-zA-z]+)$', RegisterFormListView.as_view(), name="registerForms"),
|
||||
@ -30,9 +30,6 @@ urlpatterns = [
|
||||
# Page INSCRIPTION - Liste des élèves
|
||||
re_path(r'^students$', StudentListView.as_view(), name="students"),
|
||||
|
||||
# Frais d'inscription
|
||||
re_path(r'^registrationFees$', RegistrationFeeView.as_view(), name="registrationFees"),
|
||||
|
||||
# modèles de fichiers d'inscription
|
||||
re_path(r'^registrationFileTemplates$', RegistrationFileTemplateView.as_view(), name='registrationFileTemplates'),
|
||||
re_path(r'^registrationFileTemplates/(?P<_id>[0-9]+)$', RegistrationFileTemplateView.as_view(), name="registrationFileTemplate"),
|
||||
|
||||
@ -22,10 +22,10 @@ import Subscriptions.mailManager as mailer
|
||||
import Subscriptions.util as util
|
||||
|
||||
from Subscriptions.automate import Automate_RF_Register, load_config, getStateMachineObjectState, updateStateMachine
|
||||
from .serializers import RegistrationFormSerializer, StudentSerializer, RegistrationFormByParentSerializer, StudentByRFCreationSerializer, RegistrationFileSerializer, RegistrationFileTemplateSerializer, RegistrationFormByParentSerializer, StudentByRFCreationSerializer, RegistrationFeeSerializer
|
||||
from .serializers import RegistrationFormSerializer, StudentSerializer, RegistrationFormByParentSerializer, StudentByRFCreationSerializer, RegistrationFileSerializer, RegistrationFileTemplateSerializer, RegistrationFormByParentSerializer, StudentByRFCreationSerializer
|
||||
from .pagination import CustomPagination
|
||||
from .signals import clear_cache
|
||||
from .models import Student, Guardian, RegistrationForm, RegistrationFee, RegistrationFileTemplate, RegistrationFile
|
||||
from .models import Student, Guardian, RegistrationForm, RegistrationFileTemplate, RegistrationFile
|
||||
from .automate import Automate_RF_Register, load_config, getStateMachineObjectState, updateStateMachine
|
||||
|
||||
from Auth.models import Profile
|
||||
@ -335,16 +335,6 @@ class StudentListView(APIView):
|
||||
students_serializer = StudentByRFCreationSerializer(students, many=True)
|
||||
return JsonResponse(students_serializer.data, safe=False)
|
||||
|
||||
# API utilisée pour la vue de personnalisation des frais d'inscription pour la structure
|
||||
class RegistrationFeeView(APIView):
|
||||
"""
|
||||
Liste les frais d’inscription.
|
||||
"""
|
||||
def get(self, request):
|
||||
tarifs = bdd.getAllObjects(RegistrationFee)
|
||||
tarifs_serializer = RegistrationFeeSerializer(tarifs, many=True)
|
||||
return JsonResponse(tarifs_serializer.data, safe=False)
|
||||
|
||||
class RegistrationFileTemplateView(APIView):
|
||||
"""
|
||||
Gère les fichiers templates pour les dossiers d’inscription.
|
||||
|
||||
Reference in New Issue
Block a user