feat: Ajout des frais d'inscription lors de la création d'un RF [#18]

This commit is contained in:
N3WT DE COMPET
2025-01-25 16:40:08 +01:00
parent 799e1c6717
commit ece23deb19
12 changed files with 333 additions and 136 deletions

View File

@ -1,6 +1,7 @@
from rest_framework import serializers
from .models import RegistrationFileTemplate, RegistrationFile, RegistrationForm, Student, Guardian, Sibling, Language, RegistrationFee
from School.models import SchoolClass
from School.models import SchoolClass, Fee, Discount
from School.serializers import FeeSerializer, DiscountSerializer
from Auth.models import Profile
from Auth.serializers import ProfileSerializer
from GestionMessagerie.models import Messagerie
@ -133,6 +134,9 @@ class RegistrationFormSerializer(serializers.ModelSerializer):
status_label = serializers.SerializerMethodField()
formatted_last_update = serializers.SerializerMethodField()
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)
class Meta:
model = RegistrationForm
fields = '__all__'
@ -140,11 +144,19 @@ class RegistrationFormSerializer(serializers.ModelSerializer):
def create(self, validated_data):
student_data = validated_data.pop('student')
student = StudentSerializer.create(StudentSerializer(), student_data)
fees_data = validated_data.pop('fees', [])
discounts_data = validated_data.pop('discounts', [])
registrationForm = RegistrationForm.objects.create(student=student, **validated_data)
# Associer les IDs des objets Fee et Discount au RegistrationForm
registrationForm.fees.set([fee.id for fee in fees_data])
registrationForm.discounts.set([discount.id for discount in discounts_data])
return registrationForm
def update(self, instance, validated_data):
student_data = validated_data.pop('student', None)
fees_data = validated_data.pop('fees', [])
discounts_data = validated_data.pop('discounts', [])
if student_data:
student = instance.student
StudentSerializer.update(StudentSerializer(), student, student_data)
@ -156,6 +168,10 @@ class RegistrationFormSerializer(serializers.ModelSerializer):
pass
instance.save()
# Associer les IDs des objets Fee et Discount au RegistrationForm
instance.fees.set([fee.id for fee in fees_data])
instance.discounts.set([discount.id for discount in discounts_data])
return instance
def get_status_label(self, obj):