============================================================ RÉSUMÉ DES MODIFICATIONS - C-UNIVERSITY ============================================================ 1. BASE DE DONNÉES / SCHÉMA (database/database.js) ------------------------------------------------------------ - Refonte de la table "etudiants" : les champs annuels (niveau, année scolaire, status, mention, parcours) ont été retirés - Nouvelle table "inscriptions" : stocke chaque inscription annuelle d'un étudiant (niveau, mention, parcours, status, num_inscription) - Nouvelle table "configecolage" : configure le montant d'écolage par mention/niveau - Restructuration de "trancheecolage" : passe à 2 tranches par ligne (tranche1_montant, tranche1_bordereau, tranche2_montant, tranche2_bordereau, is_paid) 2. MODELS ------------------------------------------------------------ database/Models/Etudiants.js - Refonte complète : toutes les fonctions utilisent maintenant des transactions et la table "inscriptions" - Nouvelles fonctions : reinscribeEtudiant, payerTranche, getEtudiantsWithPaidTranche, getAllEtudiantsByAnnee - insertEtudiant : insère dans "etudiants" puis crée une inscription dans "inscriptions" (transaction) - updateEtudiant : met à jour les données permanentes + cherche/crée l'inscription de l'année - deleteEtudiant : suppression en cascade (notes, notesrepech, trancheecolage, inscriptions, etudiants) - payerTranche (remplace createTranche) : gère Tranche 1, Tranche 2, Tranche Complète avec bordereau - getTranche : jointure avec anneescolaire, tri par année décroissante - updateTranche : signature étendue à 4 paramètres (tranche1_montant, tranche1_bordereau, tranche2_montant, tranche2_bordereau) database/Models/AnneeScolaire.js - Correction : ajout des "await" manquants dans setCurrent (bug critique de condition de course) database/Models/Notes.js - Ajout du filtre par annee_scolaire dans toutes les requêtes (getNote, showMoyen, updateNote, blockShowMoyene) - blockShowMoyene : utilise notes.mention_id et notes.etudiant_niveau au lieu des champs supprimés de etudiants database/Models/NoteRepechage.js - Ajout du filtre par annee_scolaire dans getNoteRepech, updateNoteRepech, blockShowMoyenRepech database/Models/Parcours.js - extractFiche : jointure avec inscriptions et anneescolaire au lieu de champs directs sur etudiants database/Models/ConfigEcolage.js (NOUVEAU) - getAllConfigEcolage() : liste toutes les configurations avec noms de mention et niveau - getConfigEcolageByMentionNiveau() : retourne le montant pour une combinaison mention/niveau - upsertConfigEcolage() : INSERT ou UPDATE selon existence - deleteConfigEcolage() : suppression d'une configuration 3. BACKEND (main process / preload) ------------------------------------------------------------ src/main/index.js - Nouveaux handlers IPC : getAllConfigEcolage, getConfigEcolageByMentionNiveau, upsertConfigEcolage, deleteConfigEcolage - Remplacement de createTranche par payerTranche - Ajout de getEtudiantsWithPaidTranche et reinscribeEtudiant - Handlers de notes/rattrapage reçoivent maintenant annee_scolaire en paramètre - Démarrage : updateCurrentYears() et updateStudents() enveloppés dans async/await avec gestion d'erreur src/preload/index.js - Exposition de getEtudiantsByAnnee sur window.etudiants - Remplacement de createTranche par payerTranche - Remplacement de getSingleTranche par getEtudiantsWithPaidTranche et reinscribeEtudiant - Nouvel objet window.configecolage avec 4 méthodes (getAll, getByMentionNiveau, upsert, delete) 4. FRONTEND - COMPOSANTS MODIFIÉS ------------------------------------------------------------ src/renderer/src/Routes/Routes.jsx - Ajout de la route /configecolage vers le composant ConfigEcolage src/renderer/src/components/AddNotes.jsx - Navigation retour transmet selectedAnnee depuis localStorage src/renderer/src/components/AddStudent.jsx (refonte majeure) - Ajout barre de recherche d'étudiant existant (par nom, prénom ou numéro d'inscription) - Réinscription : si étudiant existant sélectionné, appel reinscribeEtudiant au lieu de insertEtudiant - Section paiement écolage intégrée (type de paiement, bordereau, montant, montant restant) - Chargement automatique du montant configuré selon mention/niveau src/renderer/src/components/AjoutTranche.jsx - Formulaire repensé : sélection année scolaire, type de paiement (Tranche 1/2/Complète), numéro de bordereau - Appel payerTranche au lieu de createTranche src/renderer/src/components/AnneeScolaire.jsx - Fonction setCurrent rétablie (était commentée) src/renderer/src/components/Home.jsx - Chargement par 3 appels séparés au lieu de getDataToDashboards - Filtre par année via getEtudiantsByAnnee src/renderer/src/components/Noteclasse.jsx (refonte calcul) - Nouvelle fonction calculerMoyennePonderee centralisée - Gestion correcte du rattrapage (0 = pas de rattrapage, prend la meilleure note si rattrapage > 0) - Remplacement de l'état "session" par "moyennesCalculees" src/renderer/src/components/ReleverNotes.jsx - PDF amélioré : format A4 (210mm x 297mm), redimensionnement automatique - Calcul de moyenne pondérée corrigé avec rattrapage - Décision du jury basée sur le seuil du système de notes (noteSysteme.admis) - Correction noterepech : null si pas de rattrapage (au lieu de la note normale) src/renderer/src/components/Resultat.jsx - Ajout des moyennes avec rattrapage (moyennesRattrapage) - calculerMoyennePonderee dupliquée localement - Correction extractMatieresAndUEs : utilise nomMat et Map src/renderer/src/components/SingleNotes.jsx - Transmission de annee_scolaire aux appels de notes et notes de rattrapage src/renderer/src/components/Student.jsx - Adapté au nouveau modèle avec inscriptions src/renderer/src/components/TrancheEcolage.jsx - Adaptation au nouveau format 2 tranches avec bordereau src/renderer/src/components/UpdateTranche.jsx - Adaptation au nouveau format (tranche1_montant, tranche1_bordereau, tranche2_montant, tranche2_bordereau) src/renderer/src/components/Sidenav.jsx - Ajout du lien vers la page Config Ecolage src/renderer/src/components/function/FonctionRelever.js - Récupération du système de notes intégrée dans les calculs du relevé 5. FRONTEND - NOUVEAUX COMPOSANTS ------------------------------------------------------------ src/renderer/src/components/ConfigEcolage.jsx (NOUVEAU) - Interface d'administration des montants d'écolage par mention et par niveau - Formulaire : sélection mention, niveau, saisie montant total - Tableau : affiche Mention, Niveau, Montant total, Tranche 1 (moitié), Tranche 2 (moitié) - Actions : modifier (pré-remplit le formulaire) et supprimer src/renderer/src/components/Ecolage.jsx (NOUVEAU) - Tableau de suivi des paiements (DataGrid MUI) - Filtres par année scolaire et par niveau - Colonnes : Nom, Prénom, N° inscription, Niveau, Mention, Année, Statut, Contact, Tranches payées, Photo - Indicateur visuel : vert si tranche payée, rouge sinon 6. SYSTÈME D'IMPORT (database/import/Etudiants.js) ------------------------------------------------------------ - Import enveloppé dans une transaction complète - Insertions une par une dans "etudiants" + "inscriptions" (au lieu de batch INSERT) - Résolution de annee_scolaire_id depuis le code d'année - Auto-progression du niveau pour les passants (L1->L2->...->M2->D1->...->PHD) - Rollback automatique en cas d'erreur 7. SYSTÈME DE TRAITEMENT (database/function/System.js) ------------------------------------------------------------ - Refonte de updateStudents : * Récupère toutes les années scolaires triées par date * Pour chaque paire d'années consécutives, traite les étudiants non encore inscrits en année N+1 * Calcule la moyenne avec rattrapage pour déterminer le statut * Crée une nouvelle inscription pour l'année suivante * Copie les notes pour les redoublants * Les étudiants renvoyés (status=4) ne reçoivent pas de nouvelle inscription 8. AUTRES ------------------------------------------------------------ README.md - Mise à jour de la documentation ============================================================ SYNTHÈSE GLOBALE ============================================================ Ces modifications représentent une REFONTE ARCHITECTURALE MAJEURE avec 2 axes : 1. NORMALISATION DE LA BASE DE DONNÉES Séparation des données permanentes d'un étudiant et de ses inscriptions annuelles dans deux tables distinctes, permettant de gérer l'historique complet sur plusieurs années sans dupliquer les données personnelles. 2. MODULE ÉCOLAGE COMPLET Configuration des montants par mention/niveau, paiement par tranche avec numéro de bordereau, suivi intégré, et paiement possible dès l'inscription d'un étudiant. Statistiques : 26 fichiers modifiés, 3 nouveaux fichiers +2755 lignes ajoutées, -1926 lignes supprimées