From e04157324e7cd86b4e85c00355e3043f4107613e Mon Sep 17 00:00:00 2001 From: KONE SOREL Date: Wed, 8 Apr 2026 17:04:41 +0000 Subject: [PATCH] dert --- ...roleurAjaxinsererbaremeactelienparente.php | 1 - Js/fonctions.js | 420 +++++++++--------- Modele/Garantiesbaremepriseencharge.php | 12 +- Vue/Ajaxinsererbaremeacte/index.php | 2 +- .../index.php | 197 ++++---- 5 files changed, 317 insertions(+), 315 deletions(-) diff --git a/Controleur/ControleurAjaxinsererbaremeactelienparente.php b/Controleur/ControleurAjaxinsererbaremeactelienparente.php index 91caf1d6..d65a16b2 100755 --- a/Controleur/ControleurAjaxinsererbaremeactelienparente.php +++ b/Controleur/ControleurAjaxinsererbaremeactelienparente.php @@ -9,7 +9,6 @@ class ControleurAjaxinsererbaremeactelienparente extends Controleur { public function __construct() { $this->garantie = new Garantiesbaremepriseencharge(); - } public function index() diff --git a/Js/fonctions.js b/Js/fonctions.js index fe002869..cdb73b77 100755 --- a/Js/fonctions.js +++ b/Js/fonctions.js @@ -62811,148 +62811,154 @@ function intit_saisie_actebareme() } -function actualiser_bareme_acte_lienparente() -{ - codeGarantie = $("#codeGarantie").val(); - idBaremePriseEnCharge = $("#idBaremePriseEnCharge").val(); - - - - donnees = 'codeGarantie='+codeGarantie; - donnees += '&idBaremePriseEnCharge='+idBaremePriseEnCharge; - - $.ajax({ - url: $("#racineWeb").val()+"Ajaxinsererbaremeactelienparente/", - type : 'post', - data: donnees, - error: function(errorData){ - //alert("Erreur : "+errorData); - }, - success: function(data) { - //alert("Success : "+data); - $('#div_actes_lienparente').html(data); - - - }, - complete: function() { - - } - }); - +/** + * Actualise l'historique des règles spécifiques combinant Acte et Lien de Parenté + */ +function actualiser_bareme_acte_lienparente() { + // 1. Paramètres d'environnement + const racineWeb = $("#racineWeb").val(); + const codeLangue = $("#codeLangue").val(); + const $conteneur = $('#div_actes_lienparente'); + + const donnees = { + codeGarantie: $("#codeGarantie").val(), + idBaremePriseEnCharge: $("#idBaremePriseEnCharge").val() + }; + + // 2. Feedback visuel de chargement + $conteneur.html(` +
+
+ + ${(codeLangue === "en_US") ? "Updating Relationship-Act history..." : "Mise à jour de l'historique Acte/Parenté..."} + +
+ `); + + // 3. Appel AJAX + $.ajax({ + url: racineWeb + "Ajaxinsererbaremeactelienparente/", + type: 'post', + data: donnees, + success: function(data) { + // Affichage fluide des données + $conteneur.hide().html(data).fadeIn(250); + }, + error: function(xhr) { + $conteneur.html(` +
+ + ${(codeLangue === "en_US") ? "Could not refresh specialized history." : "Impossible d'actualiser l'historique spécialisé."} +
+ `); + } + }); } -function inserer_bareme_acte_lienparente() -{ - codeGarantie = $("#codeGarantie").val(); - idBaremePriseEnCharge = $("#idBaremePriseEnCharge").val(); - - codeActeLienParente = $("#codeActeLienParente").val(); - - dateEffetActeLienParente = $("#dateEffetActeLienParente").val(); - codeLienParenteActeLienParente = $("#codeLienParenteActeLienParente").val(); - forfaitPlafondActeLienParente = $("#forfaitPlafondActeLienParente").val(); - codePeriodicitePlafondActeLienParente = $("#codePeriodicitePlafondActeLienParente").val(); - nbreTransactionActeLienParente = $("#nbreTransactionActeLienParente").val(); - codePeriodiciteActeLienParente = $("#codePeriodiciteActeLienParente").val(); - codeTypeRemboursementActeLienParente = $("#codeTypeRemboursementActeLienParente").val(); - delaiCarenceActeLienParente = $("#delaiCarenceActeLienParente").val(); - ticketModerateurActeLienParente = $("#ticketModerateurActeLienParente").val(); - ageMinimumActeLienParente = $("#ageMinimumActeLienParente").val(); - ageMaximumActeLienParente = $("#ageMaximumActeLienParente").val(); - actifActeLienParente = $("#actifActeLienParente").val(); - - forfaitTmActeLienParente = $("#forfaitTmActeLienParente").val(); - - forfaitPlafondActeLienParente = forfaitPlafondActeLienParente.replace(/ /g,""); - forfaitTmActeLienParente = forfaitTmActeLienParente.replace(/ /g,""); - - if(codeActeLienParente <=" "){ - - v_msg="Veuillez entrer un acte!"; - v_msgEng="Please enter an act!"; - alert_ebene(v_msg, v_msgEng); +/** + * Insère une règle spécifique combinant un Acte et un Lien de Parenté + */ +function inserer_bareme_acte_lienparente() { + // 1. Environnement et constantes + const racineWeb = $("#racineWeb").val(); + const codeLangue = $("#codeLangue").val(); + const $divHistorique = $("#div_actes_lienparente"); - $("#codeActeLienParente").focus(); - return; - - } - - if(dateEffetActeLienParente <= " "){ - - v_msg="Veuillez entrer une date d'effet!"; - v_msgEng="Please enter an effective date!"; - alert_ebene(v_msg, v_msgEng); + // 2. Collecte et nettoyage des données (Objet JSON) + const donnees = { + codeGarantie: $("#codeGarantie").val(), + idBaremePriseEnCharge: $("#idBaremePriseEnCharge").val(), + codeActeLienParente: $("#codeActeLienParente").val(), + dateEffetActeLienParente: $("#dateEffetActeLienParente").val(), + codeLienParenteActeLienParente: $("#codeLienParenteActeLienParente").val(), + + // Plafonds (Nettoyage de tous les types d'espaces) + forfaitPlafondActeLienParente: $("#forfaitPlafondActeLienParente").val().replace(/\s/g, ""), + codePeriodicitePlafondActeLienParente: $("#codePeriodicitePlafondActeLienParente").val(), + nbreTransactionActeLienParente: $("#nbreTransactionActeLienParente").val(), + codePeriodiciteActeLienParente: $("#codePeriodiciteActeLienParente").val(), + + // Remboursement & Calculs + codeTypeRemboursementActeLienParente: $("#codeTypeRemboursementActeLienParente").val(), + delaiCarenceActeLienParente: $("#delaiCarenceActeLienParente").val(), + ticketModerateurActeLienParente: $("#ticketModerateurActeLienParente").val(), + forfaitTmActeLienParente: $("#forfaitTmActeLienParente").val().replace(/\s/g, ""), + + // Critères + ageMinimumActeLienParente: $("#ageMinimumActeLienParente").val(), + ageMaximumActeLienParente: $("#ageMaximumActeLienParente").val(), + actifActeLienParente: $("#actifActeLienParente").val() + }; - $("#dateEffetActeLienParente").focus(); - return; - - } - - if(codeLienParenteActeLienParente <= " "){ - - v_msg="Veuillez entrer le lien de parenté!"; - v_msgEng="Please enter the relationship!"; - alert_ebene(v_msg, v_msgEng); + // 3. Validations de saisie avec alertes bilingues + if (!donnees.codeActeLienParente || donnees.codeActeLienParente.trim() === "") { + alert_ebene("Veuillez sélectionner un acte !", "Please select an act!"); + $("#codeActeLienParente").focus(); + return; + } - $("#codeLienParenteActeLienParente").focus(); - return; - - } - - if(actifActeLienParente <= " "){ - - v_msg="Veuillez indiquer le statut de cet barème!"; - v_msgEng="Please indicate the status of this scale!"; - alert_ebene(v_msg, v_msgEng); + if (!donnees.dateEffetActeLienParente || donnees.dateEffetActeLienParente.trim() === "") { + alert_ebene("Veuillez entrer une date d'effet !", "Please enter an effective date!"); + $("#dateEffetActeLienParente").focus(); + return; + } - $("#actifActeLienParente").focus(); - return; - - } - - $("#div_actes_lienparente").html('
' + '
'); - - - donnees = 'codeGarantie='+codeGarantie; - donnees += '&idBaremePriseEnCharge='+idBaremePriseEnCharge; - donnees += '&codeActeLienParente='+codeActeLienParente; - donnees += '&dateEffetActeLienParente='+dateEffetActeLienParente; - donnees += '&codeLienParenteActeLienParente='+codeLienParenteActeLienParente; - donnees += '&forfaitPlafondActeLienParente='+forfaitPlafondActeLienParente; - donnees += '&codePeriodicitePlafondActeLienParente='+codePeriodicitePlafondActeLienParente; - donnees += '&nbreTransactionActeLienParente='+nbreTransactionActeLienParente; - donnees += '&codePeriodiciteActeLienParente='+codePeriodiciteActeLienParente; - - - donnees += '&codeTypeRemboursementActeLienParente='+codeTypeRemboursementActeLienParente; - donnees += '&delaiCarenceActeLienParente='+delaiCarenceActeLienParente; - donnees += '&ticketModerateurActeLienParente='+ticketModerateurActeLienParente; - donnees += '&ageMinimumActeLienParente='+ageMinimumActeLienParente; - donnees += '&ageMaximumActeLienParente='+ageMaximumActeLienParente; - donnees += '&actifActeLienParente='+actifActeLienParente; - - donnees += '&forfaitTmActeLienParente='+forfaitTmActeLienParente; - - - $.ajax({ - url: $("#racineWeb").val()+"Ajaxinsererbaremeactelienparente/ajouter/", - type : 'post', - data: donnees, - error: function(errorData){ - //alert("Erreur : "+errorData); - }, - success: function(data) { - //alert("Success : "+data); - intit_saisie_actebareme_lienparente(); - actualiser_bareme_acte_lienparente(); - - }, - complete: function() { - afficheNombreLigneBareme('actesbaremepriseenchargelienparente'); - } - }); + if (!donnees.codeLienParenteActeLienParente || donnees.codeLienParenteActeLienParente.trim() === "") { + alert_ebene("Veuillez entrer le lien de parenté !", "Please enter the relationship!"); + $("#codeLienParenteActeLienParente").focus(); + return; + } + + if (!donnees.actifActeLienParente || donnees.actifActeLienParente.trim() === "") { + alert_ebene("Veuillez indiquer le statut !", "Please indicate the status!"); + $("#actifActeLienParente").focus(); + return; + } + + // 4. Feedback visuel (Loader SaaS) + const loadingMsg = (codeLangue === "en_US") ? "Deploying Relationship-Act Rule..." : "Déploiement de la règle Acte/Parenté..."; + $divHistorique.html(` +
+
+
+ ${loadingMsg} +
+
+ `); + + // 5. Envoi AJAX + $.ajax({ + url: racineWeb + "Ajaxinsererbaremeactelienparente/ajouter/", + type: 'post', + data: donnees, + success: function(response) { + // Réinitialisation du formulaire + if (typeof intit_saisie_actebareme_lienparente === 'function') { + intit_saisie_actebareme_lienparente(); + } + // Actualisation de l'historique + if (typeof actualiser_bareme_acte_lienparente === 'function') { + actualiser_bareme_acte_lienparente(); + } + }, + error: function(xhr) { + $divHistorique.html(` +
+ + ${(codeLangue === "en_US") ? "Error during specialized insertion." : "Erreur lors de l'insertion spécialisée."} +
+ `); + }, + complete: function() { + // Mise à jour du compteur de lignes (Badge) + if (typeof afficheNombreLigneBareme === 'function') { + afficheNombreLigneBareme('actesbaremepriseenchargelienparente'); + } + } + }); } + function intit_saisie_actebareme_lienparente() { $("#codeActeLienParente").selectpicker('val', ''); @@ -63168,76 +63174,82 @@ function validiteDateEffetActeBareme() { } -function validiteDateEffetActeBaremeLienParente(){ - - var codeGarantie = $("#codeGarantie").val(); - var idBaremePriseEnCharge = $("#idBaremePriseEnCharge").val(); - var codeActeLienParente = $("#codeActeLienParente").val(); - - var dateEffetActeLienParente = $("#dateEffetActeLienParente").val(); - var codeLienParenteActeLienParente = $("#codeLienParenteActeLienParente").val(); - - var datejour = $("#datejour_C").val(); - - var str = dateEffetActeLienParente.split('/'); - var effet = str[2]+'-'+str[1]+'-'+str[0]; - - donnees = 'codeGarantie='+codeGarantie; - donnees += '&idBaremePriseEnCharge='+idBaremePriseEnCharge; - donnees += '&codeActeLienParente='+codeActeLienParente; - donnees += '&codeLienParenteActeLienParente='+codeLienParenteActeLienParente; - - //alert(donnees); - //return; - - $.ajax({ - url: $("#racineWeb").val()+"Ajaxinsererbaremeactelienparente/controle/", - type : 'post', - data: donnees, - error: function(errorData){ - //alert("Erreur : "+errorData); - }, - success: function(data) { - //alert("Success : "+data); - $('#div_maxdateeffetactebaremelienparente').html(data); - - var tdj = new Date(datejour); - var tde = new Date(effet); - - maxDateEffetActeBaremeLienParente = $("#maxDateEffetActeBaremeLienParente").val(); - - - dte=Math.round(Date.parse(tde)/(1000*3600*24)); - dtj=Math.round(Date.parse(tdj)/(1000*3600*24)); - - if((dte < dtj) && (maxDateEffetActeBaremeLienParente!=undefined || maxDateEffetActeBaremeLienParente!='')){ - var tdm = new Date(maxDateEffetActeBaremeLienParente); - dtm = Math.round(Date.parse(tdm)/(1000*3600*24)); - - if(dte < dtm){ - - v_msg="Date d'effet invalide!"; - v_msgEng="Invalid effective date!"; - alert_ebene(v_msg, v_msgEng); - - $("#dateEffetActeLienParente").val(''); - $("#dateEffetActeLienParente").focus(); - return; - }else{ - inserer_bareme_acte_lienparente(); - } - }else{ - - inserer_bareme_acte_lienparente(); - } - - }, - complete: function() { - - - } - }); - +/** + * Contrôle la validité chronologique de la date d'effet pour un acte et un lien de parenté spécifiques + */ +function validiteDateEffetActeBaremeLienParente() { + // 1. Récupération des paramètres + const racineWeb = $("#racineWeb").val(); + const dateEffetSaisieStr = $("#dateEffetActeLienParente").val(); + const dateJourSystemeStr = $("#datejour_C").val(); // Format YYYY-MM-DD attendu + + const donneesControle = { + codeGarantie: $("#codeGarantie").val(), + idBaremePriseEnCharge: $("#idBaremePriseEnCharge").val(), + codeActeLienParente: $("#codeActeLienParente").val(), + codeLienParenteActeLienParente: $("#codeLienParenteActeLienParente").val() + }; + + // Validation immédiate : Données obligatoires + if (!donneesControle.codeActeLienParente) { + alert_ebene("Veuillez sélectionner un acte !", "Please select an act !"); + return; + } + if (!donneesControle.codeLienParenteActeLienParente) { + alert_ebene("Veuillez sélectionner un lien de parenté !", "Please select a relationship !"); + return; + } + if (!dateEffetSaisieStr || dateEffetSaisieStr.trim() === "") { + alert_ebene("Veuillez entrer une date d'effet !", "Please enter an effective date !"); + $("#dateEffetActeLienParente").focus(); + return; + } + + // 2. Conversion des dates pour comparaison + const parts = dateEffetSaisieStr.split('/'); + const dateEffetSaisie = new Date(parts[2], parts[1] - 1, parts[0]); + const dateJourSysteme = new Date(dateJourSystemeStr); + + // 3. Appel AJAX de contrôle + $.ajax({ + url: racineWeb + "Ajaxinsererbaremeactelienparente/controle/", + type: 'post', + data: donneesControle, + success: function(data) { + // Injection du champ hidden maxDateEffetActeBaremeLienParente retourné par le serveur + $('#div_maxdateeffetactebaremelienparente').html(data); + + const maxDateBaseStr = $("#maxDateEffetActeBaremeLienParente").val(); + + // Calcul des timestamps (en jours) + const dte = Math.round(dateEffetSaisie.getTime() / (1000 * 3600 * 24)); + const dtj = Math.round(dateJourSysteme.getTime() / (1000 * 3600 * 24)); + + // 4. Logique de validation chronologique + // On vérifie si la date est valide par rapport à l'historique existant + if (dte < dtj && maxDateBaseStr) { + const maxDateBase = new Date(maxDateBaseStr); + const dtm = Math.round(maxDateBase.getTime() / (1000 * 3600 * 24)); + + if (dte < dtm) { + alert_ebene( + "Date d'effet invalide ! Elle ne peut être antérieure à la dernière modification pour ce couple Acte/Parenté.", + "Invalid effective date ! It cannot be earlier than the last modification for this Act/Relationship pair." + ); + $("#dateEffetActeLienParente").val('').focus(); + return; + } + } + + // 5. Validation réussie : Appel de l'insertion + if (typeof inserer_bareme_acte_lienparente === 'function') { + inserer_bareme_acte_lienparente(); + } + }, + error: function() { + alert_ebene("Erreur lors de la vérification de validité.", "Error during validity check."); + } + }); } //30-03-2023 diff --git a/Modele/Garantiesbaremepriseencharge.php b/Modele/Garantiesbaremepriseencharge.php index d22cc24c..23d73acb 100755 --- a/Modele/Garantiesbaremepriseencharge.php +++ b/Modele/Garantiesbaremepriseencharge.php @@ -888,16 +888,10 @@ class Garantiesbaremepriseencharge extends Modele { //20-02-2023 public function getActesGarantieBaremeLienParenteInitial($idBaremePriseEnCharge,$codeGarantie) { - - $sql = "SELECT a.*, b.libelle, b.libelleEng - FROM actesbaremeinitiallienparente a - JOIN p_acte b ON (a.codeActe=b.codeActe) - WHERE a.codeGarantie = ? - AND a.idBaremePriseEnCharge = ? - ORDER BY codeLienParente, b.libelle, a.dateEffet DESC, a.id DESC;"; - $resultat = $this->executerRequete($sql, array($codeGarantie,$idBaremePriseEnCharge)); + $sql = "CALL sp_get_actes_garantie_bareme_lien_parente_initial(?, ?);"; + + $resultat = $this->executerRequete($sql, array($idBaremePriseEnCharge, $codeGarantie)); - return $resultat->fetchAll(PDO::FETCH_ASSOC); } diff --git a/Vue/Ajaxinsererbaremeacte/index.php b/Vue/Ajaxinsererbaremeacte/index.php index 93f31b11..af07d13b 100755 --- a/Vue/Ajaxinsererbaremeacte/index.php +++ b/Vue/Ajaxinsererbaremeacte/index.php @@ -16,7 +16,7 @@ - + diff --git a/Vue/Ajaxinsererbaremeactelienparente/index.php b/Vue/Ajaxinsererbaremeactelienparente/index.php index 4fc30087..bfbedc23 100755 --- a/Vue/Ajaxinsererbaremeactelienparente/index.php +++ b/Vue/Ajaxinsererbaremeactelienparente/index.php @@ -1,104 +1,101 @@ - - "0"): ?> - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - nettoyer($v['id']); + 0): ?> +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + nettoyer($v['id']); + $supprime = $v['supprime']; + $libelle = est_anglophone() ? $this->nettoyer($v['libelleEng']) : $this->nettoyer($v['libelle']); + $isActif = ($this->nettoyer($v['actif']) == "1"); - - $supprime = $v['supprime']; - - $libelle = $this->nettoyer($v['libelle']); - - if (est_anglophone()) - { - $libelle = $this->nettoyer($v['libelleEng']); - } - - if($this->nettoyer($v['codeObservation'])=="VD"){ - $codeObservation = ""; - }else{ - $codeObservation = $this->nettoyer($v['codeObservation']); - } - - if($this->nettoyer($v['actif'])=="1"){ - $actif = "Oui"; - }else{ - $actif = "Non"; - } - ?> - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
nettoyer($v['dateEffet'])); ?>nettoyer($v['codeLienParente']);?>nettoyer($v['forfaitPlafond']));?>nettoyer($v['codePeriodicitePlafond']);?>nettoyer($v['nbreTransaction']);?>nettoyer($v['codePeriodicite']); ?> nettoyer($v['codeTypeRemboursement']); ?>nettoyer($v['delaiCarenceActe']);?>nettoyer($v['ticketModerateur']);?>nettoyer($v['forfaitTm']));?>nettoyer($v['ageMinimum']);?>nettoyer($v['ageMaximum']);?> - -
- -
- + $plafond = ($this->nettoyer($v['forfaitPlafond'])=="9999999999") ? _("Illimité"): format_N($this->nettoyer($v['forfaitPlafond'])); + $transac = ($this->nettoyer($v['nbreTransaction'])=="999") ? _("Illimité"): format_N($this->nettoyer($v['nbreTransaction'])); + + $lienparente = est_anglophone() ? $this->nettoyer($v['lienparenteEng']) : $this->nettoyer($v['lienparente']); + $periodicitePlafond = est_anglophone() ? $this->nettoyer($v['periodicitePlafondEng']) : $this->nettoyer($v['periodicitePlafond']); + $periodicite = est_anglophone() ? $this->nettoyer($v['periodiciteEng']) : $this->nettoyer($v['periodicite']); + ?> + + + + nettoyer($v['dateEffet']), $_SESSION['lang']); ?> + + nettoyer($v['codeLienParente']);?> + + + + + + + + nettoyer($v['codeTypeRemboursement']); ?> + nettoyer($v['delaiCarenceActe']);?> m + nettoyer($v['ticketModerateur']));?>% + nettoyer($v['forfaitTm']));?> + + nettoyer($v['ageMinimum']);?> + nettoyer($v['ageMaximum']);?> + + + + + + + + + + + + + + +
- \ No newline at end of file + + +
+ +

+
+ + + \ No newline at end of file