Merge branch 'main' of git.ebene.ovh:ebene/radiantrh

This commit is contained in:
2026-01-06 17:22:08 +00:00
21 changed files with 1618 additions and 890 deletions

View File

@@ -87,133 +87,122 @@ 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";
$categorie = trim($tableauExcel[$i]['A']);
$numeroAdherent = trim($tableauExcel[$i]['B']);
$noFamille = trim($tableauExcel[$i]['C']);
if ($noFamille<=" ")
{
$noFamille = "0";
}
$nom = trim($tableauExcel[$i]['D']);
$prenoms = trim($tableauExcel[$i]['E']);
$codeLienParente = trim($tableauExcel[$i]['F']);
$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;
// 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, $categorie, $numeroAdherent,
$noFamille, $nom, $prenoms, $codeLienParente, $codeNaturePiece, $numeroPiece, $sexe,
$codeGroupeSanguin, $dateNaissance, $telephonePortable, $email);
}
$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 "<BR>";
*/
} 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()
{