diff --git a/Controleur/ControleurAjaximporterlisteassure.php b/Controleur/ControleurAjaximporterlisteassure.php
index 6cee698..0492dfc 100644
--- a/Controleur/ControleurAjaximporterlisteassure.php
+++ b/Controleur/ControleurAjaximporterlisteassure.php
@@ -87,133 +87,102 @@ class ControleurAjaximporterlisteassure extends Controleurrequete
public function importermodele()
{
- $idAvenant = $this->requete->getParametreFormulaire("idAvenant");
- $cheminFichier = $this->requete->getParametreFormulaire("cheminFichier");
+ $idAvenant = $this->requete->getParametreFormulaire("idAvenant");
+ $cheminFichier = $this->requete->getParametreFormulaire("cheminFichier");
$_SESSION['idAvenant_C'] = $idAvenant;
-
$this->beneficiaire->initIinsererLigneModeleAssure();
- $dataXLS = array();
-
$fichier = "Temp/import/".$cheminFichier;
- if (!file_exists($fichier))
- {
- $this->genererVueAjax(array('message_erreur_excel' => "Fichier introubable sur le serveur !", 'succes_impot_execl' => "0"));
+ // 1. Vérification du fichier
+ if (!file_exists($fichier)) {
+ $this->genererVueAjax(array(
+ 'message_erreur_excel' => "Erreur : Fichier introuvable sur le serveur !",
+ 'succes_impot_execl' => "0"
+ ));
exit();
}
- /*
- $docXLS = new PHPExcel_Reader_Excel2007();
-
- $Excel = $docXLS->load($fichier);
-
- $Excel->setActiveSheetIndex(0);
-
- $feuille=$Excel->getActiveSheet();
- */
-
- $docXLS = new \PhpOffice\PhpSpreadsheet\Reader\Xlsx();
- $Excel = $docXLS->load($fichier);
- $feuille = $Excel->getSheet($Excel->getFirstSheetIndex());
-
-
- $derniereLigne = $feuille->getHighestRow();
- $derniereColonne = $feuille->getHighestColumn();
-
- $tableauExcel = $feuille->toArray(null, true, true, true);
-
- for ($i = 2; $i <= $derniereLigne; $i++)
- {
- $categorie = trim($tableauExcel[$i]['A']);
- $numeroAdherent = trim($tableauExcel[$i]['B']);
-
- $noFamille = trim($tableauExcel[$i]['C']);
- if ($noFamille<=" ")
+ try {
+ $docXLS = new \PhpOffice\PhpSpreadsheet\Reader\Xlsx();
+ $Excel = $docXLS->load($fichier);
+ $feuille = $Excel->getSheet($Excel->getFirstSheetIndex());
+
+ $derniereLigne = $feuille->getHighestRow();
+ $tableauExcel = $feuille->toArray(null, true, true, true);
+
+ // 2. Boucle de validation et insertion
+ for ($i = 2; $i <= $derniereLigne; $i++)
{
- $noFamille = "0";
+ // ... (vos extractions trim() restent identiques)
+ $nom = trim($tableauExcel[$i]['D']);
+ $prenoms = trim($tableauExcel[$i]['E']);
+ $nomComplet = $nom . " " . $prenoms;
+ $codeLienParente = trim($tableauExcel[$i]['F']);
+ $sexe = trim($tableauExcel[$i]['I']);
+
+ // Validation Catégorie
+ if ( (trim($tableauExcel[$i]['A']) <= " ") && ($codeLienParente == "A")) {
+ $this->renvoyerErreurImport("Ligne $i : $nomComplet => Pas de catégorie !");
+ }
+
+ // Validation Lien de parenté
+ if (!in_array($codeLienParente, array("A", "C", "E", "O"))) {
+ $this->renvoyerErreurImport("Ligne $i : $nomComplet => Lien de parenté '$codeLienParente' invalide !");
+ }
+
+ // Validation Sexe
+ if (!in_array($sexe, array("M", "F"))) {
+ $this->renvoyerErreurImport("Ligne $i : $nomComplet => Genre '$sexe' invalide !");
+ }
+
+ // Insertion en base temporaire
+ $this->beneficiaire->insererLigneModeleAssure($idAvenant, ...$params);
}
- $nom = trim($tableauExcel[$i]['D']);
- $prenoms = trim($tableauExcel[$i]['E']);
-
- $codeLienParente = trim($tableauExcel[$i]['F']);
+ $this->beneficiaire->gererIncorporationSurFamExistante();
- $codeNaturePiece = trim($tableauExcel[$i]['G']);
- $numeroPiece = trim($tableauExcel[$i]['H']);
- $sexe = trim($tableauExcel[$i]['I']);
- $codeGroupeSanguin = trim($tableauExcel[$i]['J']);
- $dateNaissance = trim($tableauExcel[$i]['K']);
- $telephonePortable = trim($tableauExcel[$i]['L']);
- $email = trim($tableauExcel[$i]['M']);
-
- $nomComplet = $nom . " " . $prenoms;
-
- if ( ($categorie<=" ") && ($codeLienParente=="A"))
- {
- $this->genererVueAjax(array('message_erreur_excel' => $nomComplet . " => Pas de catégorie!", 'succes_impot_execl' => "0"));
- exit();
- }
-
- $liste_liens = array("A", "C", "E", "O");
- if (!in_array($codeLienParente, $liste_liens))
- {
- $this->genererVueAjax(array('message_erreur_excel' => $nomComplet . " => Revoir lien de parenté!", 'succes_impot_execl' => "0"));
- exit();
- }
+ // 3. Vérifications métier post-import
+ $this->verifierContraintesMetier();
- $liste_sexes = array("M", "F");
- if (!in_array($sexe, $liste_sexes))
- {
- $this->genererVueAjax(array('message_erreur_excel' => $nomComplet . " => Revoir le sexe!", 'succes_impot_execl' => "0"));
- exit();
- }
+ // 4. SUCCÈS FINAL
+ $this->genererVueAjax(array(
+ 'message_erreur_excel' => "Fichier analysé avec succès ! Préparation de l'incorporation...",
+ 'succes_impot_execl' => "1"
+ ));
- // Penser à gérer les erreurs de date
-
- $this->beneficiaire->insererLigneModeleAssure($idAvenant, $categorie, $numeroAdherent,
- $noFamille, $nom, $prenoms, $codeLienParente, $codeNaturePiece, $numeroPiece, $sexe,
- $codeGroupeSanguin, $dateNaissance, $telephonePortable, $email);
-
- /*
- echo "Ligne ". $i . " => OK";
- echo "
";
- */
+ } catch (Exception $e) {
+ $this->renvoyerErreurImport("Erreur lors de la lecture du fichier : " . $e->getMessage());
}
-
- $this->beneficiaire->gererIncorporationSurFamExistante();
-
- // Vérification de certaines erreurs :
- // 1 => Si nouvelle famille sans Adhérent
- $noFamilleSansAdherent = $this->beneficiaire->getadhimpfamillesansadherent();
- if ($noFamilleSansAdherent>"0")
- {
- $this->genererVueAjax(array('message_erreur_excel' => "Famille " . $noFamilleSansAdherent . " => Adherent Principal manquant !", 'succes_impot_execl' => "0"));
- exit();
- }
-
- // 2 => Si plus d'1 Adhérent dans une même famille
- $noFamillePlusieursAdherent = $this->beneficiaire->getadhimpfamilleplusieursadherent();
- if ($noFamillePlusieursAdherent>"0")
- {
- $this->genererVueAjax(array('message_erreur_excel' => "Famille " . $noFamillePlusieursAdherent . " => Plusieurs Adherents Principaux !", 'succes_impot_execl' => "0"));
- exit();
- }
-
- // 3 => Incorporation sur une ancienne famille introuvable dans la police
- $noFamilleExistantSansAdherent = $this->beneficiaire->getadhimpfamilleexistantsansadherent();
- if ($noFamilleExistantSansAdherent>"0")
- {
- $this->genererVueAjax(array('message_erreur_excel' => "Famille " . $noFamilleExistantSansAdherent . " => Ancienne famille introuvable !", 'succes_impot_execl' => "0"));
- exit();
- }
-
- $this->genererVueAjax(array('message_erreur_excel' => "Fichier temporaire extrait du serveur avec succes!", 'succes_impot_execl' => "1"));
-
exit();
}
-
+
+ /**
+ * Helper pour uniformiser les sorties d'erreur
+ */
+ private function renvoyerErreurImport($message) {
+ $this->genererVueAjax(array(
+ 'message_erreur_excel' => $message,
+ 'succes_impot_execl' => "0"
+ ));
+ exit();
+ }
+
+ /**
+ * Regroupe vos vérifications de cohérence famille
+ */
+ private function verifierContraintesMetier() {
+ $err1 = $this->beneficiaire->getadhimpfamillesansadherent();
+ if ($err1 > "0") $this->renvoyerErreurImport("Famille $err1 => Adhérent Principal (A) manquant !");
+
+ $err2 = $this->beneficiaire->getadhimpfamilleplusieursadherent();
+ if ($err2 > "0") $this->renvoyerErreurImport("Famille $err2 => Plusieurs Adhérents Principaux détectés !");
+
+ $err3 = $this->beneficiaire->getadhimpfamilleexistantsansadherent();
+ if ($err3 > "0") $this->renvoyerErreurImport("Famille $err3 => Ancienne famille introuvable dans cette police !");
+ }
+
//
public function traiterlignesimportees()
{
diff --git a/Js/fonctions.js b/Js/fonctions.js
index 1a53cfe..91c582e 100755
--- a/Js/fonctions.js
+++ b/Js/fonctions.js
@@ -2580,8 +2580,7 @@ function importer_modele_assure(idAvenant) {
var isSuccess = $("#succes_impot_execl").val();
- maj_etape_3_import_assures();
- /*
+
if (isSuccess === "1") {
alert_ebene("Liaison réussie ! Passage au traitement...", "Link successful! Moving to processing...");
maj_etape_3_import_assures();
@@ -2589,7 +2588,7 @@ function importer_modele_assure(idAvenant) {
div_export.empty(); // On vide le spinner pour laisser voir l'erreur
alert_ebene("Le fichier contient des erreurs de format.", "The file contains formatting errors.");
}
- */
+
},
error: function() {
alert_ebene("Erreur technique lors de l'importation.", "Technical error during import.");
diff --git a/Vue/Ajaximporterlisteassure/importermodele.php b/Vue/Ajaximporterlisteassure/importermodele.php
index 36c8fc4..b088579 100644
--- a/Vue/Ajaximporterlisteassure/importermodele.php
+++ b/Vue/Ajaximporterlisteassure/importermodele.php
@@ -1,4 +1,9 @@
-
| = _("Numéro") ?> | -= _("Effet") ?> | -= _("Libellé") ?> | -= _("Commentaires") ?> | -= _("Producteur") ?> | -= _("Saisie") ?> | -= _("Importer...") ?> | -
|---|
| = _("N° Avenant") ?> | += _("Date Effet") ?> | += _("Mouvement") ?> | += _("Motif / Commentaires") ?> | += _("Auteur") ?> | += _("Action") ?> | +
|---|---|---|---|---|---|
| + = $this->nettoyer($avenant['numeroAvenant']) ?> + | ++ + = dateLang($this->nettoyer($avenant['dateEffet'])) ?> + + | +
+ = $this->nettoyer($avenant['libelleAvenant']) ?>
+
+ Saisie le = dateheureLang($this->nettoyer($avenant['dateSysteme'])) ?>
+
+ |
+
+
+ = $this->nettoyer($avenant['motifavenant']) ?: '-' ?>
+
+ |
+ + = $this->nettoyer($avenant['utilisateur']) ?> + | ++ + | +