diff --git a/.gitignore b/.gitignore index dca9940f..b0c72464 100644 --- a/.gitignore +++ b/.gitignore @@ -7,4 +7,8 @@ logs/ logs Cron/prod.ini Temp/ -Temp \ No newline at end of file +Temp +*.sh +.ssh/ +Gettext/ +Gettext \ No newline at end of file diff --git a/Bootstrap_new/css/custom.css b/Bootstrap_new/css/custom.css index bc65ff70..4d6e7889 100755 --- a/Bootstrap_new/css/custom.css +++ b/Bootstrap_new/css/custom.css @@ -117,70 +117,6 @@ background-color: #286090; color: white; } -/* style du datepicker */ - -.ui-datepicker{ -background:#c9ebf2; -border: 1px solid grey; -} - -.ui-datepicker-calendar th{ -background:white -} - -.ui-datepicker .ui-state-default{ -color:grey -} - -.ui-datepicker-today{ -background:#FFF88D !important; -color:red -} -.ui-datepicker .ui-state-active{ -color: white !important; -} - -.ui-state-highlight{ -color:white !important -} - -.ui-datepicker-current-day{ -background:#0B5ED7; -color:white -} - -.ui-datepicker td{ -border: 1px grey; -padding:5px -} - -.ui-icon-circle-triangle-w,.ui-icon-circle-triangle-e{ -display:none -} - -.ui-datepicker .ui-state-active { -color:grey !important -} - -.ui-datepicker-current-day .ui-state-active{ -color:white !important -} - -.ui-datepicker-today .ui-state-active{ -color:red !important -} - -.ui-state-highlight{ -color:red !important - -} - -.ui-state-disabled{ -border:none !important; -background:white !important -} - - /* style de la barre de navigation verticale */ .sidebar{ max-width:200px; diff --git a/Bootstrap_new/css/theme-modern.css b/Bootstrap_new/css/theme-modern.css index 8268ea69..badd880d 100644 --- a/Bootstrap_new/css/theme-modern.css +++ b/Bootstrap_new/css/theme-modern.css @@ -1410,24 +1410,22 @@ select[class*="selectpicker"], #titre-page { color: var(--color-primary); letter-spacing: -0.5px; - font-family: 'DM Sans', sans-serif; /* Ou votre police SaaS */ + font-family: 'DM Sans', sans-serif; /* Ou votre police SaaS */ } -/* ENTÊTE FIXE "STICKY" */ +/* --- LE HEADER STICKY (Base Neutral Pro) --- */ .header-section { - position: -webkit-sticky; /* Pour Safari */ position: sticky; top: 0; - z-index: 1050; /* Doit être supérieur aux cartes et tableaux */ - background-color: rgba(244, 247, 250, 0.8); /* Couleur de fond de votre page avec transparence */ - backdrop-filter: blur(10px); /* Effet de flou moderne */ - padding-top: 15px; - padding-bottom: 15px; - margin-bottom: 0.5rem !important; - transition: all 0.3s ease; + z-index: 1000 !important; + background-color: rgba(255, 255, 255, 0.85); + backdrop-filter: blur(10px); + -webkit-backdrop-filter: blur(10px); + padding: 5px 0; + margin-bottom: 0.65rem !important; + border-bottom: 1px solid rgba(0,0,0,0.05); } -/* On s'assure que la carte à l'intérieur de la section fixe garde son ombre */ .header-section > div { box-shadow: 0 4px 4px rgba(0, 0, 0, 0.08) !important; } @@ -1744,3 +1742,223 @@ select[class*="selectpicker"], animation: none !important; } +/* Force l'alignement de la hauteur du SelectPicker avec les inputs sm */ +.bootstrap-select .btn.dropdown-toggle { + padding-top: 0.25rem !important; + padding-bottom: 0.25rem !important; + height: 31px !important; /* Hauteur standard du form-control-sm */ + font-size: 8.5pt !important; + display: flex; + align-items: center; + background-color: #fff !important; + border-width: 2px !important; +} + +/* Aligne l'icône de flèche */ +.bootstrap-select .btn.dropdown-toggle .filter-option { + display: flex; + align-items: center; + height: 100%; +} + +/* Corrige la bordure spécifique si vous utilisez border-start-0 */ +.bootstrap-select.border-2 .btn.dropdown-toggle { + border-color: #dee2e6 !important; +} + +/* --- LE DATEPICKER (Correction Visuelle & Z-Index) --- */ +.datepicker-dropdown { + /* Le secret : un index supérieur au header (1000) */ + z-index: 2000 !important; + position: absolute !important; + padding: 10px !important; + border: 2px solid #212e53 !important; + border-radius: 10px !important; + box-shadow: 0 10px 25px rgba(0,0,0,0.1) !important; + background-color: #fff !important; +} + +/* Style des jours actifs (Couleur de ta charte) */ +.datepicker table tr td.active { + background-color: #212e53 !important; + border-radius: 5px !important; + color: #fff !important; +} + +/* 1. On ne force JAMAIS le display:block ici, sinon il reste visible en bas de page */ +#ui-datepicker-div { + z-index: 99999 !important; /* Priorité absolue sur le header et les modals */ + display: none; /* Laisse jQuery UI le contrôler */ + + /* Design SaaS Neutral Pro */ + background: #ffffff !important; + border: 1px solid #212e53 !important; + border-radius: 12px !important; + box-shadow: 0 15px 35px rgba(0,0,0,0.2) !important; + padding: 10px !important; + font-family: inherit; +} + +/* --- LE DATEPICKER "NEUTRAL PRO" (jQuery UI) --- */ +/* Conteneur principal : Plus grand, plus aéré, ombre premium */ +.ui-datepicker { + font-size: 10pt !important; /* Police plus lisible */ + background: #fff !important; /* Fond blanc pur */ + border: 2px solid #212e53 !important; /* Couleur Primary */ + border-radius: 12px !important; + padding: 15px !important; /* Plus d'espace interne */ + box-shadow: 0 10px 30px rgba(0,0,0,0.15) !important; /* Ombre plus douce */ + width: 280px !important; /* Largeur fixe pour la lisibilité */ +} + +.ui-datepicker-header { + background: #f8f9fa !important; + border: none !important; + border-bottom: 1px solid #eee !important; + border-radius: 8px 8px 0 0 !important; +} + +.ui-datepicker-title { + color: #212e53 !important; /* Couleur Primary */ + font-weight: bold !important; + text-transform: uppercase; + font-size: 11pt !important; +} + +/* Masquage des flèches par défaut */ +.ui-icon-circle-triangle-w, .ui-icon-circle-triangle-e { display: none; } + +/* Jours de la semaine : Gris légers, en majuscules */ +.ui-datepicker-calendar th { + font-weight: bold; + color: #888; + text-transform: uppercase; + font-size: 8.5pt; + padding-bottom: 10px; +} + +/* Tableau des jours : Cellules plus grandes, sans bordures lourdes */ +.ui-datepicker-calendar { + border-collapse: collapse; +} + +.ui-datepicker-calendar td { + padding: 2px; +} + +/* Style des Jours Standards : Pas de bordures, fond blanc */ +.ui-datepicker .ui-state-default { + background: #fff !important; + color: #555 !important; + border: none !important; + text-align: center; + padding: 8px !important; + border-radius: 8px; /* Jours arrondis */ + font-weight: 500; +} + +/* Hover sur les jours : Gris très léger */ +.ui-datepicker .ui-state-default:hover { + background-color: #f1f3f5 !important; + color: #212e53 !important; +} + +/* Jours Désactivés (Passés/Futurs) : Gris léger */ +.ui-state-disabled { + opacity: 0.35 !important; +} + +/* --- LE STYLE DES ÉTATS (Charte Graphique) --- */ +/* --- LE STYLE DU JOUR COURANT (AUJOURD'HUI) --- */ +.ui-datepicker-today a { + background-color: #FFF88D !important; /* Ton Jaune Charte */ + color: #212e53 !important; /* On garde le bleu Primary pour le texte */ + font-weight: 800 !important; /* On force un gras très prononcé */ + border-radius: 50% !important; /* On en fait une pastille parfaite */ + width: 35px; + height: 35px; + display: flex !important; + align-items: center; + justify-content: center; + margin: 0 auto !important; + position: relative; + box-shadow: 0 2px 4px rgba(0,0,0,0.1); /* Un léger relief */ +} + +/* Petit indicateur visuel discret sous le numéro d'aujourd'hui */ +.ui-datepicker-today a::after { + content: ''; + position: absolute; + bottom: 2px; + width: 12px; + height: 2px; + background-color: #dc3545; /* Barre rouge horizontale sous le chiffre */ + border-radius: 2px; +} + +/* Jour Sélectionné (Si l'utilisateur clique dessus) */ +/* Couleur Primary Charte avec texte blanc net */ +.ui-datepicker-current-day a, +.ui-datepicker .ui-state-active { + background-color: #212e53 !important; /* Couleur Primary Charte */ + color: #fff !important; /* Texte blanc pur */ + font-weight: bold !important; + border: none !important; + box-shadow: 0 2px 5px rgba(0,0,0,0.2); /* Légère ombre pour le relief */ +} + +/* Effet au survol pour plus de dynamisme */ +.ui-datepicker-today a:hover { + background-color: #f7e031 !important; /* Un jaune un peu plus soutenu */ + transform: scale(1.1); + transition: all 0.2s ease; +} + +/* --- LE STYLE DU JOUR COURANT (AUJOURD'HUI) --- */ +/* On cible le lien car jQuery UI applique ses styles dessus */ +.ui-datepicker-today a.ui-state-default { + background-color: #FFF88D !important; /* Ton Jaune Charte */ + color: #212e53 !important; /* Texte bleu foncé */ + font-weight: 800 !important; + border: 1px solid #212e53 !important; /* Bordure pour bien voir le cercle */ + border-radius: 50% !important; /* Cercle parfait */ + + /* On centre le chiffre dans le cercle */ + display: flex !important; + align-items: center; + justify-content: center; + + width: 30px !important; + height: 30px !important; + margin: 0 auto !important; + padding: 0 !important; + box-shadow: 0 2px 4px rgba(0,0,0,0.1) !important; +} + +/* La petite barre rouge sous le chiffre pour le rappel d'importance */ +.ui-datepicker-today a.ui-state-default::after { + content: ''; + position: absolute; + bottom: 2px; + width: 10px; + height: 2px; + background-color: #dc3545; + border-radius: 2px; +} + +/* --- LE STYLE DU JOUR SÉLECTIONNÉ (CLIQUE) --- */ +.ui-datepicker-current-day a.ui-state-active { + background-color: #212e53 !important; /* Primary */ + color: #ffffff !important; /* Blanc */ + border-radius: 50% !important; + border: none !important; +} + +/* On s'assure que les jours sont propres */ +.ui-datepicker th { color: #888 !important; text-transform: uppercase; font-size: 8pt; } +.ui-datepicker td span, .ui-datepicker td a { + border: none !important; + background: none !important; + text-align: center !important; + border-radius: 6px !important; +} \ No newline at end of file diff --git a/Controleur/ControleurAjaxparamseuilalerte.php b/Controleur/ControleurAjaxparamseuilalerte.php index 12bed764..0ec00023 100755 --- a/Controleur/ControleurAjaxparamseuilalerte.php +++ b/Controleur/ControleurAjaxparamseuilalerte.php @@ -115,5 +115,16 @@ class ControleurAjaxparamseuilalerte extends Controleurrequete // $this->genererVueAjax(); } + + public function actualisegarantieproduit() + { + $codeProduit = $this->requete->getParametreFormulaire("codeProduit"); + + $garanties_sans_seuils = $this->produit->getgarantiessansseuil($codeProduit); + + $garanties_avec_seuils = $this->produit->getgarantiesavecseuil($codeProduit); + + $this->genererVueAjax(array('garanties_sans_seuils' => $garanties_sans_seuils, 'garanties_avec_seuils' => $garanties_avec_seuils)); + } } \ No newline at end of file diff --git a/Controleur/ControleurAjaxprestatairesreseau.php b/Controleur/ControleurAjaxprestatairesreseau.php index 01c9b18f..621ab8cf 100755 --- a/Controleur/ControleurAjaxprestatairesreseau.php +++ b/Controleur/ControleurAjaxprestatairesreseau.php @@ -69,4 +69,34 @@ class ControleurAjaxprestatairesreseau extends Controleurrequete $this->executerAction("index"); } + + public function rechercherdispos() + { + // Récupération sécurisée du paramètre de recherche + $query = $this->requete->getParametreFormulaire("query"); + $codeReseau = $_SESSION['codeReseau']; + + // Appel au modèle mis à jour + $resultats = $this->reseausoins->rechercherPrestatairesDisponibles($codeReseau, $query); + + // On génère la vue Ajax partielle (contenant uniquement les ) + $this->genererVueAjax(array( + 'prestatairesdispo' => $resultats, + 'isSearch' => true // Flag utile pour la vue si besoin + )); + } + + public function rechercheraffectes() { + $query = $this->requete->getParametreFormulaire("query"); + $codeReseau = $_SESSION['codeReseau']; + $codeSociete = $_SESSION['codeSociete']; + + // Nouvelle méthode dans le modèle pour chercher UNIQUEMENT dans ce qui est déjà affecté + $resultats = $this->reseausoins->rechercherPrestatairesAffectes($codeReseau, $query); + + $this->genererVueAjax(array( + 'prestatairesreseau' => $resultats, + 'isSearch' => true // Flag utile pour la vue si besoin + )); + } } \ No newline at end of file diff --git a/Controleur/ControleurAjaxtblisterjoursferiers.php b/Controleur/ControleurAjaxtblisterjoursferiers.php index f7dc04ec..248060ff 100755 --- a/Controleur/ControleurAjaxtblisterjoursferiers.php +++ b/Controleur/ControleurAjaxtblisterjoursferiers.php @@ -10,19 +10,23 @@ class ControleurAjaxtblisterjoursferiers extends Controleur { } public function index() { - $codePays = $this->requete->getParametreFormulaire("codePays"); - $annee = $this->requete->getParametreFormulaire("annee","numerique"); + $codePays = $_SESSION['codePaysSociete']; + $annee = $this->requete->getParametreFormulaire("annee","numerique"); + + $annee_selectionnee = isset($annee) ? $annee : date('Y'); + $tabjoursferiers = $this->joursferiers->getlisterjoursferiers($codePays,$annee); $existeselection = $this->joursferiers->existeSelection(); $pays = $this->joursferiers->getListePays($_SESSION['codePaysSociete']); - + $this->genererVueAjax(array( 'tabjoursferiers' => $tabjoursferiers, 'existeselection' => $existeselection, - 'pays' => $pays + 'pays' => $pays, + 'annee_selectionnee'=> $annee_selectionnee )); } @@ -66,6 +70,4 @@ class ControleurAjaxtblisterjoursferiers extends Controleur { } - } - - \ No newline at end of file + } \ No newline at end of file diff --git a/Controleur/ControleurModifierbaremepriseencharge.php b/Controleur/ControleurModifierbaremepriseencharge.php index 1e676296..2f196905 100755 --- a/Controleur/ControleurModifierbaremepriseencharge.php +++ b/Controleur/ControleurModifierbaremepriseencharge.php @@ -39,16 +39,13 @@ class ControleurModifierbaremepriseencharge extends Controleur { $taux = $this->bareme->getTauxBareme(); $garant = $this->garant->getListeGarantDansProduit(); - $chemin = $this->menuvue->getChemin('Modifierbaremepriseencharge'); - $this->genererVue(array( 'bareme' => $bareme, 'clients' => $clients, 'territoire' => $territoire, 'taux' => $taux, 'garant' => $garant, - 'produits' => $produit, - 'chemin' => $chemin + 'produits' => $produit )); } diff --git a/Controleur/ControleurParamreinitmotpass.php b/Controleur/ControleurParamreinitmotpass.php index 365d2a7f..f335d2c4 100755 --- a/Controleur/ControleurParamreinitmotpass.php +++ b/Controleur/ControleurParamreinitmotpass.php @@ -1,5 +1,4 @@ societeuser->getcompsantepasswordactif("0"); + $expressionsactives = $this->societeuser->getcompsantepasswordactif("1"); + $societeuser = $this->societeuser->getVwSocieteuser($codeSociete); - $expressionsinactives = $this->societeuser->getcompsantepasswordactif("0"); - - $expressionsactives = $this->societeuser->getcompsantepasswordactif("1"); - - $societeuser = $this->societeuser->getVwSocieteuser($codeSociete); - - //var_dump($societeuser); - - - $this->genererVue(array('expressionsinactives' => $expressionsinactives, - 'expressionsactives' => $expressionsactives , - 'activerOtpouinon' => $this->activerOtpouinon, - 'societeuser' => $societeuser + $this->genererVue(array( + 'expressionsinactives' => $expressionsinactives, + 'expressionsactives' => $expressionsactives , + 'activerOtpouinon' => $this->activerOtpouinon, + 'societeuser' => $societeuser )); } @@ -48,18 +42,45 @@ require_once 'Modele/Ouinon.php'; && $this->requete->existeParametre("nvmdp") && $this->requete->existeParametre("cfnvmdp")) { - $ancmdp = $this->requete->getParametre("ancmdp"); - $nvmdp = $this->requete->getParametre("nvmdp"); - $cfnvmdp = $this->requete->getParametre("cfnvmdp"); + $ancmdp = $this->requete->getParametre("ancmdp"); + $nvmdp = $this->requete->getParametre("nvmdp"); + $cfnvmdp = $this->requete->getParametre("cfnvmdp"); - - if ($nvmdp!=$cfnvmdp) + if ($nvmdp != $cfnvmdp) { - $this->genererVue(array('msgErreur' => 'Veuillez confirmer le nouveau mot de passe!'), "index"); + $codeSociete = $_SESSION['codeSociete']; + $expressionsinactives = $this->societeuser->getcompsantepasswordactif("0"); + $expressionsactives = $this->societeuser->getcompsantepasswordactif("1"); + $societeuser = $this->societeuser->getVwSocieteuser($codeSociete); + + $msgErreur = _('Veuillez confirmer le nouveau mot de passe!'); + + $this->genererVue(array( + 'expressionsinactives' => $expressionsinactives, + 'expressionsactives' => $expressionsactives , + 'activerOtpouinon' => $this->activerOtpouinon, + 'societeuser' => $societeuser, + 'msgErreur' => $msgErreur), + "index" + ); } - else if ($nvmdp==$ancmdp) + else if ($nvmdp == $ancmdp) { - $this->genererVue(array('msgErreur' => 'Veuillez changer le mot de passe!'), "index"); + $codeSociete = $_SESSION['codeSociete']; + $expressionsinactives = $this->societeuser->getcompsantepasswordactif("0"); + $expressionsactives = $this->societeuser->getcompsantepasswordactif("1"); + $societeuser = $this->societeuser->getVwSocieteuser($codeSociete); + + $msgErreur = _('Veuillez changer le mot de passe!'); + + $this->genererVue(array( + 'expressionsinactives' => $expressionsinactives, + 'expressionsactives' => $expressionsactives , + 'activerOtpouinon' => $this->activerOtpouinon, + 'societeuser' => $societeuser, + 'msgErreur' => $msgErreur), + "index" + ); } else if ($this->societeuser->verifiermotpass($codeSociete, $ancmdp)) { @@ -67,30 +88,58 @@ require_once 'Modele/Ouinon.php'; $this->rediriger("Parametresgeneraux"); } else - { - $this->genererVue(array('msgErreur' => 'Ancien mot de passe incorrect!'), "index"); + { + $codeSociete = $_SESSION['codeSociete']; + $expressionsinactives = $this->societeuser->getcompsantepasswordactif("0"); + $expressionsactives = $this->societeuser->getcompsantepasswordactif("1"); + $societeuser = $this->societeuser->getVwSocieteuser($codeSociete); + + $msgErreur = _('Ancien mot de passe incorrect!'); + + $this->genererVue(array( + 'expressionsinactives' => $expressionsinactives, + 'expressionsactives' => $expressionsactives , + 'activerOtpouinon' => $this->activerOtpouinon, + 'societeuser' => $societeuser, + 'msgErreur' => $msgErreur), + "index" + ); } } else { - $this->genererVue(array('msgErreur' => 'Veuillez revoir votre saisie!'), "index"); + $codeSociete = $_SESSION['codeSociete']; + $expressionsinactives = $this->societeuser->getcompsantepasswordactif("0"); + $expressionsactives = $this->societeuser->getcompsantepasswordactif("1"); + $societeuser = $this->societeuser->getVwSocieteuser($codeSociete); + + $msgErreur = _('Veuillez revoir votre saisie!'); + + $this->genererVue(array( + 'expressionsinactives' => $expressionsinactives, + 'expressionsactives' => $expressionsactives , + 'activerOtpouinon' => $this->activerOtpouinon, + 'societeuser' => $societeuser, + 'msgErreur' => $msgErreur), + "index" + ); } } public function majcomplexitepassword() { - $idExpression = $this->requete->getParametreFormulaire("idExpression"); - $actif = $this->requete->getParametreFormulaire("actif"); + $idExpression = $this->requete->getParametreFormulaire("idExpression"); + $actif = $this->requete->getParametreFormulaire("actif"); $this->societeuser->majcomplexitepassword($idExpression , $actif); - $expressionsinactives = $this->societeuser->getcompsantepasswordactif("0"); + $expressionsinactives = $this->societeuser->getcompsantepasswordactif("0"); - $expressionsactives = $this->societeuser->getcompsantepasswordactif("1"); + $expressionsactives = $this->societeuser->getcompsantepasswordactif("1"); - $this->genererVueAjax(array('expressionsinactives' => $expressionsinactives, 'expressionsactives' => $expressionsactives)); - } - - - + $this->genererVueAjax(array( + 'expressionsinactives' => $expressionsinactives, + 'expressionsactives' => $expressionsactives + )); + } } \ No newline at end of file diff --git a/Controleur/ControleurPrestatairesreseau.php b/Controleur/ControleurPrestatairesreseau.php index c2156fdf..619bfeca 100755 --- a/Controleur/ControleurPrestatairesreseau.php +++ b/Controleur/ControleurPrestatairesreseau.php @@ -23,13 +23,11 @@ class ControleurPrestatairesreseau extends Controleur { $prestatairesdispo = $this->reseau->getPrestatairesReseauNonAffectes($codeReseau); $prestatairesreseau = $this->reseau->getPrestatairesReseauAffectes($codeReseau); - $chemin = $this->menuvue->getChemin('Prestatairesreseau'); $this->genererVue(array( 'reseau' => $reseau, 'prestatairesdispo' => $prestatairesdispo, - 'prestatairesreseau' => $prestatairesreseau, - 'chemin' => $chemin + 'prestatairesreseau' => $prestatairesreseau ) ); } diff --git a/Controleur/ControleurTrancheage.php b/Controleur/ControleurTrancheage.php index df349552..e554347e 100755 --- a/Controleur/ControleurTrancheage.php +++ b/Controleur/ControleurTrancheage.php @@ -19,14 +19,12 @@ class ControleurTrancheage extends Controleur { public function index() { - $chemin = $this->menuvue->getChemin('Trancheage'); - $entetestrancheage = $this->trancheage->geterentetestrancheage(''); $garant = $this->trancheage->getListeGarant(); $_SESSION['successTrancheAge'] = '1'; $_SESSION['messageTrancheAge'] = ''; - $this->genererVue(array('entetestrancheage' => $entetestrancheage, 'garant' => $garant, 'chemin' => $chemin)); + $this->genererVue(array('entetestrancheage' => $entetestrancheage, 'garant' => $garant)); } } \ No newline at end of file diff --git a/Controleur/gabarit.php b/Controleur/gabarit.php deleted file mode 100755 index 5a304f6c..00000000 --- a/Controleur/gabarit.php +++ /dev/null @@ -1,320 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - <?= $_SESSION['vue'] ?> - - - - - - - - - - - - - - -
-
- -
- -
-
-
-
- - -
-
- -
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Context
" . $this->nettoyer(format_N($_SESSION['ndDep_C'])) . " > " . $this->nettoyer(format_N($_SESSION['ndActif_C'])) ?>" readonly >
- " " ): ?> - - -
Changer mot de passe
- - - - - - - - - - - - - - - - - - - - - - - -
- - - - -
- -
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
-
- - - - - - - -
- -
- - - \ No newline at end of file diff --git a/Js/fonctions.js b/Js/fonctions.js index a8005121..ab309ceb 100755 --- a/Js/fonctions.js +++ b/Js/fonctions.js @@ -15735,91 +15735,113 @@ function afficher_lite_prestataire() } -function afficher_lite_prestataire_lot() -{ - donnees = ""; - donnees_retour = ""; +function afficher_lite_prestataire_lot() { + // 1. Collecte des données + const donnees = { + codeTypePrestataire: $("#codeTypePrestataire").val(), + categoriePresataire: $("#categoriePresataire").val(), + libelle: $("#libelle").val(), + codePays: $("#codePays").val(), + codeVille: $("#codeVille").val(), + codeLocalite: $("#codeLocalite").val() + }; - - codeTypePrestataire = $("#codeTypePrestataire").val(); - categoriePresataire = $("#categoriePresataire").val(); - libelle = $("#libelle").val(); - - codePays = $("#codePays").val(); - codeVille = $("#codeVille").val(); - codeLocalite = $("#codeLocalite").val(); - - donnees += 'codeTypePrestataire=' + codeTypePrestataire; - donnees += '&categoriePresataire=' + categoriePresataire; - donnees += '&libelle=' + libelle; - - donnees += '&codePays=' + codePays; - donnees += '&codeVille=' + codeVille; - donnees += '&codeLocalite=' + codeLocalite; - - $("#div_liste_prestataire").html('
' + '
'); - - $.ajax({ - url: $("#racineWeb").val()+"Ajaxlisteprestataireparlot/", - type : 'post', - data: donnees, - error: function(errorData) { - }, - success: function(data) { - donnees_retour = data; - }, - complete: function() { - $("#div_liste_prestataire").html(donnees_retour); - $("#nbligne").val("Lignes Filtrées : "+$("#nbligne_info").val()); - dataTableSpeciale(); - } - }); + // 2. Affichage du Loader Neutral Pro + const loader = ` +
+
+
+
+ ${($("#codeLangue").val() === 'en_US') ? 'Searching...' : 'Recherche en cours...'} +
+
+
`; + + $("#div_liste_prestataire").html(loader); + + $.ajax({ + url: $("#racineWeb").val() + "Ajaxlisteprestataireparlot/", + type: 'post', + data: donnees, + success: function(data) { + // Injection des données + $("#div_liste_prestataire").html(data); + + // Mise à jour du compteur dans la vue parente + const nbreFiltre = $("#nbligne_info").val() || 0; + if(typeof updateLotCounter === 'function'){ + updateLotCounter(nbreFiltre); + } else { + $("#nbligne").val("Lignes Filtrées : " + nbreFiltre); + } + + // Initialisation d'une DataTable si nécessaire + if (typeof dataTableSpeciale === 'function') dataTableSpeciale(); + }, + error: function() { + $("#div_liste_prestataire").html('
'); + } + }); } -function selection_prestataire_lot() -{ - var nbcoche = $('#nbcoche').val(); - - - donnees = ""; - donnees_retour = ""; - - - - codeTypePrestataire = $("#codeTypePrestataire").val(); - categoriePresataire = $("#categoriePresataire").val(); - libelle = $("#libelle").val(); +function selection_prestataire_lot() { + // 1. Collecte des critères de filtrage (pour savoir quoi cocher/décocher sur le serveur) + const donnees = { + codeTypePrestataire: $("#codeTypePrestataire").val(), + categoriePresataire: $("#categoriePresataire").val(), + libelle: $("#libelle").val(), + codePays: $("#codePays").val(), + codeVille: $("#codeVille").val(), + codeLocalite: $("#codeLocalite").val() + }; - codePays = $("#codePays").val(); - codeVille = $("#codeVille").val(); - codeLocalite = $("#codeLocalite").val(); - - donnees += 'codeTypePrestataire=' + codeTypePrestataire; - donnees += '&categoriePresataire=' + categoriePresataire; - donnees += '&libelle=' + libelle; + // 2. Loader Standard Neutral Pro + const isEng = ($("#codeLangue").val() === 'en_US'); + const loader = ` +
+
+
+
+ ${isEng ? 'Processing selection...' : 'Traitement de la sélection...'} +
+
+
`; + + $("#div_liste_prestataire").html(loader); + + $.ajax({ + url: $("#racineWeb").val() + "Ajaxlisteprestataireparlot/selectionnetout/", + type: 'POST', + data: donnees, + success: function(data) { + // 3. Injection du nouveau tableau mis à jour + $("#div_liste_prestataire").html(data); + + // 4. Mise à jour des compteurs dans la vue parente + const nbreFiltre = $("#nbligne_info").val() || 0; + if (typeof updateLotCounter === 'function') { + updateLotCounter(nbreFiltre); + } else { + $("#nbligne").val("Lignes : " + nbreFiltre); + } - donnees += '&codePays=' + codePays; - donnees += '&codeVille=' + codeVille; - donnees += '&codeLocalite=' + codeLocalite; + // 5. Réactivation des composants si nécessaire + if (typeof actualiserSelectPicker === 'function') { + actualiserSelectPicker('.selectpicker'); + } - $("#div_liste_prestataire").html('
' + '
'); - - $.ajax({ - url: $("#racineWeb").val()+"Ajaxlisteprestataireparlot/selectionnetout/", - type : 'post', - data: donnees, - error: function(errorData) { - }, - success: function(data) { - donnees_retour = data; - }, - complete: function() { - $("#div_liste_prestataire").html(donnees_retour); - $("#nbligne").val("Lignes : "+$("#nbligne_info").val()); - dataTableSpeciale(); - } - }); + // 6. Initialisation de la DataTable spéciale + if (typeof dataTableSpeciale === 'function') { + dataTableSpeciale(); + } + }, + error: function(xhr, status, error) { + console.error("Erreur Sélection Lot:", error); + const msg = isEng ? "Error during bulk selection" : "Erreur lors de la sélection par lot"; + $("#div_liste_prestataire").html(`
${msg}
`); + } + }); } function afficher_prestataire_id(idPrestataire) @@ -18055,22 +18077,88 @@ function pop_messagerie() }); } -function marquer_message_comme_lu(idMessagerie, controle) -{ - donnees = 'idMessagerie='+idMessagerie; - - $.ajax({ - url: $("#racineWeb").val()+"Ajaxmessagerieliste/marquercommelu/", - type: 'POST', - data: donnees, - error: function(errorData) { - }, - success: function(data) { - }, - complete: function() { - controle.parentElement.removeChild(controle); - } - }); +function marquer_message_comme_lu(idMessagerie, btn) { + const $row = $(btn).closest('tr'); + const racineWeb = $("#racineWeb").val(); + const codeLangue = $("#codeLangue").val(); // Récupération de la langue + + // 1. Définition des messages de traduction + const msgSuccess = (codeLangue === "en_US") + ? "Message marked as read" + : "Message marqué comme lu"; + const msgError = (codeLangue === "en_US") + ? "Error during update" + : "Erreur lors de la mise à jour"; + + // 2. Feedback visuel Neutral Pro + $row.addClass('is-processing'); + $(btn).prop('disabled', true).html(''); + + $.ajax({ + url: racineWeb + "Ajaxmessagerieliste/marquercommelu/", + type: 'POST', + data: { idMessagerie: idMessagerie }, + success: function(data) { + // 3. Animation de sortie + $row.fadeOut(400, function() { + $(this).remove(); + + // 4. Mise à jour du compteur (Logique plurielle incluse) + actualiser_interface_messagerie(codeLangue); + }); + + if (typeof toastr !== 'undefined') { + toastr.success(msgSuccess); + } + }, + error: function() { + $row.removeClass('is-processing'); + $(btn).prop('disabled', false).html(''); + + if (typeof toastr !== 'undefined') { + toastr.error(msgError); + } + } + }); +} + +/** + * Mise à jour du compteur avec gestion de la langue + */ +function actualiser_interface_messagerie(codeLangue) { + const $txtNbre = $('#txt-nbre-msg'); + const $labelNbre = $('#label-nbre-msg'); + const $noMsgRow = $('#no-message-row'); + const $badgeContainer = $('#container-badge-msg'); + + let newCount = $('#table-messagerie tbody tr.message-row').length; + + // Mise à jour du chiffre + $txtNbre.text(newCount); + + // Mise à jour du texte (Message vs Messages) selon la langue + if ($labelNbre.length) { + let label = ""; + if (codeLangue === "en_US") { + label = newCount > 1 ? " Messages" : " Message"; + } else { + label = newCount > 1 ? " Messages" : " Message"; + } + $labelNbre.text(label); + } + + // Gestion de l'état vide + if (newCount === 0) { + if ($noMsgRow.length) $noMsgRow.fadeIn(); + if ($badgeContainer.length) { + $badgeContainer.removeClass('bg-primary-ghost text-primary').addClass('bg-light text-muted'); + } + } + + // Mise à jour du compteur global (timer) + if ($('#timer').length) { + $('#timer').val(newCount); + } } function envoyer_messagerie(textMessage, idParent) @@ -20722,21 +20810,27 @@ function enregistrer_modif_gc_assureur() donnees += '&adresseGeographique='+adresseGeographique+'&numerodeCompteComptableTP='+numerodeCompteComptableTP; donnees += '&numeroCompteContribuable='+numeroCompteContribuable+'&codeModePaiementDemande='+codeModePaiementDemande; donnees += '&encaissementExige='+encaissementExige; - //alert(donnees); - //return; - - $.ajax({ - url: $("#racineWeb").val()+"Ajaxgcassureur/enregistrermodif/", - type : 'post', - data: donnees, - error: function(errorData) { - }, - success: function(data) { - - }, - complete: function() { - retour_gc_assureur(); - } + + v_msg="Confirmez-vous cette action ?"; + v_msgEng="Do you confirm this action?"; + + confirm_ebene(v_msg, v_msgEng) + .then((isConfirmed) => { + if (isConfirmed) { + $.ajax({ + url: $("#racineWeb").val()+"Ajaxgcassureur/enregistrermodif/", + type : 'post', + data: donnees, + error: function(errorData) { + }, + success: function(data) { + + }, + complete: function() { + retour_gc_assureur(); + } + }); + } }); } @@ -20870,20 +20964,28 @@ function maj_paramfacturegarant() donnees += '&nbAdherent='+nbAdherent; donnees += '&nbBeneficiaire='+nbBeneficiaire; - $.ajax({ - url: $("#racineWeb").val()+"Ajaxgcassureur/majparamfacturegarant/", - type : 'post', - data: donnees, - error: function(errorData) { - }, - success: function(data) { + v_msg="Confirmez-vous cette action ?"; + v_msgEng="Do you confirm this action?"; - }, - complete: function() { - // retour_fiche_garant(); - consulter_param_fact_garant(); - } - }); + confirm_ebene(v_msg, v_msgEng) + .then((isConfirmed) => { + if (isConfirmed) { + $.ajax({ + url: $("#racineWeb").val()+"Ajaxgcassureur/majparamfacturegarant/", + type : 'post', + data: donnees, + error: function(errorData) { + }, + success: function(data) { + + }, + complete: function() { + // retour_fiche_garant(); + consulter_param_fact_garant(); + } + }); + } + }); } @@ -30697,44 +30799,40 @@ function enregistrer_modif_reseaus() } -function afficher_reseau_categorie() -{ - - - codeProduit=$("#codeProduit").val(); +/** + * Affiche les réseaux (Disponibles vs Ajoutés) pour un produit + */ +function afficher_reseau_categorie() { + const codeProduit = $("#codeProduit").val(); - if (codeProduit<=" ") - { - v_msg="Veuillez sélectionner un produit!"; - v_msgEng="Please select a category!"; - alert_ebene(v_msg, v_msgEng); - - $('#div_produitreseau').html(""); + if (!codeProduit || codeProduit.trim() === "") { + alert_ebene("Veuillez sélectionner un produit!", "Please select a product!"); + $('#div_produitreseau').html(""); + return; + } - return; - } + // Loader Standard Neutral Pro + const loader = ` +
+
+
+
+ ${($("#codeLangue").val() === 'en_US') ? 'Loading networks...' : 'Chargement des réseaux...'} +
+
+
`; + + $('#div_produitreseau').html(loader); - donnees = 'codeProduit='+codeProduit; - - var div_attente = $('#div_produitreseau'); - - div_attente.html('
' + '
'); - - - $.ajax({ - url: $("#racineWeb").val()+"Ajaxproduitreseau/afficherreseaucategorie/", - type : 'post', - data: donnees, - error: function(errorData) { - }, - success: function(data) { - div_attente.html(data); - appliquerDataTable(); - - }, - complete: function() { - } - }); + $.ajax({ + url: $("#racineWeb").val() + "Ajaxproduitreseau/afficherreseaucategorie/", + type: 'post', + data: { codeProduit: codeProduit }, + success: function(data) { + $('#div_produitreseau').hide().html(data).fadeIn(400); + if (typeof appliquerDataTable === 'function') appliquerDataTable(); + } + }); } function ajouter_tous_reseaus_produit() @@ -32055,128 +32153,72 @@ function ajouter_sms_attente_singleton(p_destinataires, p_message) }); } -// 2ème fonction à mettre à jour -function tester_disponibiliter_sms() -{ - p_destinataires = $("#destinataires").val(); - if (p_destinataires<=" ") - { - v_msg="Veuillez saisir un destinataire!"; - v_msgEng="Please enter a recipient!"; - alert_ebene(v_msg, v_msgEng); - $("#destinataires").focus(); - return; - } +function tester_disponibiliter_sms() { + // 1. Récupération des éléments de base + const p_destinataires = $("#destinataires").val(); + const fournisseurSms = $("#fournisseurSms").val(); + const racineWeb = $("#racineWeb").val(); + const div_cible = $('#div_test_gabarit'); - p_message = ""; - - fournisseurSms = $("#fournisseurSms").val(); - - if (fournisseurSms<=" ") - { - v_msg="Fournisseur de SMS non défini!"; - v_msgEng="SMS provider not defined!"; - alert_ebene(v_msg, v_msgEng); - return; - } + // 2. Validation du destinataire + if (!p_destinataires || p_destinataires.trim() === "") { + alert_ebene("Veuillez saisir un destinataire!", "Please enter a recipient!"); + $("#destinataires").focus(); + return; + } - if(fournisseurSms=="esicia") - { - p_message = "Fournisseur : esicia "; - } - else - if(fournisseurSms=="blive") - { - p_message = "Fournisseur : blive "; - } - else - if(fournisseurSms=="hooza") - { - p_message = "Fournisseur : hooza "; - } - else - if(fournisseurSms=="skysms") - { - p_message = "Fournisseur : skysms "; - } - else - if(fournisseurSms=="satelcom") - { - p_message = "Fournisseur : satelcom "; - } - else - if(fournisseurSms=="noah") - { - p_message = "Fournisseur : noah "; - } - else - if(fournisseurSms=="nerhysms") - { - p_message = "Fournisseur : nerhysms "; - } - else - if(fournisseurSms=="emisms") - { - p_message = "Fournisseur : emisms "; - } - else - if(fournisseurSms=="erling") - { - p_message = "Fournisseur : erling "; - } - else - if(fournisseurSms=="ovh") - { - p_message = "Fournisseur : ovh "; - } - else - if(fournisseurSms=="afriksms") - { - p_message = "Fournisseur : afriksms"; - } - else - if(fournisseurSms=="ekotech") - { - p_message = "Fournisseur : ekotech"; - } - else - { - v_msg=fournisseurSms+" => Fournisseur de SMS inconnu!"; - v_msgEng=fournisseurSms+" => Unknown SMS Provider!"; - alert_ebene(v_msg, v_msgEng); - return; - } - - donnees = "destinataires="+p_destinataires+"&message="+p_message+"&fournisseurSms="+fournisseurSms; + // 3. Validation du fournisseur + if (!fournisseurSms || fournisseurSms.trim() === "") { + alert_ebene("Fournisseur de SMS non défini!", "SMS provider not defined!"); + return; + } - alert(donnees); + // 4. Mapping des fournisseurs (Remplace les multiples if/else) + const fournisseursValides = [ + "esicia", "blive", "hooza", "skysms", "satelcom", "noah", + "nerhysms", "emisms", "erling", "ovh", "afriksms", "ekotech" + ]; - $("#div_test_gabarit").html('
' + '
'); - - $.ajax({ - url: $("#racineWeb").val()+"Ajaxtesterdisponiblitesms/envoyerlesms/", - type: 'POST', - data: donnees, - success: function(data) - { - alert("success "+data); - $('#div_test_gabarit').html(data); - }, - error: function(errdata) - { - alert("Error : "+errdata); - $('#div_test_gabarit').html(errdata); - }, - complete: function() - { - /* - v_msg="Opération terminée avec succès!"; - v_msgEng="Operation completed successfully!"; - alert_ebene(v_msg, v_msgEng); - */ - } - }); + if (!fournisseursValides.includes(fournisseurSms)) { + alert_ebene( + fournisseurSms + " => Fournisseur de SMS inconnu!", + fournisseurSms + " => Unknown SMS Provider!" + ); + return; + } + + // 5. Préparation du message et des données + const p_message = "Fournisseur : " + fournisseurSms; + const donnees = { + destinataires: p_destinataires, + message: p_message, + fournisseurSms: fournisseurSms + }; + + // 6. Affichage du loader Neutral Pro + div_cible.html(` +
+
+

Envoi du SMS de test en cours...

+
+ `); + + // 7. Appel AJAX + $.ajax({ + url: racineWeb + "Ajaxtesterdisponiblitesms/envoyerlesms/", + type: 'POST', + data: donnees, + success: function(data) { + // Notification discrète de succès (Toast) + toastr.success("Demande transmise au serveur"); + div_cible.html(data); + }, + error: function(err) { + toastr.error("Erreur lors de l'envoi"); + div_cible.html(`
Erreur : ${err.statusText}
`); + } + }); } function ajouter_destinataire_sms_adherent(p_destinataires) @@ -34293,111 +34335,153 @@ function maj_duree_vie_bon(idTypebon, dureeVie) }); } -function afficher_garantie_produit_cons() -{ - - - codeGcAssureur =$("#codeGcAssureur").val(); - - - if(codeGcAssureur<=" ") - { - v_msg="Veuillez s\u00e9lectionner un garant!"; - v_msgEng="Please select a guarantor!"; - alert_ebene(v_msg, v_msgEng); +function afficher_garantie_produit_cons() { + // 1. Récupération des valeurs + const codeGcAssureur = $("#codeGcAssureur").val(); + const codeProduit = $("#codeProduit").val(); + const div_attente = $('#div_garantieproduit'); + const racineWeb = $("#racineWeb").val(); + const codeLangue = $("#codeLangue").val(); - $("#codeGcAssureur").focus(); - - $('#div_garantieproduit').html(""); - - return; - } + // 2. Validation du Garant + if (!codeGcAssureur || codeGcAssureur.trim() === "") { + let v_msg = "Veuillez sélectionner un garant !"; + let v_msg_eng = "Please select a guarantor!"; + + alert_ebene(v_msg, v_msg_eng); + + $("#codeGcAssureur").focus(); + div_attente.html(""); + return; + } - codeProduit=$("#codeProduit").val(); - - if (codeProduit<=" ") - { - v_msg="Veuillez s\u00e9lectionner un produit!"; - v_msgEng="Please select a product!"; - alert_ebene(v_msg, v_msgEng); - - $('#div_garantieproduit').html(""); - return; - } + // 3. Validation du Produit + if (!codeProduit || codeProduit.trim() === "") { + let v_msg = "Veuillez sélectionner un produit !"; + let v_msg_eng = "Please select a product!"; + + alert_ebene(v_msg, v_msg_eng); + + div_attente.html(""); + return; + } - donnees = 'codeGcAssureur='+codeGcAssureur+'&codeProduit='+codeProduit; + // 4. Préparation des données et affichage du loader (Texte bilingue manuel) + const donnees = { + codeGcAssureur: codeGcAssureur, + codeProduit: codeProduit + }; - var div_attente = $('#div_garantieproduit'); - - div_attente.html('
' + '
'); + let loadingTxt = (codeLangue === "en_US") ? "Loading guarantees..." : "Chargement des garanties..."; - $.ajax({ - url: $("#racineWeb").val()+"Ajaxparamseuilalerte/affichergarantieproduitcons/", - type : 'post', - data: donnees, - error: function(errorData) { - }, - success: function(data) { - div_attente.html(data); - }, - complete: function() { - } - }); + div_attente.html(` +
+
+

${loadingTxt}

+
+ `); + + // 5. Appel AJAX + $.ajax({ + url: racineWeb + "Ajaxparamseuilalerte/affichergarantieproduitcons/", + type: 'post', + data: donnees, + success: function(data) { + div_attente.html(data); + + // INITIALISATION DATATABLE + setTimeout(function() { + const nomGarant = $("#codeGcAssureur option:selected").text(); + initSmartTable('#tableSeuils', 'Seuils d\'alerte - ' + nomGarant, false); + }, 150); + }, + error: function() { + let errorTxt = (codeLangue === "en_US") ? "Error retrieving data." : "Erreur lors de la récupération des données."; + div_attente.html(` +
+ ${errorTxt} +
+ `); + } + }); } -function afficher_garantie_produit() -{ - codeGcAssureur =$("#codeGcAssureur").val(); - - - if(codeGcAssureur<=" ") - { - v_msg="Veuillez s\u00e9lectionner un garant!"; - v_msgEng="Please select a guarantor!"; - alert_ebene(v_msg, v_msgEng); - $("#codeGcAssureur").focus(); - - $('#div_garantieproduit').html(""); - - return; - } +function afficher_garantie_produit() { + // 1. Définition des constantes et cibles + const codeGcAssureur = $("#codeGcAssureur").val(); + const codeProduit = $("#codeProduit").val(); + const div_cible = $('#div_garantieproduit'); + const racineWeb = $("#racineWeb").val(); + const codeLangue = $("#codeLangue").val(); - codeProduit=$("#codeProduit").val(); - - if (codeProduit<=" ") - { - v_msg="Veuillez s\u00e9lectionner un produit!"; - v_msgEng="Please select a product!"; - alert_ebene(v_msg, v_msgEng); - - $('#div_garantieproduit').html(""); - return; - } - donnees = 'codeProduit='+codeProduit; + // 2. Validation du Garant via alert_ebene + if (!codeGcAssureur || codeGcAssureur.trim() === "") { + let v_msg = "Garant manquant ! Veuillez sélectionner un garant pour continuer."; + let v_msg_eng = "Guarantor missing ! Please select a guarantor to continue."; + + alert_ebene(v_msg, v_msg_eng); + + $("#codeGcAssureur").focus(); + div_cible.html(""); + return; + } - var div_attente = $('#div_garantieproduit'); - - div_attente.html('
' + '
'); + // 3. Validation du Produit via alert_ebene + if (!codeProduit || codeProduit.trim() === "") { + let v_msg = "Produit manquant ! Veuillez sélectionner un produit."; + let v_msg_eng = "Product missing ! Please select a product."; + + alert_ebene(v_msg, v_msg_eng); + + div_cible.html(""); + return; + } - $.ajax({ - url: $("#racineWeb").val()+"Ajaxparamseuilalerte/affichergarantieproduit/", - type : 'post', - data: donnees, - error: function(errorData) { - }, - success: function(data) { - div_attente.html(data); - }, - complete: function() { - } - }); + // 4. Préparation et affichage du loader bilingue + const donnees = { codeProduit: codeProduit }; + let loadingTxt = (codeLangue === "en_US") ? "Loading the entry form..." : "Chargement du formulaire de saisie..."; + + div_cible.html(` +
+
+ Loading... +
+
${loadingTxt}
+
+ `); + + // 5. Exécution de la requête AJAX + $.ajax({ + url: racineWeb + "Ajaxparamseuilalerte/affichergarantieproduit/", + type: 'post', + data: donnees, + success: function(data) { + div_cible.html(data); + + // INITIALISATION DATATABLE + setTimeout(function() { + const nomProduit = $("#codeProduit option:selected").text(); + initSmartTable('#tableSeuilsModif', 'Modif Seuils - ' + nomProduit); + }, 150); + }, + error: function() { + let errorTxt = (codeLangue === "en_US") ? "Technical error while retrieving the form." : "Erreur technique lors de la récupération du formulaire."; + div_cible.html(` + + `); + } + }); } function ajouter_tous_garantie_produit() { - codeProduit=$("#codeProduit").val(); + codeProduit = $("#codeProduit").val(); + nomForm = $("#nomForm").val(); if (codeProduit<=" ") { @@ -34427,7 +34511,12 @@ function ajouter_tous_garantie_produit() error: function(data) { }, complete: function() { - afficher_garantie_produit(); + + if(nomForm=="frmgarantieproduit"){ + actualiser_garantie_produit(); + }else{ + afficher_garantie_produit(); + } } }); } else { @@ -34441,6 +34530,8 @@ function ajouter_tous_garantie_produit() function retirer_tous_garantie_produit() { codeProduit=$("#codeProduit").val(); + nomForm = $("#nomForm").val(); + if (codeProduit<=" ") { @@ -34470,7 +34561,12 @@ function retirer_tous_garantie_produit() error: function(data) { }, complete: function() { - afficher_garantie_produit(); + + if(nomForm=="frmgarantieproduit"){ + actualiser_garantie_produit(); + }else{ + afficher_garantie_produit(); + } } }); } else { @@ -34484,6 +34580,7 @@ function retirer_tous_garantie_produit() function retirer_un_garantie_produit(id_garantie_produit) { codeProduit=$("#codeProduit").val(); + nomForm = $("#nomForm").val(); if (codeProduit<=" ") { @@ -34505,7 +34602,13 @@ function retirer_un_garantie_produit(id_garantie_produit) error: function(data) { }, complete: function() { - afficher_garantie_produit(); + + if(nomForm=="frmgarantieproduit"){ + actualiser_garantie_produit(); + }else{ + afficher_garantie_produit(); + } + } }); } @@ -34513,8 +34616,9 @@ function retirer_un_garantie_produit(id_garantie_produit) function ajouter_un_garantie_produit(codeGarantie) { - codeProduit=$("#codeProduit").val(); + nomForm = $("#nomForm").val(); + if (codeProduit<=" ") { @@ -34537,7 +34641,13 @@ function ajouter_un_garantie_produit(codeGarantie) error: function(data) { }, complete: function() { - afficher_garantie_produit(); + + nomForm = $("#nomForm").val(); + if(nomForm=="frmgarantieproduit"){ + actualiser_garantie_produit(); + }else{ + afficher_garantie_produit(); + } } }); } @@ -35714,8 +35824,8 @@ function users_gc() function reinitpaswd_gc(codeUtilisateur) { - v_msg="Confirmez-vous la réinitialisation?"; - v_msgEng="Do you confirm the reset?"; + v_msg="Confirmez-vous la réinitialisation du mot de passe ?"; + v_msgEng="Do you confirm the password reset?"; confirm_ebene(v_msg, v_msgEng) @@ -35757,8 +35867,8 @@ function reinitpaswd_gc(codeUtilisateur) function desactiver_user_gc(codeUtilisateur) { - v_msg="Confirmez-vous la désactivation?"; - v_msgEng="Do you confirm the deactivation?"; + v_msg="Confirmez-vous le blocage du compte ?"; + v_msgEng="Do you confirm the blocking of the account?"; confirm_ebene(v_msg, v_msgEng) @@ -35798,8 +35908,8 @@ function desactiver_user_gc(codeUtilisateur) function activer_user_gc(codeUtilisateur) { - v_msg="Confirmez-vous l\'activation?"; - v_msgEng="Do you confirm the activation?"; + v_msg="Confirmez-vous l\'ouverture du compte ?"; + v_msgEng="Do you confirm the account opening?"; @@ -36956,188 +37066,79 @@ function enregistrer_modif_user_gc() } -function creer_user_gc() -{ - codeGcAssureur = $("#codeGcAssureur").val(); - codeUtilisateur = $("#codeUtilisateur").val(); - codeUtilisateur = codeUtilisateur.trim(); - codeUtilisateur = supprimer_espace_string(codeUtilisateur); - codeUtilisateur = codeUtilisateur.toLowerCase(); +function creer_user_gc() { + // Collecte des données + let codeGcAssureur = $("#codeGcAssureur").val(); + let codeUtilisateur = $("#codeUtilisateur").val().trim().toLowerCase().replace(/\s+/g, ''); + let nom = $("#nom").val(); + let prenoms = $("#prenoms").val(); + let telephone = $("#telephone").val(); + let email = $("#email").val(); + let codeLangue = $("#codeLangueUser").val(); + let actVisible = $("#actVisibleUser").val(); + let AffectionVisible = $("#AffectionVisibleUser").val(); + let codeModeGenerationPass = $("#codeModeGenerationPass").val(); + let codeModeEnvoiPass = $("#codeModeEnvoiPass").val(); + let nvmdp = $("#nvmdp").val(); + let cfnvmdp = $("#cfnvmdp").val(); + + // Validations (simplifiées pour la lecture) + if (nom <= " ") { alert_ebene("Indiquez le nom!", "Enter the name!"); $("#nom").focus(); return; } + if (codeLangue <= " ") { alert_ebene("Indiquez la langue!", "Enter the language!"); $("#codeLangueUser").focus(); return; } + if (telephone <= " ") { alert_ebene("Indiquez le téléphone!", "Enter the phone!"); $("#telephone").focus(); return; } + if (email <= " " || !verifMailValeur(email)) { alert_ebene("Email incorrect!", "Review email!"); $("#email").focus(); return; } - codeModeGenerationPass = $("#codeModeGenerationPass").val(); - codeModeEnvoiPass = $("#codeModeEnvoiPass").val(); - - nom = $("#nom").val(); - prenoms = $("#prenoms").val(); - telephone = $("#telephone").val(); - email = $("#email").val(); - codeLangue = $("#codeLangueUser").val(); - actVisible = $("#actVisibleUser").val(); - AffectionVisible = $("#AffectionVisibleUser").val(); + if (actVisible <= " ") { alert_ebene("Indiquez la visibilité des libellés des actes!", "Indicate the visibility of the act labels!"); $("#actVisibleUser").focus(); return; } + if (AffectionVisible <= " ") { alert_ebene("Indiquez la visibilité des libellés des affections!", "Indicate the visibility of the affection labels!"); $("#AffectionVisibleUser").focus(); return; } + if (codeUtilisateur <= " ") { alert_ebene("Indiquez le login!", "Enter the login!"); $("#codeUtilisateur").focus(); return; } + + // Validation MDP si mode manuel + if (codeModeGenerationPass == "0") { + if (nvmdp <= " ") { alert_ebene("Mot de passe requis!", "Password required!"); $("#nvmdp").focus(); return; } + if (nvmdp != cfnvmdp) { alert_ebene("Confirmations différentes!", "Confirm password!"); $("#cfnvmdp").focus(); return; } + } - nvmdp = $("#nvmdp").val(); - cfnvmdp = $("#cfnvmdp").val(); - - if(nom<=" ") - { - v_msg="Veuillez indiquer le nom!"; - v_msgEng="Please enter the name!"; - alert_ebene(v_msg, v_msgEng); + let donnees = { + codeGcAssureur: codeGcAssureur, + codeUtilisateur: codeUtilisateur, + nom: nom, + prenoms: prenoms, + telephone: telephone, + email: email, + motPass: nvmdp, + codeLangue: codeLangue, + actVisible: actVisible, + AffectionVisible: AffectionVisible, + codeModeGenerationPass: codeModeGenerationPass, + codeModeEnvoiPass: codeModeEnvoiPass + }; - $("#nom").focus(); - return; - } - - if(codeGcAssureur<=" ") - { - v_msg="Veuillez sélectionner un garant!"; - v_msgEng="Please select a guarantor!"; - alert_ebene(v_msg, v_msgEng); - - return; - } - - if(codeUtilisateur<=" ") - { - v_msg="Veuillez indiquer le login!"; - v_msgEng="Please enter the login!"; - alert_ebene(v_msg, v_msgEng); - - $("#codeUtilisateur").focus(); - return; - } - - - if(codeLangue<=" ") - { - v_msg="Veuillez indiquer la langue!"; - v_msgEng="Please select the language"; - alert_ebene(v_msg, v_msgEng); - - $("#codeLangueUser").focus(); - return; - } - - if (actVisible<=" ") - { - v_msg="Actes visbles oui ou non?"; - v_msgEng="Acts are visible yes or no?"; - alert_ebene(v_msg, v_msgEng); - - $("#actVisibleUser").focus(); - return; - } - - if (AffectionVisible<=" ") - { - v_msg="Affections visbles oui ou non?"; - v_msgEng="Affections are visible yes or no?"; - alert_ebene(v_msg, v_msgEng); - - $("#AffectionVisibleUser").focus(); - return; - } - - if ((codeModeEnvoiPass=="1" || codeModeEnvoiPass=="2") && (telephone <=" ") ) - { - v_msg="Veuillez revoir le téléphone!"; - v_msgEng="Please review the phone!"; - alert_ebene(v_msg, v_msgEng); - - $("#telephone").focus(); - return; - } - - if ((codeModeEnvoiPass=="0" || codeModeEnvoiPass=="2") && (email <=" ") ) - { - v_msg="Veuillez revoir l'adresse mail!"; - v_msgEng="Please review the email address!"; - alert_ebene(v_msg, v_msgEng); - - $("#email").focus(); - return; - } - - if(codeModeGenerationPass=="0") - { - if(nvmdp<=" ") - { - v_msg="Veuillez indiquer le mot de passe!"; - v_msgEng="Please enter the password!"; - alert_ebene(v_msg, v_msgEng); - - $("#nvmdp").focus(); - return; - } - - if(nvmdp != cfnvmdp) - { - v_msg="Veuillez confirmer votre mot de passe!"; - v_msgEng="Please confirm your password!"; - alert_ebene(v_msg, v_msgEng); - - $("#cfnvmdp").focus(); - return; - } - } - - if(!verifMailValeur(email)) - { - v_msg="Veuillez revoir l'adresse mail!"; - v_msgEng="Please review the email address!"; - alert_ebene(v_msg, v_msgEng); - - $("#email").focus(); - return; - } - - motPass = nvmdp; - - donnees = 'codeGcAssureur='+codeGcAssureur+'&codeUtilisateur='+codeUtilisateur; - donnees += '&nom='+nom+'&prenoms='+prenoms; - donnees += '&telephone='+telephone+'&email='+email+'&motPass='+motPass; - donnees += '&codeLangue='+codeLangue+'&actVisible='+actVisible; - donnees += '&AffectionVisible='+AffectionVisible; - donnees += '&codeModeGenerationPass='+codeModeGenerationPass; - donnees += '&codeModeEnvoiPass='+codeModeEnvoiPass; - - v_msg="Confirmez-vous ce nouvel utilisateur?"; - v_msgEng="Do you confirm this new user?"; - - confirm_ebene(v_msg, v_msgEng) + confirm_ebene("Confirmez-vous la création de ce compte ?", "Confirm user creation?") .then((isConfirmed) => { if (isConfirmed) { + // Effet de chargement sur le bouton + $("#btn_enreg").prop('disabled', true).html(' Enregistrement...'); + $.ajax({ - url: $("#racineWeb").val()+"Ajaxgcassureur/creerusergc/", - type : 'post', - data: donnees, - error: function(errorData) { - }, - success: function(data) { - $('#div_unicite_login').html(data); - }, - complete: function() - { - uniciteLogin = $("#uniciteLogin").val(); - if(uniciteLogin==1) - { - v_msg="Utilisateur ( "+codeUtilisateur+" ) créé avec succès!"; - v_msgEng="User ( "+codeUtilisateur+" ) created succssfully!"; - alert_ebene(v_msg, v_msgEng); - - retour_a_users_gc(); - } - else - { - v_msg="Login " + codeUtilisateur +" déjà utilisé!"; - v_msgEng="Login " + codeUtilisateur +" already in use!"; - alert_ebene(v_msg, v_msgEng); - - $("#codeUtilisateur").focus(); - } - } - }); + url: $("#racineWeb").val() + "Ajaxgcassureur/creerusergc/", + type: 'post', + data: donnees, + success: function(data) { + $('#div_unicite_login').html(data); + }, + complete: function() { + let uniciteLogin = $("#uniciteLogin").val(); + if (uniciteLogin == 1) { + alert_ebene("Utilisateur créé avec succès!", "User created successfully!"); + retour_a_users_gc(); + } else { + alert_ebene("Login déjà utilisé!", "Login already in use!"); + $("#btn_enreg").prop('disabled', false).html(' Enregistrer'); + $("#codeUtilisateur").focus(); + } + } + }); } }); } @@ -46228,121 +46229,151 @@ function afficheDonneesTable(fichier){ } -function addgctypegarant(){ - $('#div_edit_typegarant').empty(); - donnees = ''; - $.ajax({ - url: $("#racineWeb").val()+"Ajaxouvrirtypegarant/", - type : 'post', - data: donnees, - error: function(errorData){ - alert("Erreur : "+errorData); - }, - success: function(data) { - //alert("Success : "+data); - $('#div_add_typegarant').html(data); - $('#div_add_typegarant').modal("show"); - $('#div_add_typegarant').on('shown.bs.modal', function(){ - stylechampsRequis(); - $('#codeTypeGarant').focus(); - }); - }, - complete: function() { - - } - }); -} +function addgctypegarant() { + const racineWeb = $("#racineWeb").val(); + const $modalAdd = $('#div_add_typegarant'); + const $modalEdit = $('#div_edit_typegarant'); + // Nettoyage de l'autre modale pour éviter les conflits d'IDs + $modalEdit.empty(); -function editgctypegarant(id){ + $.ajax({ + url: racineWeb + "Ajaxouvrirtypegarant/", + type: 'POST', + beforeSend: function() { + // Optionnel : Vous pouvez ajouter un loader global ici + }, + success: function(data) { + // Injection du contenu dans la modale + $modalAdd.html(data); + + // Affichage de la modale + $modalAdd.modal("show"); - $('#div_add_typegarant').empty(); - - donnees ='id='+id; - - $.ajax({ - url: $("#racineWeb").val()+"Ajaxmodifiertypegarant/", - type : 'post', - data: donnees, - error: function(errorData){ - alert("Erreur : "+errorData); - }, - success: function(data) { - //alert("Success : "+data); - $('#div_edit_typegarant').html(data); - $('#div_edit_typegarant').modal("show"); - $('#div_edit_typegarant').on('shown.bs.modal', function(){ - stylechampsRequis(); - $('#codeTypeGarant').focus(); - }); - - }, - complete: function() { - - } - }); + // Actions une fois que la modale est visible + $modalAdd.off('shown.bs.modal').on('shown.bs.modal', function() { + // Focus sur le premier champ pour une saisie rapide + $('#codeTypeGarant').focus(); + + // Application du style Neutral Pro aux champs requis + if (typeof stylechampsRequis === 'function') { + stylechampsRequis(); + } + }); + }, + error: function(xhr, status, error) { + console.error("Erreur Ouverture Modale:", error); + if (typeof toastr !== 'undefined') { + toastr.error("Impossible d'ouvrir le formulaire d'ajout"); + } else { + alert("Erreur lors de l'ouverture du formulaire."); + } + } + }); } -function enregistrerTypeGarant(){ - var codeTypeGarant = $('#codeTypeGarant').val(), - libelle = $('#libelle').val(), - id = $('#id').val(); - - - fichier_lister = 'Ajaxlistergctypegarant'; - - if(id == undefined){ - link = 'Ajaxouvrirtypegarant'; - }else{ - //fichier_lister = 'Ajaxlistercolleges'; - link = 'Ajaxmodifiertypegarant'; - } - +function editgctypegarant(id) { + const racineWeb = $("#racineWeb").val(); + const codeLangue = $("#codeLangue").val(); + const $modalEdit = $('#div_edit_typegarant'); + const $modalAdd = $('#div_add_typegarant'); - if(libelle <=' '){ - v_msg="Le libellé est obligatoire !"; - v_msgEng="The label is required !"; - - alert_ebene(v_msg,v_msgEng); - - $('#libelle').css('borderColor','red'); - return; - } - donnees = $('#formModal').serialize(); - - $.ajax({ - url: $("#racineWeb").val()+link+"/enregistrer/", - type : 'post', - data: donnees, - error: function(errorData){ - alert("Erreur : "+errorData); - }, - success: function(data) { - //alert("Success : "+data); - /*if(data.length > 5){ - var str = data.split('/'); - alert_ebene(str[0],str[1]); - return; - } - */ - - if(id==undefined){ - afficheDonneesTable(fichier_lister); - $("#div_add_typegarant .close").click(); - }else{ - afficheDonneesTable(fichier_lister); - $("#div_edit_typegarant .close").click(); - } - //dataTableSpeciale(); - - - }, - complete: function() { - window.location.assign($("#racineWeb" ).val()+"Gctypegarant/"); - } - }); - + // Nettoyage de la modale d'ajout pour éviter les conflits + $modalAdd.empty(); + + const msgError = (codeLangue === "en_US") + ? "Error loading data" + : "Erreur lors du chargement des données"; + + $.ajax({ + url: racineWeb + "Ajaxmodifiertypegarant/", + type: 'POST', + data: { id: id }, + success: function(data) { + $modalEdit.html(data); + $modalEdit.modal("show"); + + $modalEdit.off('shown.bs.modal').on('shown.bs.modal', function() { + // Focus sur le libellé car le code est généralement readonly en édition + $('#libelle').focus(); + + if (typeof stylechampsRequis === 'function') { + stylechampsRequis(); + } + }); + }, + error: function(xhr) { + console.error("Edit Error:", xhr.responseText); + if (typeof toastr !== 'undefined') { + toastr.error(msgError); + } else { + alert(msgError); + } + } + }); +} + + +function enregistrerTypeGarant() { + // 1. Initialisation des variables et sélecteurs + const libelle = $('#libelle').val().trim(); + const id = $('#id').val(); // Sera undefined en création + const racineWeb = $("#racineWeb").val(); + const codeLangue = $("#codeLangue").val(); + const $btn = $('#btn-enreg-typegarant'); + + // Détermination de l'URL cible (Link) + let link = (id === undefined) ? 'Ajaxouvrirtypegarant' : 'Ajaxmodifiertypegarant'; + + // 2. Gestion des traductions + const msgRequired = (codeLangue === "en_US") ? "The label is required !" : "Le libellé est obligatoire !"; + const msgSuccess = (codeLangue === "en_US") ? "Saved successfully" : "Enregistrement réussi"; + + // 3. Validation + if (libelle === '') { + if (typeof toastr !== 'undefined') { + toastr.warning(msgRequired); + } else { + alert(msgRequired); + } + $('#libelle').addClass('border-danger').focus(); + return; + } + + // 4. Préparation de l'envoi + const donnees = $('#formModal').serialize(); + $btn.prop('disabled', true).html('...'); + + $.ajax({ + url: racineWeb + link + "/enregistrer/", + type: 'post', + data: donnees, + success: function(data) { + // Fermeture des modales selon le cas (standard Bootstrap 5) + const modalId = (id === undefined) ? '#div_add_typegarant' : '#div_edit_typegarant'; + const modalInstance = bootstrap.Modal.getInstance(document.querySelector(modalId)); + + if (modalInstance) { + modalInstance.hide(); + } + + if (typeof toastr !== 'undefined') { + toastr.success(msgSuccess); + } + }, + error: function(xhr) { + console.error("Erreur Enregistrement:", xhr.responseText); + $btn.prop('disabled', false).html(' Enregistrer'); + if (typeof toastr !== 'undefined') { + toastr.error("Erreur serveur"); + } + }, + complete: function() { + // Redirection ou rafraîchissement propre + window.location.assign(racineWeb + "Gctypegarant/"); + } + }); } // Supprime une ligne du tableau @@ -46674,43 +46705,56 @@ function ctrlkeypress_liste_garants(ev) } } -function afficher_liste_garants() -{ - donnees = ""; - donnees_retour = ""; +function afficher_liste_garants() { + // 1. Récupération des critères + const typeGarant = $("#typeGarant").val() || 0; + const libelle = $("#libelle").val(); + const codeGcAssureur = $("#codeGcAssureur").val(); + const racineWeb = $("#racineWeb").val(); - typeGarant = $("#typeGarant").val(); - libelle = $("#libelle").val(); - codeGcAssureur = $("#codeGcAssureur").val(); - - if(typeGarant==''){ - typeGarant=0; - } - - donnees += 'typeGarant=' + typeGarant; - donnees += '&libelle=' + libelle; - donnees += '&codeGcAssureur=' + codeGcAssureur; - - //alert(donnees); - //return; - - $("#div_gcs").html('
' + '
'); - - $.ajax({ - url: $("#racineWeb").val()+"Ajaxlistegarantsparametrage/", - type : 'post', - data: donnees, - error: function(errorData) { - }, - success: function(data) { - donnees_retour = data; - }, - complete: function() { - $("#div_gcs").html(donnees_retour); - dataTableSpeciale(); - $("#nbligne").val("Nbre Lignes : "+$("#nbligne_info").val()); - } - }); + // 2. Préparation des données (Objet propre) + const donnees = { + typeGarant: typeGarant, + libelle: libelle, + codeGcAssureur: codeGcAssureur + }; + + // 3. Feedback Visuel Neutral Pro + const loaderHtml = ` +
+
+

+ ${(typeof _ !== 'undefined') ? _("Chargement des porteurs de risque...") : "Chargement des porteurs de risque..."} +

+
`; + + $("#div_gcs").html(loaderHtml); + + // 4. Appel AJAX + $.ajax({ + url: racineWeb + "Ajaxlistegarantsparametrage/", + type: 'post', + data: donnees, + success: function(data) { + // Injection des résultats + $("#div_gcs").html(data); + + // Initialisation DataTables Standard Neutral Pro + if (typeof initDataTableReference === 'function') { + initDataTableReference('#tableGarants', 'Liste_Garants'); + } else if (typeof dataTableSpeciale === 'function') { + dataTableSpeciale(); + } + + // Mise à jour du compteur (Badge dynamique au lieu de l'input) + const nbre = $("#nbligne_info").val() || 0; + $("#badge-total-garants").text(nbre + " " + (nbre > 1 ? "Lignes" : "Ligne")); + }, + error: function(xhr) { + toastr.error("Erreur lors de la récupération des données"); + $("#div_gcs").html('
Erreur de connexion au serveur.
'); + } + }); } function desactive_gc_assureur(idGarant){ @@ -46840,7 +46884,7 @@ function afficher_prestataires_reseau() data: donnees, success: function(data) { $('#div_prestataires_reseau').html(data); - appliquerDataTable(); + //appliquerDataTable(); }, error: function(data) { }, @@ -46852,243 +46896,325 @@ function afficher_prestataires_reseau() } -function ajouter_tous_prestataires_reseau() -{ - codeReseau=$("#codeReseau").val(); +function ajouter_tous_prestataires_reseau() { + const codeReseau = $("#codeReseau").val(); + const lang = $("#codeLangue").val(); - if (codeReseau<=" ") - { - v_msg="Veuillez sélectionner un réseau de soins!"; - v_msgEng="Please select a care network!"; + // Récupère le nombre et le convertit en entier + const count = parseInt($("#count_dispo").text()) || 0; + + if (count === 0) { + const v_msg = "Aucune donnée à transférer !"; + const v_msgEng = "No data to transfer!"; alert_ebene(v_msg, v_msgEng); - return; } - - donnees = 'codeReseau='+codeReseau; - - v_msg="Attention, cela va ajouter tous les prestataires disponibles à ce réseau de soins! Confirmez-vous?"; - v_msgEng="Be careful, this will add all the providers available to this healthcare network! Do you confirm?"; - - confirm_ebene(v_msg, v_msgEng) - .then((isConfirmed) => { - if (isConfirmed) { - // L'utilisateur a confirmé - $("#div_prestataires_reseau").html('
' + '
'); - $.ajax({ - url: $("#racineWeb").val()+"Ajaxprestatairesreseau/ajoutertousprestatairesreseausoins/", - type: 'POST', - data: donnees, - success: function(data) { - $('#div_prestataires_reseau').html(data); - appliquerDataTable(); - }, - error: function(data) { - }, - complete: function() { - } - }); - } else { - // L'utilisateur a annulé - console.log("Confirmation refusée"); - } - }); - + // 1. Vérification de la sélection du réseau + if (!codeReseau || codeReseau.trim() === "") { + const v_msg = "Veuillez sélectionner un réseau de soins !"; + const v_msgEng = "Please select a care network !"; + alert_ebene(v_msg, v_msgEng); + return; + } + + const donnees = { codeReseau: codeReseau }; + + // 2. Messages de confirmation + const c_msg = "Attention, cela va ajouter tous les prestataires disponibles à ce réseau de soins ! Confirmez-vous ?"; + const c_msgEng = "Be careful, this will add all available providers to this healthcare network! Do you confirm?"; + + confirm_ebene(c_msg, c_msgEng).then((isConfirmed) => { + if (isConfirmed) { + // Loader Standard INTER-SANTE + const loader = ` +
+
+
+
+ ${(lang === 'en_US') ? 'Adding all providers...' : 'Ajout de tous les prestataires...'} +
+
+
`; + + $("#div_prestataires_reseau").html(loader); + + $.ajax({ + url: $("#racineWeb").val() + "Ajaxprestatairesreseau/ajoutertousprestatairesreseausoins/", + type: 'POST', + data: donnees, + success: function(data) { + // Injection du nouveau contenu + $('#div_prestataires_reseau').html(data); + + // Réactivation des composants Bootstrap-Select + actualiserSelectPicker('.selectpicker'); + + // Application de la DataTable si nécessaire + if (typeof appliquerDataTable === 'function') { + appliquerDataTable(); + } + }, + error: function(xhr, status, error) { + console.error("Erreur INTER-SANTE (Ajout Global):", error); + alert_ebene("Erreur lors de l'ajout global.", "Error during global addition."); + } + }); + } + }); } -function ajouter_un_prestataire_reseau(codePrestataire) -{ - codeReseau=$("#codeReseau").val(); +function ajouter_un_prestataire_reseau(codePrestataire) { + const codeReseau = $("#codeReseau").val(); - if (codeReseau<=" ") - { - v_msg="Veuillez sélectionner un réseau de soins!"; - v_msgEng="Please select a care network!"; - alert_ebene(v_msg, v_msgEng); + // Vérification de sécurité + if (!codeReseau || codeReseau.trim() === "") { + const v_msg = "Veuillez sélectionner un réseau de soins !"; + const v_msgEng = "Please select a care network !"; + alert_ebene(v_msg, v_msgEng); + return; + } - return; - } + const donnees = { + codeReseau: codeReseau, + codePrestataire: codePrestataire + }; + // Loader Standard Neutral Pro + const loader = ` +
+
+
+
+ ${($("#codeLangue").val() === 'en_US') ? 'Updating network...' : 'Mise à jour du réseau...'} +
+
+
`; - donnees = 'codeReseau='+codeReseau+'&codePrestataire='+codePrestataire; + $("#div_prestataires_reseau").html(loader); - $("#div_prestataires_reseau").html('
' + '
'); - - $.ajax({ - url: $("#racineWeb").val()+"Ajaxprestatairesreseau/ajouterunprestataireaureseau/", - type: 'POST', - data: donnees, - success: function(data) { - $('#div_prestataires_reseau').html(data); - appliquerDataTable(); - }, - error: function(data) { - }, - complete: function() - { - } - }); + $.ajax({ + url: $("#racineWeb").val() + "Ajaxprestatairesreseau/ajouterunprestataireaureseau/", + type: 'POST', + data: donnees, + success: function(data) { + // 1. Injection du nouveau contenu (Tableaux + Filtres) + $('#div_prestataires_reseau').html(data); + + // 2. Réactivation des composants Bootstrap-Select (Important !) + actualiserSelectPicker('.selectpicker'); + + // 3. Application de la DataTable si nécessaire + if (typeof appliquerDataTable === 'function') { + appliquerDataTable(); + } + }, + error: function(xhr, status, error) { + console.error("Erreur INTER-SANTE:", error); + alert_ebene("Une erreur est survenue lors de l'ajout.", "An error occurred during addition."); + } + }); } -function retirer_tous_prestataires_reseau() -{ - codeReseau=$("#codeReseau").val(); +function retirer_tous_prestataires_reseau() { + const codeReseau = $("#codeReseau").val(); + const lang = $("#codeLangue").val(); - if (codeReseau<=" ") - { - v_msg="Veuillez sélectionner un réseau de soins!"; - v_msgEng="Please select a care network!"; + // Récupère le nombre et le convertit en entier + const count = parseInt($("#count_affect").text()) || 0; + + if (count === 0) { + const v_msg = "Aucune donnée à retirer !"; + const v_msgEng = "No data to remove!"; alert_ebene(v_msg, v_msgEng); - return; } - donnees = 'codeReseau='+codeReseau; + // 1. Vérification de la sélection + if (!codeReseau || codeReseau.trim() === "") { + const v_msg = "Veuillez sélectionner un réseau de soins !"; + const v_msgEng = "Please select a care network !"; + alert_ebene(v_msg, v_msgEng); + return; + } - v_msg="Attention, cela va vider ce réseau de soins de tous ses prestataires! Confirmez-vous?"; - v_msgEng="Be careful, this will empty this healthcare network of all its providers! Do you confirm?"; - - - confirm_ebene(v_msg, v_msgEng) - .then((isConfirmed) => { - if (isConfirmed) { - // L'utilisateur a confirmé - $("#div_prestataires_reseau").html('
' + '
'); + const donnees = { codeReseau: codeReseau }; - $.ajax({ - url: $("#racineWeb").val()+"Ajaxprestatairesreseau/retirertousprestatairesreseausoins/", - type: 'POST', - data: donnees, - success: function(data) - { - $('#div_prestataires_reseau').html(data); - appliquerDataTable(); - }, - error: function(data) - { - }, - complete: function() - { - } - }); - } else { - // L'utilisateur a annulé - console.log("Confirmation refusée"); - } - }); - + // 2. Message de confirmation (Action critique) + const c_msg = "Attention, cela va vider ce réseau de soins de tous ses prestataires ! Confirmez-vous ?"; + const c_msgEng = "Be careful, this will empty this healthcare network of all its providers! Do you confirm?"; + + confirm_ebene(c_msg, c_msgEng).then((isConfirmed) => { + if (isConfirmed) { + // Loader Standard INTER-SANTE (Style Danger/Alerte discret) + const loader = ` +
+
+
+
+ ${(lang === 'en_US') ? 'Emptying network...' : 'Vidage du réseau en cours...'} +
+
+
`; + + $("#div_prestataires_reseau").html(loader); + + $.ajax({ + url: $("#racineWeb").val() + "Ajaxprestatairesreseau/retirertousprestatairesreseausoins/", + type: 'POST', + data: donnees, + success: function(data) { + // Injection du nouveau contenu (tableaux vides + filtres réinitialisés) + $('#div_prestataires_reseau').html(data); + + // Réactivation des composants Bootstrap-Select + actualiserSelectPicker('.selectpicker'); + + // Application de la DataTable si nécessaire + if (typeof appliquerDataTable === 'function') { + appliquerDataTable(); + } + }, + error: function(xhr, status, error) { + console.error("Erreur INTER-SANTE (Vidage Global):", error); + alert_ebene("Erreur lors du retrait global.", "Error during global removal."); + } + }); + } + }); } -function retirer_un_prestataire_reseau(codePrestataire) -{ - - codeReseau=$("#codeReseau").val(); - +function retirer_un_prestataire_reseau(codePrestataire) { + const codeReseau = $("#codeReseau").val(); + const lang = $("#codeLangue").val(); - if (codeReseau<=" ") - { - v_msg="Veuillez sélectionner un réseau de soins!"; - v_msgEng="Please select a care network!"; - alert_ebene(v_msg, v_msgEng); + // 1. Vérification de la sélection du réseau + if (!codeReseau || codeReseau.trim() === "") { + const v_msg = "Veuillez sélectionner un réseau de soins !"; + const v_msgEng = "Please select a care network !"; + alert_ebene(v_msg, v_msgEng); + return; + } - return; - } + const donnees = { + codeReseau: codeReseau, + codePrestataire: codePrestataire + }; - donnees = 'codeReseau='+codeReseau+'&codePrestataire='+codePrestataire; - - - $("#div_prestataires_reseau").html('
' + '
'); + // 2. Loader Standard INTER-SANTE + const loader = ` +
+
+
+
+ ${(lang === 'en_US') ? 'Updating network...' : 'Mise à jour du réseau...'} +
+
+
`; - $.ajax({ - url: $("#racineWeb").val()+"Ajaxprestatairesreseau/retirerunprestatairereseausoins/", - type: 'POST', - data: donnees, - success: function(data) { - $('#div_prestataires_reseau').html(data); - appliquerDataTable(); - }, - error: function(data) { - }, - complete: function() - { - } - }); + $("#div_prestataires_reseau").html(loader); + + $.ajax({ + url: $("#racineWeb").val() + "Ajaxprestatairesreseau/retirerunprestatairereseausoins/", + type: 'POST', + data: donnees, + success: function(data) { + // 1. Injection du nouveau HTML (Les tableaux mis à jour) + $('#div_prestataires_reseau').html(data); + + // 2. Réactivation cruciale des SelectPickers pour les zones de recherche + actualiserSelectPicker('.selectpicker'); + + // 3. Application de la DataTable si nécessaire + if (typeof appliquerDataTable === 'function') { + appliquerDataTable(); + } + }, + error: function(xhr, status, error) { + console.error("Erreur INTER-SANTE (Retrait):", error); + alert_ebene("Une erreur est survenue lors du retrait.", "An error occurred during removal."); + } + }); } -function dupliquer_reseau(id){ - - v_msg='Confirmez-vous la duplication de ce réseau de soins?'; - v_msgEng="Do you confirm the duplication of this healthcare network?"; - - - confirm_ebene(v_msg, v_msgEng) - .then((isConfirmed) => { - if (isConfirmed) { - // L'utilisateur a confirmé - donnees = 'id='+id; - $.ajax({ - url: $("#racineWeb").val()+"Ajaxdupliquerreseausoins/", - type : 'post', - data: donnees, - error: function(errorData){ - alert("Erreur : "+errorData); - }, - success: function(data) { - //alert("Success : "+data); - $('#div_dupliquer_reseau').html(data); - $('#div_dupliquer_reseau').modal("show"); - $('#div_dupliquer_reseau').on('shown.bs.modal', function(){ - stylechampsRequis(); - $('#libelle').focus(); - }); - }, - complete: function() { - - } - }); - } else { - // L'utilisateur a annulé - console.log("Confirmation refusée"); - } - }); - -} +function dupliquer_reseau(id) { + const v_msg = 'Confirmez-vous la duplication de ce réseau de soins ?'; + const v_msgEng = "Do you confirm the duplication of this healthcare network?"; -function duplicationreseausoins(){ - var codeold = $('#codeold').val(), - codeReseau = "", - libelle = $('#libelle').val(); - - if(libelle <= " "){ - v_msg="Veuillez renseigner le nom du réseau de soins!"; - v_msgEng="Please enter the name of the healthcare network!"; - alert_ebene(v_msg, v_msgEng); + confirm_ebene(v_msg, v_msgEng).then((isConfirmed) => { + if (isConfirmed) { + const donnees = { id: id }; + + $.ajax({ + url: $("#racineWeb").val() + "Ajaxdupliquerreseausoins/", + type: 'POST', + data: donnees, + success: function(data) { + const $modal = $('#div_dupliquer_reseau'); + $modal.html(data); + + // Initialisation Bootstrap 5 Modal + const myModal = new bootstrap.Modal(document.getElementById('div_dupliquer_reseau')); + myModal.show(); - return; - } + // Focus sur le champ libellé après affichage + $modal[0].addEventListener('shown.bs.modal', function () { + if (typeof stylechampsRequis === 'function') stylechampsRequis(); + $("#libelle").focus(); + }); + }, + error: function(xhr) { + alert_ebene("Erreur lors de la récupération des données.", "Error while fetching data."); + } + }); + } + }); +} - donnees = 'codeold='+codeold+'&codeReseau='+codeReseau+'&libelle='+libelle; - - $.ajax({ - url: $("#racineWeb").val()+"Ajaxdupliquerreseausoins/dupliquer/", - type : 'post', - data: donnees, - error: function(errorData){ - alert("Erreur : "+errorData); - }, - success: function(data) { - $("#div_dupliquer_reseau .close").click(); - retour_liste_reseaus(); - }, - complete: function() { - - } - }); - - +function duplicationreseausoins() { + const codeold = $('#codeold').val(); + const libelle = $('#libelle').val().trim(); + + if (!libelle) { + const v_msg = "Veuillez renseigner le nom du réseau de soins !"; + const v_msgEng = "Please enter the name of the healthcare network !"; + alert_ebene(v_msg, v_msgEng); + return; + } + + const donnees = { + codeold: codeold, + codeReseau: "", // Laissé vide car généré par le serveur + libelle: libelle + }; + + // Changement d'état du bouton pour éviter le double clic + const $btn = $("#btn-dupliquer-reseau"); + const originalText = $btn.html(); + $btn.prop('disabled', true).html(' Traitement...'); + + $.ajax({ + url: $("#racineWeb").val() + "Ajaxdupliquerreseausoins/dupliquer/", + type: 'POST', + data: donnees, + success: function(data) { + // Fermer la modale proprement + const myModalEl = document.getElementById('div_dupliquer_reseau'); + const modal = bootstrap.Modal.getInstance(myModalEl); + modal.hide(); + + // Rafraîchir la liste + if (typeof retour_liste_reseaus === 'function') { + retour_liste_reseaus(); + } + }, + error: function() { + $btn.prop('disabled', false).html(originalText); + alert_ebene("Erreur lors de la duplication.", "Error during duplication."); + } + }); } // 19/08/2020 @@ -47426,448 +47552,351 @@ function medecinsprestataire() window.location.assign($("#racineWeb").val()+"Medecinsprestataire/"); } - /****************************************************************** * AUTRE TABLE DE REFERENCES *******************************************************************/ +function chargerFichiersTable() { + const $select = $('#listetables'); + const idTable = $select.val(); + const racineWeb = $("#racineWeb").val(); + const codeLangue = $("#codeLangue").val(); -// Récupère les fichiers contenu dans la table autrestablesreference -function chargerFichiersTable(){ - - - var $id = $('#listetables').val(); + if (!idTable || idTable === "") { + $('#div_fichiers_table, #div_entete_table, #div_lister_table, #div_maj_table').empty(); + return; + } - if ($id !=''){ - donnees = 'id='+$id; - - $.ajax({ - url: $("#racineWeb").val()+"Ajaxaccesfichiersautrestables/", - type : 'post', - data: donnees, - error: function(errorData){ - alert("Erreur : "+errorData); - }, - success: function(data) { - //alert("Success : "+data); - fermeFormulaire(); - $('#div_fichiers_table').html(data); - afficheDonneesTableChoisie($('#fichier_lister').val()); - }, - complete: function() { - - } - }); - }else{ - $('#div_fichiers_table').empty(); - $('#div_entete_table').empty(); - $('#div_lister_table').empty(); - - } + // On mémorise la valeur sélectionnée AVANT de détruire le picker + const selectedVal = $select.val(); + const selectedText = $select.find('option:selected').text().trim(); + + const loadingHtml = `
+
+
`; + $('#div_lister_table').html(loadingHtml); + $('#div_maj_table').html(""); + + // ✅ ÉTAPE CLÉ : on détruit proprement le picker AVANT l'AJAX + // Cela évite que le HTML chargé le réinitialise en double + $select.selectpicker('destroy'); + + $.ajax({ + url: racineWeb + "Ajaxaccesfichiersautrestables/", + type: 'post', + data: { id: idTable }, + success: function(data) { + fermeFormulaire(); + $('#div_fichiers_table').html(data); // le script global dans data ne trouvera plus de picker à dupliquer + afficheDonneesTableChoisie($('#fichier_lister').val()); + + // ✅ On réinitialise UNE seule fois proprement + $select.selectpicker({ + liveSearch: true + }); + + // ✅ On restaure la valeur sélectionnée + $select.selectpicker('val', selectedVal); + }, + error: function(xhr) { + // En cas d'erreur, on réinitialise quand même le picker + $select.selectpicker({ liveSearch: true }); + $select.selectpicker('val', selectedVal); + toastr.error((codeLangue === "en_US") ? "Error..." : "Erreur..."); + } + }); } // Affiche les données de la table selectionnée dans un tableau -function afficheDonneesTableChoisie(fichier){ - - var codeLangue = $("#codeLangue").val(); - - +function afficheDonneesTableChoisie(fichier) { + if (!fichier || fichier === '') return; + + const racineWeb = $("#racineWeb").val(); + const $divLister = $('#div_lister_table'); + const $exportTitre = $('#export_titre').val(); + + console.log($exportTitre); + + // 1. On mémorise les valeurs actuelles avant le refresh if(fichier=="Ajaxtblisterjoursferiers"){ - codePays = $('#codePays').val(); annee = $('#annee').val(); - if(codePays==undefined){ - codePays ="CI" - } - if(annee==undefined){ var ladate=new Date(); annee =ladate.getFullYear(); } - donnees = 'codePays='+codePays+'&annee='+annee; + donnees = 'annee='+annee; }else{ donnees = ''; } - - if(fichier !=''){ - $.ajax({ - url: $("#racineWeb").val()+fichier+"/", - type : 'post', - data: donnees, - error: function(errorData){ - alert("Erreur : "+errorData); - }, - success: function(data) { - //alert("Success : "+data); - - $('#div_lister_table').html(data); - // - - - if(fichier=="Ajaxtblisterjoursferiers"){ - $('#codePays').val(codePays); - $('#annee').val(annee); - } - if(fichier=="Ajaxtblistertableauajustementgarant"){ - appliquerDataTable(); - }else{ - - if(codeLangue=="en_US") - { - $('#tableLister').DataTable({ - "lengthMenu": [ 20, 50, 100], - "language": { - "lengthMenu":"Display _MENU_ records per page", - "zeroRecords": "Nothing found - sorry", - "info": "Showing page _PAGE_ of _PAGES_", - "infoEmpty": "No records available", - "search": "Search:", - "paginate": { - "next": "►", - "previous": "◄", - "first": "|◄", - "last": "►|" - }, - "infoFiltered": "(filtered from _MAX_ total records)", - "aoColumnDefs": [ - { "bSearchable": false, "aTargets": [ 0 ] } - ] - } - }); - } - else - { - $('#tableLister').DataTable({ - "lengthMenu": [ 20, 50, 100], - "language": { - "lengthMenu":"Affiche _MENU_ par page", - "zeroRecords": "Désolé - Aucune donnée trouvée", - "info": "_PAGE_ sur _PAGES_ pages", - "infoEmpty": "Pas d'enregistrement valable", - "search": "Recherche:", - "paginate": { - "next": "►", - "previous": "◄", - "first": "|◄", - "last": "►|" - }, - "infoFiltered": "(filtré de _MAX_ total enregistrements)", - "aoColumnDefs": [ - { "bSearchable": false, "aTargets": [ 0 ] } - ] - } - }); - } - - } - - }, - complete: function() { - - } - }); - } + + // 2. Appel AJAX + $.ajax({ + url: racineWeb + fichier + "/", + type: 'post', + data: donnees, + success: function(data) { + // 3. On remplace tout le bloc + $divLister.html(data); + + // 4. INITIALISATION DATATABLE + // On s'assure que l'ancien ID n'existe plus en mémoire + if ($.fn.DataTable.isDataTable('#tableLister')) { + $('#tableLister').DataTable().destroy(); + } + + initDataTableReference('#tableLister', $exportTitre,false); + } + }); } // Gère l'affichage des boutons en entête des formulaires -function afficheBoutons($idData){ - - - var div = $('#div_maj_table').children().length; - var codeLangue = $("#codeLangue").val(); - - - if($idData == 0){ - donnees = ''; - }else{ - donnees = 'id='+$idData; - - - if(codeLangue=="en_US") - { - $('#btn-action').text('Save'); - } - else - { - $('#btn-action').text('Enregistrer'); - } - } +// Fonction pour initialiser les boutons d'entête +function afficheBoutons($idData) { + const racineWeb = $("#racineWeb").val(); + const codeLangue = $("#codeLangue").val(); + const donnees = ($idData == 0) ? '' : { id: $idData }; - $.ajax({ - url: $("#racineWeb").val()+"Ajaxentete/", - type : 'post', - data: donnees, - error: function(errorData){ - alert("Erreur : "+errorData); - }, - success: function(data) { - //alert("Success : "+data); - - - $('#div_entete_table').html(data); - - if(($('#btn-action').text() == 'Ajouter' || $('#btn-action').text() == 'Add') && div == 0){ - $('#btn-fermer').hide(); - }else{ - $('#btn-fermer').show(); - if(codeLangue=="en_US") - { - $('#btn-action').text('Save'); - } - else - { - $('#btn-action').text('Enregistrer'); - } - } - }, - complete: function(){ - - } - }); - + $.ajax({ + url: racineWeb + "Ajaxentete/", + type: 'post', + data: donnees, + success: function(data) { + // 1. Injection du HTML dans la zone dédiée + $('#div_entete_table').html(data); + + const $btnAction = $('#btn-action'); + const $btnFermer = $('#btn-fermer'); + + // 2. Application des styles de base Neutral Pro + $('#div_entete_table button').addClass('btn btn-sm fw-bold shadow-xs px-3'); + $btnFermer.addClass('btn-light border'); + + // 3. Logique du Switch (Couleur, Texte et Action) + if($idData == 0) { + // --- MODE AJOUT --- + $btnFermer.hide(); + + // Switch vers VERT + $btnAction.removeClass('btn-primary').addClass('btn-success'); + + // Texte dynamique + $btnAction.html(' ' + (codeLangue == "en_US" ? "Add" : "Ajouter")); + + // Action au clic : Charger le formulaire vide + $btnAction.attr('onclick', 'formAjoutTableRef()'); + } else { + // --- MODE MODIFICATION --- + $btnFermer.show(); + + // Switch vers BLEU + $btnAction.removeClass('btn-success').addClass('btn-warning'); + + // Texte dynamique + $btnAction.html(' ' + (codeLangue == "en_US" ? "Update" : "Enregistrer")); + + // Action au clic : Lancer la sauvegarde des données + $btnAction.attr('onclick', 'update_table()'); + } + } + }); } // Ferme le formulaire affiché -function fermeFormulaire(){ - $('#div_maj_table').empty(); - - afficheBoutons(0); - +function fermeFormulaire() { + $('#div_maj_table').empty(); + // On repasse l'ID à 0 pour réafficher le bouton "Ajouter" + afficheBoutons(0); + + // Nettoie les menus orphelins du body + $('.selectpicker').selectpicker('destroy'); } // Affiche le formulaire d'ajout de données -function formAjoutTableRef(){ - - var codeLangue = $("#codeLangue").val(); - var fichier_ajouter = $('#fichier_ajouter').val(), - btn = $('#btn-action').text(); - - //alert(fichier_ajouter); - //return; - if(fichier_ajouter != '' && fichier_ajouter != undefined){ - if(btn == 'Ajouter' || btn == 'Add'){ - donnees = ''; - $('#btn-fermer').show(); - - if(codeLangue=="en_US") - { - $('#btn-action').text('Save'); - } - else - { - $('#btn-action').text('Enregistrer'); - } +function formAjoutTableRef() { + const codeLangue = $("#codeLangue").val(); + const $btn = $('#btn-action'); + const libelleBtn = $btn.text().trim().toLowerCase(); + + // Si le bouton est déjà en mode "Enregistrer/Save", on lance la mise à jour + if (libelleBtn === 'enregistrer' || libelleBtn === 'save') { + update_table(); + return; + } - $.ajax({ - url: fichier_ajouter+"/", - type: 'post', - data: donnees, - error: function(errorData){ - //alert("Erreur : "+errorData); - }, - success: function(data) { - //alert("Success : "+data); - - $('#div_maj_table').html(data); - stylechampsRequis(); - $(".datepicker").datepicker(); - $('.selectpicker').selectpicker(); - if(typeof $('#div_maj_table input:first').attr('type') == 'string'){ - $('#div_maj_table input:first').focus(); - }else{ - $('#div_maj_table select:first').focus(); - } - }, - complete: function(){ - } - }); - }else{ - update_table(); - } - }else{ - var nomForm = $('#nomForm').val(); - - if(nomForm == 'frmbaremegarant'){ - fichier_ajouter = 'Ajaxajouterbaremeaccessoiregarant'; - }else if(nomForm == 'frmtrancheaccessoire'){ - fichier_ajouter = 'Ajaxtbajouterbaremeaccessoireavenant'; - }else if(nomForm == 'frmtauxAjustement'){ - fichier_ajouter = 'Ajaxtbajoutertableauajustement'; - }else if(nomForm == 'frmtauxAjustementgarant'){ - fichier_ajouter = 'Ajaxtbajoutertableauajustementgarant'; - }else if(nomForm == 'frmacteconsultation'){ - fichier_ajouter = 'Ajaxtbajouteracteconsultation'; - } - - - if(btn == 'Ajouter' || btn == 'Add'){ - donnees = ''; - if(nomForm == 'frmtauxAjustementgarant'){ - donnees = 'codeGcAssureur='+$("#codeGcAssureur").val(); - } - - $('#btn-fermer').show(); - - if(codeLangue=="en_US") - { - $('#btn-action').text('Save'); - } - else - { - $('#btn-action').text('Enregistrer'); - } - - $.ajax({ - url: fichier_ajouter+"/", - type: 'post', - data: donnees, - error: function(errorData){ - //alert("Erreur : "+errorData); - }, - success: function(data) { - //alert("Success : "+data); - $('#div_maj_table').html(data); - $(".datepicker").datepicker(); - $(".selectpicker").selectpicker(); - stylechampsRequis(); - if(typeof $('#div_maj_table input:first').attr('type') == 'string'){ - $('#div_maj_table input:first').focus(); - }else{ - $('#div_maj_table select:first').focus(); - } - - }, - complete: function(){ - } - }); - }else{ - update_table(); - } - - } + // Détermination du fichier + let fichier_ajouter = $('#fichier_ajouter').val(); + if (!fichier_ajouter) { + const mapping = { + 'frmbaremegarant': 'Ajaxajouterbaremeaccessoiregarant', + 'frmtrancheaccessoire': 'Ajaxtbajouterbaremeaccessoireavenant', + 'frmtauxAjustement': 'Ajaxtbajoutertableauajustement', + 'frmtauxAjustementgarant': 'Ajaxtbajoutertableauajustementgarant', + 'frmacteconsultation': 'Ajaxtbajouteracteconsultation' + }; + fichier_ajouter = mapping[$('#nomForm').val()]; + } + if (!fichier_ajouter) { + toastr.warning("Action non configurée pour cette table."); + return; + } + + // Préparation des données spécifiques + let donnees = {}; + if ($('#nomForm').val() == 'frmtauxAjustementgarant') { + donnees.codeGcAssureur = $("#codeGcAssureur").val(); + } + + // UI : Passage en mode enregistrement + $('#btn-fermer').show(); + $btn.html(' ' + (codeLangue == "en_US" ? "Save" : "Enregistrer")); + + $.ajax({ + url: $("#racineWeb").val() + fichier_ajouter + "/", + type: 'post', + data: donnees, + success: function(data) { + $('#div_maj_table').html(data); + + // 1. On initialise tous les selects du nouveau formulaire + // On ne demande PAS le focus ici (paramètre false) pour ne pas forcer l'ouverture du premier select + actualiserSelectPicker('#div_maj_table .selectpicker', false); + + // 2. Initialisation des autres composants + const formatD = (codeLangue === "en_US") ? 'mm/dd/yyyy' : 'dd/mm/yyyy'; + $(".datepicker").datepicker({ + autoclose: true, + format: formatD + }); + + // 3. Focus intelligent sur le PREMIER champ du formulaire + setTimeout(function() { + var $firstField = $('#div_maj_table').find('input:not([type="hidden"]), select').first(); + + // Si le premier champ est un selectpicker, on utilise sa méthode focus dédiée + if ($firstField.hasClass('selectpicker')) { + $firstField.selectpicker('focus'); + } else { + $firstField.focus(); + } + }, 200); + } + }); } // Filtrer la liste des villes par pays -function filtreVilleParPays(){ - var codePays = $('#codePays').val(); +function filtreVilleParPays() { + const $selectVille = $('#codeVille'); + const racineWeb = $("#racineWeb").val(); - donnees ='codePays='+codePays; - $.ajax({ - url: "Ajaxfiltrevilleparpays/", - type: 'post', - data: donnees, - error: function(errorData){ - //alert("Erreur : "+errorData); - - }, - success: function(data) { - //alert("Success : "+data); - $('#div_ville').empty(); - $('#div_ville').html(data); - //filtreLocaliteParVille(); - }, - complete: function(){ - } - }); - + $.ajax({ + url: racineWeb + "Ajaxfiltrevilleparpays/", + type: 'post', + data: { codePays: $('#codePays').val() }, + success: function(htmlOptions) { + // Injection des options (venant du PHP liste_options modifiée) + $selectVille.html(htmlOptions); + $selectVille.val(''); + + // Initialise, donne le focus et ouvre le menu des villes + actualiserSelectPicker('#codeVille', true); + } + }); } // Filtrer la liste des localités par pays et par ville -function filtreLocaliteParVille(){ - var codePays = $('#codePays').val(), - codeVille = $('#codeVille').val(); +// Filtrer la liste des localités par pays et par ville +function filtreLocaliteParVille() { + var codePays = $('#codePays').val(), + codeVille = $('#codeVille').val(); - if(codePays == ''){ - return; - }else{ - donnees ='codePays='+codePays+'&codeVille='+codeVille; - } + if (codePays == '') { + return; + } else { + var donnees = 'codePays=' + codePays + '&codeVille=' + codeVille; + } - $.ajax({ - url: "Ajaxfiltrelocaliteparville/", - type: 'post', - data: donnees, - error: function(errorData){ - //alert("Erreur : "+errorData); - - }, - success: function(data) { - //alert("Success : "+data); - $('#div_localite').empty(); + $.ajax({ + url: "Ajaxfiltrelocaliteparville/", + type: 'post', + data: donnees, + success: function(data) { + // 1. Injection du HTML brut envoyé par le PHP $('#div_localite').html(data); - }, - complete: function(){ - } - }); - + + // 2. Appel de VOTRE fonction sur le nouveau SELECT injecté + // On passe 'true' si on veut que le menu s'ouvre tout seul après le filtrage + actualiserSelectPicker('#codeLocalite', true); + } + }); } // Affiche le formulaire de modification de données -function formModifTableRef($idData){ - - var codeLangue = $("#codeLangue").val(); - var fichier_modifier = $('#fichier_modifier').val(), - btn = $('#btn-action').text(); +function formModifTableRef($idData) { + var codeLangue = $("#codeLangue").val(); + var racineWeb = $("#racineWeb").val(); + + // 1. Mise à jour de l'entête (Boutons) + // On appelle afficheBoutons avec l'ID pour passer en mode "Enregistrer" + afficheBoutons($idData); - if(fichier_modifier==undefined){ - var nomForm = $('#nomForm').val(); - - if(nomForm == 'frmbaremegarant'){ - - fichier_modifier = 'Ajaxmodifierbaremeaccessoiregarant'; - }else if(nomForm == 'frmtrancheaccessoire'){ - fichier_modifier = 'Ajaxtbmodifierbaremeaccessoireavenant'; - }else if(nomForm == 'frmtauxAjustement'){ - fichier_modifier = 'Ajaxtbmodifiertableauajustement'; - }else if(nomForm == 'frmtauxAjustementgarant'){ - fichier_modifier = 'Ajaxtbmodifiertableauajustementgarant'; - }else if(nomForm == 'frmacteconsultation'){ - fichier_modifier = 'Ajaxtbmodifieracteconsultation'; - } - } + // 2. Détermination du fichier de modification + var fichier_modifier = $('#fichier_modifier').val(); + if (fichier_modifier == undefined) { + var nomForm = $('#nomForm').val(); + var mapping = { + 'frmbaremegarant': 'Ajaxmodifierbaremeaccessoiregarant', + 'frmtrancheaccessoire': 'Ajaxtbmodifierbaremeaccessoireavenant', + 'frmtauxAjustement': 'Ajaxtbmodifiertableauajustement', + 'frmtauxAjustementgarant': 'Ajaxtbmodifiertableauajustementgarant', + 'frmacteconsultation': 'Ajaxtbmodifieracteconsultation' + }; + fichier_modifier = mapping[nomForm] || ''; + } - if(btn == 'Ajouter' || btn == 'Add'){ - donnees = ''; - $('#btn-fermer').show(); - - if(codeLangue=="en_US") - { - $('#btn-action').text('Save'); - } - else - { - $('#btn-action').text('Enregistrer'); - } - - } + if (fichier_modifier == '') return; - donnees = 'id='+$idData; - - $.ajax({ - url: fichier_modifier+"/", - type : 'post', - data: donnees, - error: function(errorData){ - alert("Erreur : "+errorData); - }, - success: function(data) { - //alert("Success : "+data); - $('#div_maj_table').html(data); - $(".datepicker").datepicker(); - $(".selectpicker").selectpicker(); - stylechampsRequis(); - if(typeof $('#div_maj_table input:first').attr('type') == 'string'){ - $('#div_maj_table input').eq(1).focus(); - }else{ - $('#div_maj_table select:first').focus(); - } - - }, - complete: function() { - - } - }); + // 3. Chargement du formulaire + $.ajax({ + url: racineWeb + fichier_modifier + "/", + type: 'post', + data: { id: $idData }, + beforeSend: function() { + $('#div_maj_table').html('
'); + }, + success: function(data) { + $('#div_maj_table').html(data); + + // 1. On initialise tous les selects du nouveau formulaire + // On ne demande PAS le focus ici (paramètre false) pour ne pas forcer l'ouverture du premier select + actualiserSelectPicker('#div_maj_table .selectpicker', false); + + // 2. Initialisation des autres composants + const formatD = (codeLangue === "en_US") ? 'mm/dd/yyyy' : 'dd/mm/yyyy'; + $(".datepicker").datepicker({ + autoclose: true, + format: formatD + }); + + if (typeof stylechampsRequis === "function") stylechampsRequis(); + + // 3. Focus intelligent sur le PREMIER champ du formulaire + setTimeout(function() { + var $firstField = $('#div_maj_table').find('input:not([type="hidden"]), select').first(); + + // Si le premier champ est un selectpicker, on utilise sa méthode focus dédiée + if ($firstField.hasClass('selectpicker')) { + $firstField.selectpicker('focus'); + } else { + $firstField.focus(); + } + }, 200); + }, + error: function(xhr) { + toastr.error("Erreur de chargement du formulaire"); + } + }); } // Supprime une ligne du tableau @@ -47998,129 +48027,109 @@ function supprimerprestataireenmoins($idData){ // Enregistrement des données dans les différentes tables (Ajout ou modification) -function update_table(){ - - var fichier_ajouter = $('#fichier_ajouter').val(), - fichier_lister = $('#fichier_lister').val(), - fichier_modifier= $('#fichier_modifier').val(), - id = $('#formData .sr-only').val(), - visible = false, - valide = true; - requis = $('input,select,textarea').filter('[required]:visible'); +function update_table() { + const racineWeb = $("#racineWeb").val(); + const codeLangue = $("#codeLangue").val(); + const nomForm = $('#nomForm').val(); + + // 1. Récupération dynamique des fichiers (priorité aux champs hidden) + let f_ajouter = $('#fichier_ajouter').val(); + let f_modifier = $('#fichier_modifier').val(); + let f_lister = $('#fichier_lister').val(); - if(fichier_ajouter == undefined && fichier_modifier==undefined && fichier_lister==undefined){ - var nomForm = $('#nomForm').val(); - - if(nomForm == 'frmbaremegarant'){ - fichier_ajouter = 'Ajaxajouterbaremeaccessoiregarant'; - fichier_modifier = 'Ajaxmodifierbaremeaccessoiregarant'; - }else if(nomForm == 'frmtrancheaccessoire'){ - fichier_ajouter = 'Ajaxtbajouterbaremeaccessoireavenant'; - fichier_modifier = 'Ajaxtbmodifierbaremeaccessoireavenant'; - fichier_lister = 'Ajaxtblisterbaremeaccessoireavenant'; - }else if(nomForm == 'frmtauxAjustement'){ - fichier_ajouter = 'Ajaxtbajoutertableauajustement'; - fichier_modifier = 'Ajaxtbmodifiertableauajustement'; - fichier_lister = 'Ajaxtblistertableauajustement'; - }else if(nomForm == 'frmtauxAjustementgarant'){ - fichier_ajouter = 'Ajaxtbajoutertableauajustementgarant'; - fichier_modifier = 'Ajaxtbmodifiertableauajustementgarant'; - fichier_lister = 'Ajaxtblistertableauajustementgarant'; - }else if(nomForm == 'frmacteconsultation'){ - fichier_ajouter = 'Ajaxtbajouteracteconsultation'; - fichier_modifier = 'Ajaxtbmodifieracteconsultation'; - } - } - - if(id == undefined){ - link = $("#racineWeb").val()+fichier_ajouter+"/ajouter/" - }else{ - link = $("#racineWeb").val()+fichier_modifier+"/modifier/" - } - - requis.each(function(){ - if($(this).val() == ''){ - v_msg="Veuillez saisir les champs en rouge !"; - v_msgEng="Please enter the fields in red !"; - alert_ebene(v_msg,v_msgEng); - $(this).css('borderColor','red'); - valide = false; - return false; - }else{ - valide = true; - } - }); + // Mapping de secours si les champs hidden sont absents + if (!f_ajouter && !f_modifier) { + const mapping = { + 'frmbaremegarant': ['Ajaxajouterbaremeaccessoiregarant', 'Ajaxmodifierbaremeaccessoiregarant', ''], + 'frmtrancheaccessoire': ['Ajaxtbajouterbaremeaccessoireavenant', 'Ajaxtbmodifierbaremeaccessoireavenant', 'Ajaxtblisterbaremeaccessoireavenant'], + 'frmtauxAjustement': ['Ajaxtbajoutertableauajustement', 'Ajaxtbmodifiertableauajustement', 'Ajaxtblistertableauajustement'], + 'frmtauxAjustementgarant': ['Ajaxtbajoutertableauajustementgarant', 'Ajaxtbmodifiertableauajustementgarant', 'Ajaxtblistertableauajustementgarant'], + 'frmacteconsultation': ['Ajaxtbajouteracteconsultation', 'Ajaxtbmodifieracteconsultation', ''] + }; + if (mapping[nomForm]) { + [f_ajouter, f_modifier, f_lister] = mapping[nomForm]; + } + } - if(valide){ - donnees = $('#formData').serialize(); - - if(nomForm == 'assures'){ - var dateNaissance = $("#dateNaissance").val(); - var dateEntree = $("#dateEntree").val(); - var dateAdhesion = $("#dateAdhesion").val(); - var dateRetrait = $("#dateRetrait").val(); - - donnees+="&dateNaissance="+dateNaissance+"&dateEntree="+dateEntree; - donnees+="&dateAdhesion="+dateAdhesion+"&dateRetrait="+dateRetrait; - }else if(nomForm == 'ayantdroits'){ - var adDateNaissance = $("#adDateNaissance").val(); - donnees+="&adDateNaissance="+adDateNaissance; - }else if(nomForm == 'frmbaremegarant'){ - var codeGcAssureur = $("#codeGcAssureur").val(); - donnees+="&codeGcAssureur="+codeGcAssureur; - }else if(nomForm == 'frmtauxAjustementgarant'){ - var codeGcAssureur = $("#codeGcAssureur").val(); - donnees+="&codeGcAssureur="+codeGcAssureur; - } - - //alert(donnees); - - //return; - - $.ajax({ - url: link, - type : 'post', - data: donnees, - error: function(errorData) { - - }, - success: function(data) { - // alert(data); - - if(data.length > 5){ - var str = data.split('/'); - alert_ebene(str[0],str[1]); - visible = true; - } - if(nomForm == 'frmbaremegarant'){ - afficher_bareme_accessoire_garant(); - fermeFormulaire(); - return; - }else if(nomForm == "frmtrancheaccessoire"){ - window.location.assign($("#racineWeb" ).val()+"Tranchesaccessoires/"); - }else if(nomForm == "frmtauxAjustement"){ - window.location.assign($("#racineWeb" ).val()+"Tableauajustementprimes/"); - }else if(nomForm == 'frmtauxAjustementgarant'){ - afficher_tauxajustement_garant(); - fermeFormulaire(); - return; - }else if(nomForm == "frmacteconsultation"){ - window.location.assign($("#racineWeb" ).val()+"Actesconsultations/"); - } - - afficheDonneesTableChoisie(fichier_lister); - if(!visible){ - fermeFormulaire(); - }else{ - $('#div_maj_table input:first').css('borderColor','red'); - } - }, - complete: function() { - - } - }); + // 2. Détermination de l'ID et de l'URL (Ajout vs Modif) + const idValue = $('#id').val() || $('#formData .sr-only').val(); + const isEdit = (idValue && idValue != '0' && idValue != ''); + const finalLink = racineWeb + (isEdit ? f_modifier + "/modifier/" : f_ajouter + "/ajouter/"); - } + // 3. Validation des champs requis + let valide = true; + const requis = $('#formData').find('[required]:visible'); + + requis.each(function() { + if ($(this).val().trim() === '') { + const msg = (codeLangue === "en_US") ? "Please fill in the required fields!" : "Veuillez remplir les champs obligatoires !"; + alert_ebene(msg, msg); + $(this).addClass('is-invalid').css('borderColor', '#dc3545').focus(); + valide = false; + return false; // Break loop + } else { + $(this).removeClass('is-invalid').css('borderColor', ''); + } + }); + + if (!valide) return; + + // 4. Collecte et enrichissement des données + let donnees = $('#formData').serialize(); + + // Ajout de l'ID si manquant dans le serialize + if (isEdit && !donnees.includes('id=')) donnees += "&id=" + idValue; + + // Cas spécifiques (Dates et codes parents) + const addParam = (id) => $(id).length ? "&" + $(id).attr('id') + "=" + $(id).val() : ""; + + if (nomForm === 'assures') { + donnees += addParam("#dateNaissance") + addParam("#dateEntree") + addParam("#dateAdhesion") + addParam("#dateRetrait"); + } else if (nomForm === 'ayantdroits') { + donnees += addParam("#adDateNaissance"); + } else if (['frmbaremegarant', 'frmtauxAjustementgarant'].includes(nomForm)) { + donnees += addParam("#codeGcAssureur"); + } + + // 5. Exécution AJAX + $.ajax({ + url: finalLink, + type: 'post', + data: donnees, + beforeSend: function() { + $('#btn-action').prop('disabled', true).html(''); + }, + success: function(data) { + // Gestion de la réponse serveur (Message Succès/Erreur) + if (data && data.length > 5) { + const parts = data.split('/'); + alert_ebene(parts[0], parts[1] || parts[0]); + } + + // Routage après succès + const routes = { + 'frmbaremegarant': () => { if(window.afficher_bareme_accessoire_garant) afficher_bareme_accessoire_garant(); fermeFormulaire(); }, + 'frmtrancheaccessoire': () => window.location.assign(racineWeb + "Tranchesaccessoires/"), + 'frmtauxAjustement': () => window.location.assign(racineWeb + "Tableauajustementprimes/"), + 'frmtauxAjustementgarant': () => { if(window.afficher_tauxajustement_garant) afficher_tauxajustement_garant(); fermeFormulaire(); }, + 'frmacteconsultation': () => window.location.assign(racineWeb + "Actesconsultations/") + }; + + if (routes[nomForm]) { + routes[nomForm](); + } else { + // Comportement par défaut : rafraîchir la liste et fermer + if (f_lister) afficheDonneesTableChoisie(f_lister); + fermeFormulaire(); + } + }, + error: function(xhr) { + toastr.error("Erreur serveur : " + xhr.status); + }, + complete: function() { + $('#btn-action').prop('disabled', false); + } + }); } function cocherDecocherTout(fichier_lister){ @@ -48158,67 +48167,56 @@ function cocherDecocherTout(fichier_lister){ } -function cocherDecocherUn(fichier_lister,id){ - var nbcoche = $('#nbcoche').val(); - - - donnees = "id="+id; - donnees_retour = ""; - - $.ajax({ - url: $("#racineWeb").val()+fichier_lister+"/selectionneun/", - type : 'post', - data: donnees, - error: function(errorData) { - // alert("Erreur : "+errorData); - }, - success: function(data) { - - if(fichier_lister=="Ajaxlisteprestataireparlot" || fichier_lister=="Ajaxlisteprestatairegroupe"){ - - donnees_retour = data; +function cocherDecocherUn(fichier_lister, id) { + const racine = $("#racineWeb").val(); + const lang = $("#codeLangue").val(); + const donnees = { id: id }; - - if(parseInt(donnees_retour,10) > 0){ - codeLangue = $("#codeLangue").val(); - if(codeLangue=="en_US") - { - p_msg = "Uncheck all"; - } - else - { - p_msg = "Décocher tous" ; - - } - $('#btn-coche').text(p_msg); - }else{ - - if(codeLangue=="en_US") - { - p_msg = "Check all"; - } - else - { - p_msg = "Cocher tous" ; - - } - $('#btn-coche').text(p_msg); - } - - $("#nbcoche").val('Lignes Cochées : '+parseInt(donnees_retour,10)); - - return; - }else{ - afficheDonneesTableChoisie(fichier_lister); - } - }, - complete: function() { - - } - }); - + $.ajax({ + url: racine + fichier_lister + "/selectionneun/", + type: 'POST', + data: donnees, + success: function(data) { + // data contient généralement le nouveau nombre total de lignes cochées + const nbcoche = parseInt(data, 10) || 0; + + if (fichier_lister === "Ajaxlisteprestataireparlot" || fichier_lister === "Ajaxlisteprestatairegroupe") { + + // 1. Mise à jour des compteurs (Badge et Input caché) + $("#nbcoche").val(nbcoche); + $("#nbcoche_display").text(nbcoche); // L'ID du span dans le badge que nous avons créé + + // 2. Mise à jour dynamique du bouton global (#btn-coche) + const $btnCoche = $('#btn-coche'); + let libelleBtn, btnClassAdd, btnClassRemove; + + if (nbcoche > 0) { + libelleBtn = (lang === "en_US") ? "Uncheck all" : "Décocher tous"; + btnClassAdd = 'btn-danger'; + btnClassRemove = 'btn-primary'; + } else { + libelleBtn = (lang === "en_US") ? "Check all" : "Cocher tous"; + btnClassAdd = 'btn-primary'; + btnClassRemove = 'btn-danger'; + } + + // Appliquer le texte et changer la couleur pour un feedback visuel + $btnCoche.text(libelleBtn).addClass(btnClassAdd).removeClass(btnClassRemove); + + } else { + // Comportement par défaut pour les autres types de listes + if (typeof afficheDonneesTableChoisie === 'function') { + afficheDonneesTableChoisie(fichier_lister); + } + } + }, + error: function(xhr) { + console.error("Erreur sélection unique INTER-SANTE:", xhr.statusText); + } + }); } +/* function filtreTableReference(numeroTable){ donnees = "numeroTable="+numeroTable; @@ -48227,8 +48225,6 @@ function filtreTableReference(numeroTable){ $('#div_fichiers_table').html(""); $('#div_entete_table').html(""); - //alert(donnees); - //return; $.ajax({ url: $("#racineWeb").val()+"Ajaxfiltretablesreference/", type : 'post', @@ -48240,7 +48236,7 @@ function filtreTableReference(numeroTable){ // alert("Success : "+data); $("#div_listetables").html(data); $("#listetables").selectpicker(); - + $("#listetables").focus(); }, complete: function() { @@ -48248,6 +48244,48 @@ function filtreTableReference(numeroTable){ }); } +*/ + +function filtreTableReference(numeroTable) { + const racineWeb = $("#racineWeb").val(); + const $divListe = $("#div_listetables"); + + // 1. On tue l'existant et on vide le BODY des menus flottants + if ($("#listetables").length) { + $("#listetables").selectpicker('destroy'); + } + $('.bootstrap-select.bs-container').remove(); + $divListe.empty(); + + $.ajax({ + url: racineWeb + "Ajaxfiltretablesreference/", + type : 'post', + data: { numeroTable: numeroTable }, + success: function(data) { + // 2. On injecte le HTML + $divListe.html(data); + const $select = $("#listetables"); + + // 3. Initialisation forcée + setTimeout(function() { + $select.selectpicker({ + liveSearch: true, + container: 'body', + width: '100%', + style: 'btn-form-select', + noneSelectedText: '-- Sélectionner --' + }); + + // --- LE FIX RADICAL --- + // On force le nettoyage du texte du bouton pour supprimer les accumulations + const initialText = $select.find('option:selected').text() || '-- Sélectionner --'; + $divListe.find('.filter-option-inner-inner').text(initialText); + + $divListe.find('.dropdown-toggle').focus(); + }, 150); + } + }); +} function supprimer_choix(){ @@ -49454,46 +49492,64 @@ function dataTableServeur(){ } } -function rattacher_prestataires_reseau(){ - var nbcoche = $('#nbcoche').val(); - var nomReseau = $('#nomReseau').val(); - var msg_fr = "Aucun prestataire n'est sélectionné pour être rattaché au reséau de soins : "+nomReseau+"!"; - var msg_en = "No provider is selected to be attached to the care network: "+nomReseau+"'"; - - if(nbcoche == '0' || nbcoche =='' || nbcoche ==undefined){ - alert_ebene(msg_fr,msg_en); - return; - }else{ - msg_fr = "Confirmez-vous le rattachement des "+ nbcoche +" prestataires sélectionnés au reséau de soins :"+nomReseau+"?"; - msg_en = "Do you confirm the attachment of the "+ nbcoche +" selected providers to the care network"+nomReseau+"?"; - - confirm_ebene(msg_fr, msg_en) - .then((isConfirmed) => { - if (isConfirmed) { - // L'utilisateur a confirmé - donnees = ""; +function rattacher_prestataires_reseau() { + const racine = $("#racineWeb").val(); + const lang = $("#codeLangue").val(); + const nomReseau = $('#nomReseau').val(); + + // 1. Extraction propre du nombre (on ne garde que les chiffres) + // Utile si le champ contient "Lignes Cochées : 5" + let nbcocheRaw = $('#nbcoche').val(); + let nbcoche = parseInt(nbcocheRaw.replace(/[^0-9]/g, ''), 10) || 0; - $.ajax({ - url: $("#racineWeb").val()+"Ajaxlisteprestataireparlot/rattacher/", - type : 'post', - data: donnees, - error: function(errorData) { - //alert("Erreur : "+errorData); - }, - success: function(data) { - //alert("Success : "+data); - }, - complete: function() { - afficher_lite_prestataire_lot(); - } - }); - } else { - // L'utilisateur a annulé - console.log("Confirmation refusée"); - } - }); - } + // 2. Vérification si sélection vide + if (nbcoche === 0) { + const msg_fr = "Aucun prestataire n'est sélectionné pour être rattaché au réseau de soins : " + nomReseau + " !"; + const msg_en = "No provider is selected to be attached to the care network: " + nomReseau + " !"; + alert_ebene(msg_fr, msg_en); + return; + } + // 3. Confirmation de l'action + const conf_fr = "Confirmez-vous le rattachement des " + nbcoche + " prestataires sélectionnés au réseau de soins : " + nomReseau + " ?"; + const conf_en = "Do you confirm the attachment of the " + nbcoche + " selected providers to the care network: " + nomReseau + " ?"; + + confirm_ebene(conf_fr, conf_en).then((isConfirmed) => { + if (isConfirmed) { + + // 4. Loader de traitement Neutral Pro + const loader = ` +
+
+
+
+ ${(lang === 'en_US') ? 'Processing attachment...' : 'Rattachement en cours...'} +
+
+
`; + + $("#div_liste_prestataire").html(loader); + + $.ajax({ + url: racine + "Ajaxlisteprestataireparlot/rattacher/", + type: 'POST', + data: { codeReseau: $("#codeReseau").val() }, // On passe l'ID du réseau par sécurité + success: function(data) { + // Optionnel : Notification de succès + const s_msg = (lang === 'en_US') ? "Attachment completed successfully!" : "Rattachement effectué avec succès !"; + // toast_ebene(s_msg); // Si vous avez un système de toast + }, + error: function(xhr) { + console.error("Erreur Rattachement INTER-SANTE:", xhr.statusText); + alert_ebene("Erreur technique lors du rattachement.", "Technical error during attachment."); + }, + complete: function() { + // 5. Rafraîchissement de la liste (pour vider les déjà rattachés) + afficher_lite_prestataire_lot(); + } + }); + } + }); } function modifier_college_type(idTable) @@ -49602,29 +49658,31 @@ function retour_colleges_types() } -function nouveaucollegetype(){ - donnees = ''; - $.ajax({ - url: $("#racineWeb").val()+"Ajaxnouveaucollegetype/", - type : 'post', - data: donnees, - error: function(errorData){ - alert("Erreur : "+errorData); - }, - success: function(data) { - //alert("Success : "+data); - $('#div_nouveaucollegetype').html(data); - $('#div_nouveaucollegetype').modal("show"); - $('#div_nouveaucollegetype').on('shown.bs.modal', function(){ - stylechampsRequis(); - $('#codeCollegeType').focus(); - }); - }, - complete: function() { - - } - }); -} +function nouveaucollegetype() { + let racineWeb = $("#racineWeb").val(); + + $.ajax({ + url: racineWeb + "Ajaxnouveaucollegetype/", + type: 'post', + data: {}, + beforeSend: function() { + // Optionnel : afficher un loader global ou désactiver le bouton appelant + }, + success: function(data) { + let $modal = $('#div_nouveaucollegetype'); + $modal.html(data); + $modal.modal("show"); + + $modal.on('shown.bs.modal', function() { + // Focus sur le premier champ pour une saisie immédiate + $('#libelle').focus(); + }); + }, + error: function(xhr) { + alert_ebene("Erreur lors de l'ouverture du formulaire", "Error opening the form"); + } + }); +} function ajoutercollegetype(){ @@ -52323,19 +52381,6 @@ function dupliquerstatut(codeLienParente){ }); } - -function libelleTerritoireBareme(codeTerritoire,controle){ - - var libelle = $('#libelle').val(); - - if(codeTerritoire=='ME'){ - $('#libelle').val(libelle+' SANS LIMITE TERRITOIRIALE'); - }else{ - $('#libelle').val(libelle+' LIMITE A '+controle.options[controle.selectedIndex].text); - - } - -} var garant = '', produit = '', taux = '', @@ -52354,33 +52399,6 @@ function libelleGarantBareme(controle){ //libelleBareme(); } -function libelleProduitBareme(controle){ - tab["produit"] = controle.options[controle.selectedIndex].text; - libelleBareme(); -} - -function libelleTauxBareme(controle){ - tab["taux"] = controle.options[controle.selectedIndex].text; - libelleBareme(); -} - -function libelleTerritoireBareme(codeTerritoire){ - - tab["territoire"] = codeTerritoire; - libelleBareme(); - -} - -function libelleClientBareme(controle){ - tab["client"] = controle.options[controle.selectedIndex].text; - libelleBareme(); -} - -function libelleBareme(){ - - $('#libelle').val(tab["libelle"]+' '+tab["client"]+' '+tab["taux"]+' '+tab["territoire"]+' - '+tab["produit"]); - -} function afficheLibelleCollege(controle,nomClient) { @@ -52391,10 +52409,6 @@ function afficheLibelleCollege(controle,nomClient) $('#libelleCollege').val(controle.options[controle.selectedIndex].text+' '+nomClient+' - '+taux+'%'); } - - - - function creer_bareme() { var libelle = $('#libelle').val(); @@ -52678,8 +52692,6 @@ function retirer_une_garantiebareme(codeGarantie) } function afficher_actes_garantiebareme(idBaremePriseEnCharge, codeGarantie){ - - donnees = 'codeGarantie='+codeGarantie; donnees += '&idBaremePriseEnCharge='+idBaremePriseEnCharge; @@ -52754,66 +52766,6 @@ function filtreproduit(){ } } -function filtreproduitcreerbareme(){ - - var codeGcAssureur = $('#codeGcAssureur').val(); - - donnees = 'codeGcAssureur='+codeGcAssureur; - - if(codeGcAssureur !=""){ - $.ajax({ - url: $("#racineWeb").val()+"Ajaxfiltreproduit/creerbareme/", - type : 'post', - data: donnees, - error: function(errorData){ - //alert("Erreur : "+errorData); - }, - success: function(data) { - //alert("Success : "+data); - $('#div_produit').html(data); - $("#codeProduit").selectpicker(); - - }, - complete: function() { - - } - }); - - - } -} - -function filtresouscripteur(){ - - var codeGcAssureur = $('#codeGcAssureur').val(); - - donnees = 'codeGcAssureur='+codeGcAssureur; - - //alert(donnees); - //return; - - $.ajax({ - url: $("#racineWeb").val()+"Ajaxfiltresouscripteur/", - type : 'post', - data: donnees, - error: function(errorData){ - //alert("Erreur : "+errorData); - }, - success: function(data) { - //alert("Success : "+data); - $('#div_souscripteur').html(data); - - $("#numeroClient").val(""); - - }, - complete: function() { - - } - }); - - - -} function filtretabproduit(){ @@ -61061,38 +61013,56 @@ function filtrecollegepolice() } function filtreproduitgarant(){ - // - - var codeGcAssureur = $('#codeGcAssureur').val(); - - var codeGcAssureur = $('#codeGcAssureur').val(); - - - donnees = 'codeGcAssureur='+codeGcAssureur; - - if(codeGcAssureur !=""){ - $.ajax({ - url: $("#racineWeb").val()+"Ajaxfiltreproduitgarant/", - type : 'post', - data: donnees, - error: function(errorData){ - //alert("Erreur : "+errorData); - }, - success: function(data) { - //alert("Success : "+data); - // - $('#div_produit').html(data); - $("#codeProduit").selectpicker(); - }, - complete: function() { - - } - }); - - - } + + var codeGcAssureur = $('#codeGcAssureur').val(); + + + + donnees = 'codeGcAssureur='+codeGcAssureur; + + + + if(codeGcAssureur !=""){ + + $.ajax({ + + url: $("#racineWeb").val()+"Ajaxfiltreproduitgarant/", + + type : 'post', + + data: donnees, + + error: function(errorData){ + + //alert("Erreur : "+errorData); + + }, + + success: function(data) { + + //alert("Success : "+data); + + // + + $('#div_produit').html(data); + + $("#codeProduit").selectpicker(); + + }, + + complete: function() { + + + + } + + }); + + } + } + function afficher_adherent_bascule() { codeGcAssureur = $('#codeGcAssureur').val(); @@ -62046,41 +62016,50 @@ function detail_baremepriseencharge(idBaremePriseEnCharge) } // 20-02-2022 -function afficherMasquerGarantiesBareme() -{ - - masquerGarantie = $("#masquerGarantie").val(); +/** + * Gère l'affichage de la Section 1 : Standard de la Famille + */ +function afficherMasquerGarantiesBareme() { + debugger; + // 1. Récupérer l'état actuel + var masquerGarantie = $("#masquerGarantie").val(); + if (masquerGarantie == undefined) { masquerGarantie = "1"; } - - if(masquerGarantie == undefined){ - masquerGarantie = "1"; - } - - if(masquerGarantie=="1"){ - $('#div_garanties_masquer').hide(); - $("#masquerGarantie").val("0"); - $("#span_garantie").text("[+]"); - - }else{ - $('#div_garanties_masquer').show(); - $("#masquerGarantie").val("1"); - - intit_saisie_garantiebareme(); - actualiser_bareme_garantie(); - $("#span_garantie").text("[-]"); - - $("#masquerGarantieLienParente").val("1"); - $("#masquerActe").val("1"); - $("#masquerActeLienParente").val("1"); - - afficherMasquerGarantiesBaremeLienParente(); - afficherMasquerActeBareme(); - afficherMasquerActeBaremeLienParente(); - } - - afficheNombreLigneBareme('garantiesbaremepriseencharge'); - - + // 2. Cibler les éléments + var divMasquer = $('#div_garanties_masquer'); + var icone = $("#span_bareme"); + + if (masquerGarantie == "1") { + // --- ACTION : FERMER --- + divMasquer.hide(); + $("#masquerGarantie").val("0"); + + // On remet le chevron vers le BAS (Fermé) + icone.attr('class', 'fas fa-chevron-down text-muted'); + + } else { + // --- ACTION : OUVRIR --- + divMasquer.show(); + $("#masquerGarantie").val("1"); + + intit_saisie_garantiebareme(); + actualiser_bareme_garantie(); + + // On met le chevron vers le HAUT (Ouvert) + icone.attr('class', 'fas fa-chevron-up text-primary'); + + // --- ACCORDÉON : FERMER LES AUTRES --- + $("#masquerGarantieLienParente").val("1"); + $("#masquerActe").val("1"); + $("#masquerActeLienParente").val("1"); + + afficherMasquerGarantiesBaremeLienParente(); + afficherMasquerActeBareme(); + afficherMasquerActeBaremeLienParente(); + } + + // 3. Update compteur + afficheNombreLigneBareme('garantiesbaremepriseencharge'); } @@ -63670,13 +63649,15 @@ function afficherDetailBareme() if(masquerBareme=="1"){ $('#div_bareme').hide(); $("#masquerBareme").val("0"); - $("#span_bareme").text("[+]"); + //$("#span_bareme").text("[+]"); + document.getElementById("span_bareme").className = "fa fa-chevron-down ms-2"; }else{ $('#div_bareme').show(); $("#masquerBareme").val("1"); //$("#dateEffetGarantie").focus(); - $("#span_bareme").text("[-]"); + //$("#span_bareme").text("[-]"); + document.getElementById("span_bareme").className = "fa fa-chevron-up ms-2"; init_saisie_detailbareme(); actualiser_detailbareme(); @@ -63686,10 +63667,13 @@ function afficherDetailBareme() } -function init_saisie_detailbareme() -{ - $("#dateEffetBareme").val(""); - $("#actif").val(""); +/** + * Réinitialisation du formulaire après insertion + */ +function init_saisie_detailbareme() { + $("#dateEffetBareme").val(""); + //$("#actif").val(""); + // On ne vide pas le TM car l'utilisateur peut vouloir le réutiliser pour une autre date } function controleDateEffetBareme(){ @@ -63733,32 +63717,23 @@ function controleDateEffetBareme(){ } -function actualiser_detailbareme() -{ - idBaremePriseEnCharge = $("#idBaremePriseEnCharge").val(); - - donnees = 'idBaremePriseEnCharge='+idBaremePriseEnCharge; - - $.ajax({ - url: $("#racineWeb").val()+"Ajaxinsererdetailbareme/", - type : 'post', - data: donnees, - error: function(errorData){ - //alert("Erreur : "+errorData); - }, - success: function(data) { - //alert("Success : "+data); - $('#div_bareme').html(data); - - - }, - complete: function() { - - } - }); - +/** + * Rafraîchissement de la zone d'historique des taux + */ +function actualiser_detailbareme() { + const idBareme = $("#idBaremePriseEnCharge").val(); + + $.ajax({ + url: $("#racineWeb").val() + "Ajaxinsererdetailbareme/", + type: 'post', + data: { idBaremePriseEnCharge: idBareme }, + success: function(data) { + $('#div_bareme').html(data); + } + }); } + function supprimer_detailbareme(adminProd, idDetail) { @@ -63799,59 +63774,74 @@ function supprimer_detailbareme(adminProd, idDetail) } // inserer_bareme() -function inserer_bareme() -{ - idBaremePriseEnCharge = $("#idBaremePriseEnCharge").val(); - dateEffetBareme = $("#dateEffetBareme").val(); - ticketModerateurBareme = $("#ticketModerateurBareme").val(); - //actif = $("#actif").val(); - - if(dateEffetBareme <= " "){ - - v_msg="Veuillez entrer une date d'effet!"; - v_msgEng="Please enter an effective date!"; - alert_ebene(v_msg, v_msgEng); +/** + * Déploiement du Ticket Modérateur Global sur l'ensemble du barème + */ +function inserer_bareme() { + const idBareme = $("#idBaremePriseEnCharge").val(); + const dateEffet = $("#dateEffetBareme").val(); + const tm = $("#ticketModerateurBareme").val(); + const lang = $("#codeLangue").val(); - $("#dateEffetBareme").focus(); - return; - - } - - if(ticketModerateurBareme <= " "){ - - v_msg="Veuillez entrer un ticket modérateur!"; - v_msgEng="Please enter a co-payment!"; - alert_ebene(v_msg, v_msgEng); + // 1. Validations de saisie + if (!dateEffet || dateEffet.trim() === "") { + alert_ebene("Veuillez entrer une date d'effet !", "Please enter an effective date!"); + $("#dateEffetBareme").focus(); + return; + } - $("#ticketModerateurBareme").focus(); - return; - - } - - $("#div_bareme").html('
' + '
'); - - donnees = 'idBaremePriseEnCharge='+idBaremePriseEnCharge; - donnees += '&dateEffetBareme='+dateEffetBareme; - donnees += '&ticketModerateurBareme='+ticketModerateurBareme; - - $.ajax({ - url: $("#racineWeb").val()+"Ajaxinsererdetailbareme/ajouter/", - type : 'post', - data: donnees, - error: function(errorData){ - //alert("Erreur : "+errorData); - }, - success: function(data) { - //alert("Success : "+data); - init_saisie_detailbareme(); - actualiser_detailbareme(); - }, - complete: function() { - afficheNombreLigneBareme('detailbareme'); - $("#masquerBareme").val("0"); - afficherDetailBareme(); - } - }); + if (!tm || tm.trim() === "") { + alert_ebene("Veuillez entrer un ticket modérateur !", "Please enter a co-payment!"); + $("#ticketModerateurBareme").focus(); + return; + } + + // 2. Confirmation Critique (Standard Neutral Pro) + const c_msg = `Attention : Vous allez appliquer un taux de ${tm}% à TOUS les actes de ce barème avec effet au ${dateEffet}. Confirmez-vous ce déploiement global ?`; + const c_msgEng = `Warning: You are about to apply a ${tm}% rate to ALL acts in this scale effective ${dateEffet}. Do you confirm this global deployment?`; + + confirm_ebene(c_msg, c_msgEng).then((isConfirmed) => { + if (isConfirmed) { + // Affichage du loader dans la zone d'historique + $("#div_bareme").html(` +
+
+
+
+ ${(lang === 'en_US') ? 'Deploying rates...' : 'Déploiement des taux...'} +
+
+
`); + + const donnees = { + idBaremePriseEnCharge: idBareme, + dateEffetBareme: dateEffet, + ticketModerateurBareme: tm + }; + + $.ajax({ + url: $("#racineWeb").val() + "Ajaxinsererdetailbareme/ajouter/", + type: 'post', + data: donnees, + success: function(data) { + init_saisie_detailbareme(); + actualiser_detailbareme(); + // On informe l'utilisateur que tout est à jour + alert_ebene("Le barème a été mis à jour avec succès !", "The scale has been successfully updated!"); + }, + complete: function() { + // Mise à jour du badge compteur "Lignes globales" + if (typeof afficheNombreLigneBareme === 'function') { + afficheNombreLigneBareme('detailbareme'); + } + $("#masquerBareme").val("0"); + // On force l'affichage de l'historique pour montrer la nouvelle ligne + $("#div_bareme").show(); + $("#span_bareme").removeClass('fa-chevron-down').addClass('fa-chevron-up'); + } + }); + } + }); } //15-05-2023 @@ -74635,33 +74625,30 @@ function exporter_liste_reactivationlogin() }); } -function ajax_saisir_pass_new_user() -{ - codeModeGenerationPass = $("#codeModeGenerationPass").val(); +function ajax_saisir_pass_new_user() { + var codeModeGenerationPass = $("#codeModeGenerationPass").val(); + var racineWeb = $("#racineWeb").val(); + + // On vide et on met un mini loader interne + $("#div_passwd").html('
'); - donnees = 'codeModeGenerationPass='+codeModeGenerationPass; - - $.ajax({ - url: $("#racineWeb").val()+"Ajaxsaisirpassnewuser/", - type: 'POST', - data: donnees, - success: function(data) { - $("#div_passwd").html(data); - }, - error: function(data) { - }, - complete: function() - { - if(codeModeGenerationPass=="0") - { - $("#nvmdp").focus(); - } - else - { - $("#btn_enreg").focus(); - } - } - }); + $.ajax({ + url: racineWeb + "Ajaxsaisirpassnewuser/", + type: 'POST', + data: { codeModeGenerationPass: codeModeGenerationPass }, + success: function(data) { + // Effet d'apparition fluide + $("#div_passwd").hide().html(data).fadeIn(); + }, + complete: function() { + if (codeModeGenerationPass == "0") { + $("#nvmdp").focus(); + } else { + // Focus sur le bouton enregistrer qui est en bas (mode création) + $("#btn_enreg").focus(); + } + } + }); } function verifMailValeur(v_mail) @@ -75216,42 +75203,33 @@ function recherchecodesociete() } -function filtreproduitreseau(){ - - - var codeGcAssureur = $('#codeGcAssureur').val(); - - if(codeGcAssureur<=" "){ - $('#div_produitreseau').html(""); - } - - donnees = 'codeGcAssureur='+codeGcAssureur; - - $.ajax({ - url: $("#racineWeb").val()+"Ajaxfiltreproduitreseau/", - type : 'post', - data: donnees, - error: function(errorData){ - //alert("Erreur : "+errorData); - }, - success: function(data) { - //alert("Success : "+data); - // - $('#div_produit').html(data); - - $("#codeProduit").selectpicker(); - }, - complete: function() { - - } - }); - +/** + * Filtre les produits selon le garant choisi + */ +function filtreproduitreseau() { + const codeGcAssureur = $('#codeGcAssureur').val(); + + if (!codeGcAssureur || codeGcAssureur.trim() === "") { + $('#div_produitreseau').html(""); + return; + } + + $.ajax({ + url: $("#racineWeb").val() + "Ajaxfiltreproduitreseau/", + type: 'post', + data: { codeGcAssureur: codeGcAssureur }, + success: function(data) { + // Mise à jour du div contenant le select des produits + $('#div_produit').html(data); + + // Réinitialisation propre du SelectPicker Neutral Pro + actualiserSelectPicker('#codeProduit', true); + } + }); } function filtrefamilleactetype() { - - donnees = "codeTypePrestation="+$("#codeTypePrestation").val(); $.ajax({ @@ -75338,22 +75316,41 @@ function valider_tarif_lettrecle() } -function ajouter_une_expression_complexite_pass(idExpression, actif) -{ - donnees = 'idExpression='+idExpression+'&actif='+actif; - - $.ajax({ - url: $("#racineWeb").val()+"Paramreinitmotpass/majcomplexitepassword/", - type: 'POST', - data: donnees, - success: function(data) { - $("#div_complexite_pass").html(data); - }, - error: function(data) { - }, - complete: function() { - } - }); +function ajouter_une_expression_complexite_pass(idExpression, actif) { + const racineWeb = $("#racineWeb").val(); + const $divCible = $("#div_complexite_pass"); + const codeLangue = $("#codeLangue").val(); + + // 1. Préparation des données (Format Objet) + const donnees = { + idExpression: idExpression, + actif: actif + }; + + // 2. Feedback visuel (Opacité pendant le chargement) + $divCible.css('opacity', '0.6'); + + $.ajax({ + url: racineWeb + "Paramreinitmotpass/majcomplexitepassword/", + type: 'POST', + data: donnees, + success: function(data) { + // Mise à jour du contenu HTML (Dual List) + $divCible.html(data); + + // Notification Toastr discrète + let v_msg = (codeLangue === "en_US") ? "Security policy updated" : "Politique de sécurité mise à jour"; + toastr.success(v_msg); + }, + error: function() { + let v_err = (codeLangue === "en_US") ? "Update failed" : "Échec de la mise à jour"; + toastr.error(v_err); + }, + complete: function() { + // Rétablir l'opacité + $divCible.css('opacity', '1'); + } + }); } @@ -78209,157 +78206,110 @@ function supprimer_detailbareme_college_temp(adminProd, idDetail) } -function modecalculeprime() -{ - codeModecalculPrime = $("#codeModecalculPrime").val(); - codeGcAssureur = $("#codeGcAssureur").val(); - - codeEnteteTrancheAge = $("#codeEnteteTrancheAge").val(); - - plafondAdherent = $("#plafondAdherent").val(); - - codeProduit = $("#codeProduit").val(); - - - if(codeGcAssureur =="AUC"){ - v_msg="Veuillez indiquer le code garant!"; - v_msgEng="Please indicate the guarantor code!"; - alert_ebene(v_msg, v_msgEng); +function modecalculeprime() { + let codeModecalculPrime = $("#codeModecalculPrime").val(); + let codeGcAssureur = $("#codeGcAssureur").val(); + let codeProduit = $("#codeProduit").val() || ''; + let racineWeb = $("#racineWeb").val(); - $("#codeGcAssureur").focus(); - $("#codeModecalculPrime").val(""); - return; - - } - - /* Ne pas rendre le plafond adhérent obligatoire - if(plafondAdherent=="0" || plafondAdherent<=" "){ - v_msg="Veuillez indiquer le montant du plafond de famille!"; - v_msgEng="Please indicate the amount of the family limit!"; - alert_ebene(v_msg, v_msgEng); + // Validation du Garant + if (codeGcAssureur == "AUC") { + alert_ebene("Veuillez indiquer le code garant!", "Please indicate the guarantor code!"); + $("#codeGcAssureur").focus(); + $("#codeModecalculPrime").val(""); + return; + } - $("#plafondAdherent").focus(); - $("#codeModecalculPrime").val(""); - return; - } - */ - - if(codeProduit==undefined){ - codeProduit = ''; - } - - if(codeModecalculPrime<=" ") - { - v_msg="Veuillez indiquer le mode de calcul de prime!"; - v_msgEng="Please indicate how the premium is calculated!"; - alert_ebene(v_msg, v_msgEng); + // Nettoyage des zones + $("#div_typetrancheage, #div_prime_lienparente").empty(); - $("#codeModecalculPrime").focus(); - - $("#div_typetrancheage").empty(); - $("#div_prime_lienparente").empty(); - - return; - }else if(codeModecalculPrime=="TA") - { - $("#div_prime_lienparente").empty(); - $("#div_typetrancheage").empty(); - $("#div_typetrancheage").html('
' + '
'); - - donnees = "codeGcAssureur="+codeGcAssureur; - - $.ajax({ - url: $("#racineWeb").val()+"Ajaxprimelienparente/typetrancheage/", - type : 'post', - data: donnees, - error: function(errorData){ - //alert("Erreur : "+errorData); - }, + if (codeModecalculPrime <= " ") { + alert_ebene("Veuillez indiquer le mode de calcul!", "Please indicate the calculation mode!"); + $("#codeModecalculPrime").focus(); + return; + } + + // Définition du loader + const loader = ` +
+
+ Chargement de la configuration... +
`; + + if (codeModecalculPrime == "TA") { + $("#div_typetrancheage").html(loader); + $.ajax({ + url: racineWeb + "Ajaxprimelienparente/typetrancheage/", + type: 'post', + data: { codeGcAssureur: codeGcAssureur }, success: function(data) { - //alert("Success : "+data); - $("#div_typetrancheage").html(data); - $("#codeEnteteTrancheAge").selectpicker(); - - }, - complete: function() { - + // 1. On injecte les données + $("#div_typetrancheage").hide().html(data).fadeIn(); + + // 2. On cible précisément le select qui vient d'être chargé + let $select = $("#codeEnteteTrancheAge"); + + if ($select.length) { + // IMPORTANT : On détruit l'éventuelle instance précédente + // pour nettoyer le DOM des résidus du premier rendu + $select.selectpicker('destroy'); + + // On réinitialise proprement + $select.selectpicker({ + liveSearch: true, + style: 'btn-white border-2 shadow-none', + size: 5, + noneSelectedText: 'Sélectionnez une tranche...' + }); + } } - }); - - }else{ - $("#div_typetrancheage").empty(); - $("#div_prime_lienparente").empty(); - $("#div_prime_lienparente").html('
' + '
'); - - donnees = "codeGcAssureur="+codeGcAssureur+'&codeProduit='+codeProduit; - - $.ajax({ - url: $("#racineWeb").val()+"Ajaxprimelienparente/", - type : 'post', - data: donnees, - error: function(errorData){ - //alert("Erreur : "+errorData); - }, - success: function(data) { - //alert("Success : "+data); - $("#div_prime_lienparente").html(data); - - }, - complete: function() { - - } - }); - - } + }); + } else { + $("#div_prime_lienparente").html(loader); + $.ajax({ + url: racineWeb + "Ajaxprimelienparente/", + type: 'post', + data: { codeGcAssureur: codeGcAssureur, codeProduit: codeProduit }, + success: function(data) { + $("#div_prime_lienparente").hide().html(data).fadeIn(); + } + }); + } } -function trancheage() -{ - codeModecalculPrime = $("#codeModecalculPrime").val(); - codeGcAssureur = $("#codeGcAssureur").val(); - - codeProduit = $("#codeProduit").val(); - - codeEnteteTrancheAge = $("#codeEnteteTrancheAge").val(); - - if(codeProduit==undefined){ - codeProduit = ''; - } - - if (codeEnteteTrancheAge<=" " && codeModecalculPrime=="TA") - { - v_msg="Veuillez sélectionner un type de tranche âge!"; - v_msgEng="Please select an age group type!"; - alert_ebene(v_msg, v_msgEng); +function trancheage() { + let codeModecalculPrime = $("#codeModecalculPrime").val(); + let codeGcAssureur = $("#codeGcAssureur").val(); + let codeProduit = $("#codeProduit").val() || ''; + let codeEnteteTrancheAge = $("#codeEnteteTrancheAge").val(); + let racineWeb = $("#racineWeb").val(); - $("#codeEnteteTrancheAge").focus(); - - $("#div_trancheage").empty(); - - return; - } - - donnees = "codeGcAssureur="+codeGcAssureur+"&codeProduit="+codeProduit+"&codeEnteteTrancheAge="+codeEnteteTrancheAge; - //donnees +="&idProduit="+idProduit; - $("#div_trancheage").html('
' + '
'); - - $.ajax({ - url: $("#racineWeb").val()+"Ajaxprimelienparente/trancheage/", - type : 'post', - data: donnees, - error: function(errorData){ - //alert("Erreur : "+errorData); - }, - success: function(data) { - //alert("Success : "+data); - $("#div_trancheage").html(data); - - }, - complete: function() { - - } - }); - + if (codeEnteteTrancheAge <= " " && codeModecalculPrime == "TA") { + alert_ebene("Veuillez sélectionner une catégorie de tranche d'âge!", "Please select an age group category!"); + $("#codeEnteteTrancheAge").focus(); + $("#div_trancheage").empty(); + return; + } + + // Loader Standard + $("#div_trancheage").html( + '
' + + '
' + + 'Chargement de la grille...
' + ); + + $.ajax({ + url: racineWeb + "Ajaxprimelienparente/trancheage/", + type: 'post', + data: { + codeGcAssureur: codeGcAssureur, + codeProduit: codeProduit, + codeEnteteTrancheAge: codeEnteteTrancheAge + }, + success: function(data) { + $("#div_trancheage").hide().html(data).fadeIn(); + } + }); } function ajaxprimelienparente() @@ -79179,30 +79129,31 @@ function filtreentetetrancheange(){ } } -function afficher_trancheage() -{ - if(verifier_entete_trancheage()) - { - donnees = 'codeGcAssureur='+codeGcAssureur+'&codeEnteteTrancheAge='+codeEnteteTrancheAge; +function afficher_trancheage() { + if (verifier_entete_trancheage()) { + let racineWeb = $("#racineWeb").val(); + let donnees = 'codeGcAssureur=' + codeGcAssureur + '&codeEnteteTrancheAge=' + codeEnteteTrancheAge; + let div_attente = $('#div_trancheage'); - var div_attente = $('#div_trancheage'); - - div_attente.html('
' + '
'); + // Loader moderne + div_attente.html( + '
' + + '
' + + 'Chargement des tranches...
' + ); - $.ajax({ - url: $("#racineWeb").val()+"Ajaxtrancheage/affichertrancheage/", - type : 'post', - data: donnees, - error: function(errorData) { - }, - success: function(data) { - div_attente.html(data); - }, - complete: function() { - $("#ageMax").focus(); - } - }); - } + $.ajax({ + url: racineWeb + "Ajaxtrancheage/affichertrancheage/", + type: 'post', + data: donnees, + success: function(data) { + div_attente.hide().html(data).fadeIn(); + }, + complete: function() { + $("#ageMax").focus(); + } + }); + } } function supprimer_derniere_tranche_age(idTrancheage) @@ -85790,7 +85741,16 @@ function modifier_param_fact_garant(superUser) return; } - window.location.assign($("#racineWeb" ).val()+"Paramfacturegarant/"); + v_msg="Etes-vous sûr de vouloir modifier ces paramètres ?"; + v_msgEng="Are you sure you want to change these settings?"; + + confirm_ebene(v_msg, v_msgEng) + .then((isConfirmed) => { + if (isConfirmed) { + window.location.assign($("#racineWeb" ).val()+"Paramfacturegarant/"); + } + }); + } function consulter_param_fact_garant() @@ -86866,80 +86826,63 @@ function changer_entite_portail() }); } - -function filtreproduitbareme(){ - - - var codeGcAssureur = $('#codeGcAssureur').val(); - - if(codeGcAssureur<=" "){ - $('#div_bareme').html(""); - } - - donnees = 'codeGcAssureur='+codeGcAssureur; - - $.ajax({ - url: $("#racineWeb").val()+"Ajaxfiltreproduitbareme/", - type : 'post', - data: donnees, - error: function(errorData){ - //alert("Erreur : "+errorData); - }, - success: function(data) { - //alert("Success : "+data); - // - $('#div_produit').html(data); - - $("#codeProduit").selectpicker(); - }, - complete: function() { - - } - }); - +function filtreproduitbareme() { + const codeGcAssureur = $('#codeGcAssureur').val(); + + if (!codeGcAssureur || codeGcAssureur.trim() === "") { + $('#div_bareme').html(""); + return; + } + + $.ajax({ + url: $("#racineWeb").val() + "Ajaxfiltreproduitbareme/", + type: 'post', + data: { codeGcAssureur: codeGcAssureur }, + success: function(data) { + $('#div_produit').html(data); + if (typeof actualiserSelectPicker === 'function') { + actualiserSelectPicker('#codeProduit', false); // true pour donner le focus + } else { + // Fallback si la fonction n'est pas chargée + $('#codeProduit').selectpicker('refresh'); + } + } + }); } -function afficher_bareme_produit() -{ - - - codeGcAssureur = $("#codeGcAssureur").val(); - codeProduit = $("#codeProduit").val(); +function afficher_bareme_produit() { + const codeGcAssureur = $("#codeGcAssureur").val(); + const codeProduit = $("#codeProduit").val(); - if (codeProduit<=" ") - { - v_msg="Veuillez sélectionner un produit!"; - v_msgEng="Please select a category!"; - alert_ebene(v_msg, v_msgEng); - - $('#div_bareme').html(""); + if (!codeProduit || codeProduit.trim() === "") { + alert_ebene("Veuillez sélectionner un produit!", "Please select a product!"); + return; + } - return; - } + const loader = ` +
+
+
+
+ ${($("#codeLangue").val() === 'en_US') ? 'Fetching scales...' : 'Récupération des barèmes...'} +
+
+
`; + + $('#div_bareme').html(loader); - donnees = 'codeGcAssureur='+codeGcAssureur+'&codeProduit='+codeProduit; - - var div_attente = $('#div_bareme'); - - div_attente.html('
' + '
'); - - - $.ajax({ - url: $("#racineWeb").val()+"Ajaxbaremeproduit/", - type : 'post', - data: donnees, - error: function(errorData) { - }, - success: function(data) { - div_attente.html(data); - appliquerDataTable(); - - }, - complete: function() { - } - }); + $.ajax({ + url: $("#racineWeb").val() + "Ajaxbaremeproduit/", + type: 'post', + data: { codeGcAssureur: codeGcAssureur, codeProduit: codeProduit }, + success: function(data) { + $('#div_bareme').hide().html(data).fadeIn(400); + if (typeof appliquerDataTable === 'function') appliquerDataTable(); + } + }); } + function changer_langue_connexion() { codeLangue = $("#langue").val(); @@ -89020,6 +88963,39 @@ function maj_authentification_otp() } +// FONCTION OTP +function maj_authentification_otp() { + const activerOtp = $("#activerOtp").val(); + const racineWeb = $("#racineWeb").val(); + const codeLangue = $("#codeLangue").val(); + + if(activerOtp == "1"){ + v_msg="Etes-vous sur de vouloir activer la double authentification?"; + v_msgEng="Are you sure you want to enable two-factor authentication?"; + }else{ + v_msg="Etes-vous sur de vouloir désactiver la double authentification?"; + v_msgEng="Are you sure you want to disable two-factor authentication?"; + } + + confirm_ebene(v_msg, v_msgEng) + .then((isConfirmed) => { + if (isConfirmed) { + $.ajax({ + url: racineWeb + "Ajaxparametresgeneraux/majauthentification/", + type: 'POST', + data: { activerOtp: activerOtp }, + success: function() { + let msg = (codeLangue === "en_US") ? "OTP Security updated" : "Sécurité OTP mise à jour"; + toastr.success(msg); + }, + complete: function() { + window.location.assign($("#racineWeb" ).val()+"Paramreinitmotpass/"); + } + }); + } + }); +} + function modifier_param_filtrage_ip() @@ -89080,103 +89056,102 @@ function enregistrer_modif_param_filtreip() } -function tester_disponibiliter_whatsapp() -{ - p_destinataires = $("#destinataires").val(); - if (p_destinataires<=" ") - { - v_msg="Veuillez saisir un destinataire!"; - v_msgEng="Please enter a recipient!"; - alert_ebene(v_msg, v_msgEng); +function tester_disponibiliter_whatsapp() { + // 1. Initialisation des variables + const p_destinataires = $("#destinataires").val(); + const racineWeb = $("#racineWeb").val(); + const div_cible = $('#div_test_gabarit'); + const codeLangue = $("#codeLangue").val(); + + // On force waapi par défaut selon votre logique actuelle, + // mais prêt pour une sélection dynamique si besoin. + const fournisseurWhatsApp = 'waapi'; - $("#destinataires").focus(); - return; - } + // 2. Validation du destinataire + if (!p_destinataires || p_destinataires.trim() === "") { + alert_ebene("Veuillez saisir un destinataire!", "Please enter a recipient!"); + $("#destinataires").focus(); + return; + } - p_message = ""; - - p_message = "TESTS WHATSAPP INTER-SANTE"; - - // ajout KANE du 18/02/2025 + // 3. Validation et mapping du message fournisseur + let p_message = ""; + const providers = { + 'waapi': 'Fournisseur WhatsApp : waapi', + 'ultramsg': 'Fournisseur WhatsApp : ultramsg' + }; - // fournisseurWhatsApp = $("#fournisseurWhatsApp").val(); - fournisseurWhatsApp = 'waapi'; - - if (fournisseurWhatsApp<=" ") - { - v_msg="Fournisseur de WhatsApp non défini!"; - v_msgEng="WhatsApp provider not defined!"; - alert_ebene(v_msg, v_msgEng); - return; - } + if (providers[fournisseurWhatsApp]) { + p_message = providers[fournisseurWhatsApp]; + } else { + alert_ebene( + fournisseurWhatsApp + " => Fournisseur de WhatsApp inconnu!", + fournisseurWhatsApp + " => Unknown WhatsApp Provider!" + ); + return; + } - if(fournisseurWhatsApp=="waapi") - { - p_message = "Fournisseur WhatsApp : waapi "; - } - else - if(fournisseurWhatsApp=="ultramsg") - { - p_message = "Fournisseur WhatsApp : ultramsg "; - } - else - { - v_msg=fournisseurWhatsApp+" => Fournisseur de WhatsApp inconnu!"; - v_msgEng=fournisseurWhatsApp+" => Unknown WhatsApp Provider!"; - alert_ebene(v_msg, v_msgEng); - return; - } - - donnees = "destinataires="+p_destinataires+"&message="+p_message+"&fournisseurWhatsApp="+fournisseurWhatsApp; + // 4. Préparation des données (Format Objet) + const donnees = { + destinataires: p_destinataires, + message: p_message, + fournisseurWhatsApp: fournisseurWhatsApp + }; - $("#div_test_gabarit").html('
' + '
'); - - $.ajax({ - url: $("#racineWeb").val()+"Ajaxtesterdisponiblitesms/envoyerlewhatsapp/", - type: 'POST', - data: donnees, - success: function(data) - { - // alert("success "+data); - $('#div_test_gabarit').html(data); - }, - error: function(errdata) - { - // alert("Error : "+errdata); - $('#div_test_gabarit').html(errdata); - }, - complete: function() - { - } - }); + // 5. Affichage du loader stylisé + div_cible.html(` +
+
+

+ ${(codeLangue === "en_US") ? "Sending WhatsApp message..." : "Envoi du message WhatsApp..."} +

+
+ `); + + // 6. Requête AJAX + $.ajax({ + url: racineWeb + "Ajaxtesterdisponiblitesms/envoyerlewhatsapp/", + type: 'POST', + data: donnees, + success: function(data) { + toastr.success((codeLangue === "en_US") ? "WhatsApp API called" : "API WhatsApp appelée"); + div_cible.html(data); + }, + error: function(xhr) { + toastr.error((codeLangue === "en_US") ? "Connection error" : "Erreur de connexion"); + div_cible.html(`
Error: ${xhr.statusText}
`); + } + }); } -function parametre_produit() -{ - var codeProduit = $('#codeProduit').val(); - - if(codeProduit<=" "){ - $('#div_parametres').html(""); - } - - donnees = 'codeProduit='+codeProduit; - - $("#div_parametres").html('
' + '
'); +function parametre_produit() { + var codeProduit = $('#codeProduit').val(); + var racineWeb = $("#racineWeb").val(); + + if (codeProduit <= " ") { + $('#div_parametres').html('

Veuillez sélectionner un produit.

'); + return; + } - $.ajax({ - url: $("#racineWeb").val()+"Ajaxparametreproduitgarant/", - type : 'post', - data: donnees, - error: function(errorData){ - //alert("Erreur : "+errorData); - }, - success: function(data) { - $('#div_parametres').html(data); - }, - complete: function() { - } - }); + // Loader Standard + $("#div_parametres").html( + '
' + + '
' + + 'Chargement...
' + ); + + $.ajax({ + url: racineWeb + "Ajaxparametreproduitgarant/", + type: 'post', + data: { codeProduit: codeProduit }, + success: function(data) { + $('#div_parametres').hide().html(data).fadeIn(); + }, + error: function() { + $('#div_parametres').html('
Erreur lors du chargement des paramètres.
'); + } + }); } function retour_param_fact_garant() @@ -92074,24 +92049,32 @@ function enregistrer_modif_parametres_med() } -function initSmartTable(selector = '.datatable-inter', pageTitle = 'Export Données') { +/** + * Initialise DataTables avec options d'export et de tri + * @param {string} selector - Sélecteur CSS de la table + * @param {string} pageTitle - Titre pour les exports PDF/Excel + * @param {boolean|array} defaultOrder - Exemple: [1, 'desc'] ou false pour garder l'ordre serveur + */ +function initSmartTable(selector = '.datatable-inter', pageTitle = 'Export Données', defaultOrder = false) { if ($(selector).length === 0) return; - // Détection automatique : la barre de recherche personnalisée existe-t-elle ? var hasGlobalSearch = $('#globalSearch').length > 0; if ($.fn.DataTable.isDataTable(selector)) { $(selector).DataTable().destroy(); } - // Configuration du DOM : - // Si hasGlobalSearch est vrai, on retire 'f' (recherche native) var domStructure = hasGlobalSearch ? '<"d-flex align-items-center justify-content-start p-3 border-bottom"B>t<"d-flex justify-content-between align-items-center p-3 bg-light"ip>' : '<"d-flex align-items-center justify-content-between p-3 border-bottom"Bf>t<"d-flex justify-content-between align-items-center p-3 bg-light"ip>'; + // Détermination de l'option "order" : + // Si defaultOrder est explicitement false, on passe un tableau vide pour désactiver le tri auto + var orderConfig = (defaultOrder === false) ? [] : defaultOrder; + var table = $(selector).DataTable({ "dom": domStructure, + "order": orderConfig, // <--- AJOUT ICI "buttons": [ { extend: 'excelHtml5', @@ -92115,7 +92098,6 @@ function initSmartTable(selector = '.datatable-inter', pageTitle = 'Export Donn "pageLength": 10, "autoWidth": false, "drawCallback": function() { - // Style uniquement si la recherche native est affichée if (!hasGlobalSearch) { $('.dataTables_filter input').addClass('form-control form-control-sm d-inline-block ms-2 rounded-pill border-2 shadow-none').css('width', '200px'); } @@ -92123,7 +92105,6 @@ function initSmartTable(selector = '.datatable-inter', pageTitle = 'Export Donn } }); - // LIAISON AUTOMATIQUE : Si globalSearch existe, on branche l'événement tout de suite if (hasGlobalSearch) { $('#globalSearch').off('keyup').on('keyup', function() { table.search(this.value).draw(); @@ -92131,4 +92112,373 @@ function initSmartTable(selector = '.datatable-inter', pageTitle = 'Export Donn } return table; +} + + +function loadMessageSection(section) { + let url = ""; + let target = "#content-" + section; + let donnees = ""; + + // Détermination de l'ID du tableau et du titre pour l'export + let tableId = (section === 'Motifs') ? '#tableMotifs' : '#tableTextes'; + let pageTitle = (section === 'Motifs') ? 'Liste des Motifs de Dépassement' : 'Liste des Textes de Facturation'; + + if (section === 'Motifs') url = $("#racineWeb").val() + "Ajaxmotifdepassement/"; + if (section === 'Facturation') url = $("#racineWeb").val() + "Ajaxtextefacturationgarant/"; + + // Si déjà chargé, on ajuste simplement les colonnes pour le rendu visuel + if ($(target).find('table').length > 0) { + if ($.fn.DataTable.isDataTable(tableId)) { + $(tableId).DataTable().columns.adjust(); + } + return; + } + + $.ajax({ + url: url, + type: 'post', + data: donnees, + success: function(data) { + // 1. Injection du contenu HTML + $(target).html(data); + + // 2. Initialisation forcée avec un léger délai pour laisser le DOM respirer + setTimeout(function() { + initSmartTable(tableId, pageTitle, false); + }, 150); + }, + error: function() { + $(target).html('
Erreur de chargement
'); + } + }); +} + +/** + * Initialise, rafraîchit et ouvre le SelectPicker + * @param {string} selector - Le sélecteur du select + * @param {boolean} donnerFocus - Si true, donne le focus et ouvre le menu + */ +function actualiserSelectPicker(selector, donnerFocus = false) { + $(selector).each(function() { + const $el = $(this); + const lang = $("#codeLangue").val(); + const txtDefault = (lang === 'en_US') ? "-- Select --" : "-- Sélectionner --"; + + // 1. Nettoyage anti-doublon (Destruction complète) + if ($el.data('selectpicker')) { + $el.selectpicker('destroy'); + } + $el.siblings('.bootstrap-select').remove(); + $el.removeAttr('title').prop('title', ''); + + // 2. Initialisation Neutral Pro + $el.selectpicker({ + liveSearch: true, + container: 'body', + style: 'btn-white border-2 border-start-0 fw-bold', + width: '100%', + size: 8, + noneSelectedText: txtDefault, + noneResultsText: (lang === 'en_US') ? "No results" : "Aucun résultat", + liveSearchPlaceholder: (lang === 'en_US') ? "Search..." : "Rechercher..." + }); + + // 3. Focus et Ouverture automatique + if (donnerFocus) { + setTimeout(() => { + // Donne le focus au composant + $el.selectpicker('focus'); + // Ouvre le menu déroulant immédiatement + $el.selectpicker('toggle'); + }, 150); // Délai légèrement augmenté pour garantir l'ouverture + } + }); +} + +function changerAnneeFiltre(valeur) { + // 1. On peut forcer le stockage en session via un petit appel rapide si nécessaire + // ou simplement s'assurer que afficheDonneesTableChoisie utilise bien cette valeur. + console.log("Filtrage pour l'année : " + valeur); + + // Appel de votre fonction moteur + // Astuce : vérifiez que dans votre contrôleur PHP, vous récupérez bien $_POST['annee'] + afficheDonneesTableChoisie('Ajaxtblisterjoursferiers'); +} + +/** + * Initialise une DataTable standard pour les tables de référence + * @param {string} selector - L'ID ou la classe de la table (ex: '#tableLister') + * @param {string} exportTitle - Le nom du fichier lors de l'export + * @param {boolean|array} defaultOrder - Exemple: [1, 'desc'] ou false pour garder l'ordre serveur + */ +function initDataTableReference(selector, exportTitle = 'Export_Donnees', defaultOrder = false) { + const codeLangue = $("#codeLangue").val(); + + // Objet de traduction interne + const langConfig = (codeLangue === "en_US") ? { + search: "Search:", + lengthMenu: "Show _MENU_ entries", + info: "Showing _START_ to _END_ of _TOTAL_ entries", + infoEmpty: "Showing 0 to 0 of 0 entries", + infoFiltered: "(filtered from _MAX_ total entries)", + zeroRecords: "No matching records found", + paginate: { next: "Next", previous: "Previous" } + } : { + search: "Recherche :", + lengthMenu: "Afficher _MENU_ lignes", + info: "Affichage de _START_ à _END_ sur _TOTAL_ lignes", + infoEmpty: "Affichage de 0 à 0 sur 0 ligne", + infoFiltered: "(filtré de _MAX_ lignes au total)", + zeroRecords: "Aucune donnée trouvée", + paginate: { next: "Suivant", previous: "Précédent" } + }; + + if ($.fn.DataTable.isDataTable(selector)) { + $(selector).DataTable().destroy(); + } + + // Gestion du tri par défaut (false = pas de tri forcé) + const orderConfig = (defaultOrder === false) ? [] : defaultOrder; + + const table = $(selector).DataTable({ + dom: 'frtip', + responsive: true, + pageLength: 10, + order: orderConfig, // <-- Application de la configuration de tri + language: langConfig, + buttons: [ + { + extend: 'excelHtml5', + text: ' Excel', + className: 'btn btn-sm btn-success-light border-success fw-bold text-success rounded-pill shadow-xs', + title: exportTitle, + exportOptions: { columns: ':not(:last-child)' } + }, + { + extend: 'pdfHtml5', + text: ' PDF', + className: 'btn btn-sm btn-danger-light border-danger fw-bold text-danger rounded-pill shadow-xs', + title: exportTitle, + exportOptions: { columns: ':not(:last-child)' }, + customize: function (doc) { + doc.styles.tableHeader.fillColor = '#212e53'; + doc.styles.tableHeader.color = 'white'; + doc.content[1].table.widths = Array(doc.content[1].table.body[0].length + 1).join('*').split(''); + } + } + ], + drawCallback: function() { + const info = this.api().page.info(); + const label = (codeLangue === "en_US") ? " Lines" : " Lignes"; + $("#badge-total").text(info.recordsTotal + label); + } + }); + + table.buttons().container().appendTo('#table-buttons'); + return table; +} + +function ajouter_utilisateur_gc() +{ + window.location.assign($("#racineWeb" ).val()+"Creerusergc/"); +} + +function nouveau_produit() +{ + window.location.assign($("#racineWeb" ).val()+"Nouveauproduit/"); +} + +function actualiser_garantie_produit() { + // 1. Définition des constantes et cibles + const codeGcAssureur = $("#codeGcAssureur").val(); + const codeProduit = $("#codeProduit").val(); + const div_cible = $('#div_garantieproduit'); + const racineWeb = $("#racineWeb").val(); + const codeLangue = $("#codeLangue").val(); + + // 2. Validation du Garant via alert_ebene + if (!codeGcAssureur || codeGcAssureur.trim() === "") { + let v_msg = "Garant manquant ! Veuillez sélectionner un garant pour continuer."; + let v_msg_eng = "Guarantor missing ! Please select a guarantor to continue."; + + alert_ebene(v_msg, v_msg_eng); + + $("#codeGcAssureur").focus(); + div_cible.html(""); + return; + } + + // 3. Validation du Produit via alert_ebene + if (!codeProduit || codeProduit.trim() === "") { + let v_msg = "Produit manquant ! Veuillez sélectionner un produit."; + let v_msg_eng = "Product missing ! Please select a product."; + + alert_ebene(v_msg, v_msg_eng); + + div_cible.html(""); + return; + } + + // 4. Préparation et affichage du loader bilingue + const donnees = { codeProduit: codeProduit }; + let loadingTxt = (codeLangue === "en_US") ? "Loading the entry form..." : "Chargement du formulaire de saisie..."; + + div_cible.html(` +
+
+ Loading... +
+
${loadingTxt}
+
+ `); + + // 5. Exécution de la requête AJAX + $.ajax({ + url: racineWeb + "Ajaxparamseuilalerte/actualisegarantieproduit/", + type: 'post', + data: donnees, + success: function(data) { + div_cible.html(data); + }, + error: function() { + let errorTxt = (codeLangue === "en_US") ? "Technical error while retrieving the form." : "Erreur technique lors de la récupération du formulaire."; + div_cible.html(` + + `); + } + }); +} + +let timerDispo, timerAffect; +/** + * Recherche Serveur Multi-critères + * @param {string} target - 'dispo' ou 'affect' + */ +function rechercheServeur(target) { + // 1. Récupération des critères selon la colonne + let nom = $("#search_nom_" + target).val(); + let ville = $("#search_ville_" + target).val(); + let type = $("#search_type_" + target).val(); + let query = (nom + " " + ville + " " + type).trim(); + + // 2. Sécurité : On ne lance rien si c'est trop court (sauf si vide pour réinitialiser) + if (query.length > 0 && query.length < 3) return; + + // 3. Gestion du Timer (Debounce) + let timer = (target === 'dispo') ? timerDispo : timerAffect; + clearTimeout(timer); + + let currentTimer = setTimeout(function() { + let action = (target === 'dispo') ? 'rechercherdispos' : 'rechercheraffectes'; + + $.ajax({ + url: $("#racineWeb").val() + "Ajaxprestatairesreseau/" + action + "/", + type: 'post', + data: { query: query }, + beforeSend: function() { + $("#count_" + target).html(''); + }, + success: function(data) { + // On remplace le corps du tableau + $("#tab_" + target + " tbody").html(data); + + // Mise à jour du compteur de lignes + let nbre = $("#tab_" + target + " tbody tr").length; + $("#count_" + target).text(nbre); + } + }); + }, 400); + + // Mise à jour de la référence du timer + if (target === 'dispo') timerDispo = currentTimer; + else timerAffect = currentTimer; +} + +// On initialise le tableau global s'il n'existe pas +if (typeof tab === 'undefined') { + var tab = { "libelle": "BAREME", "client": "", "taux": "", "territoire": "", "produit": "" }; +} + +function filtresouscripteur() { + const codeGcAssureur = $('#codeGcAssureur').val(); + + $.ajax({ + url: $("#racineWeb").val() + "Ajaxfiltresouscripteur/", + type: 'post', + data: { codeGcAssureur: codeGcAssureur }, + success: function(data) { + // Injection du HTML + $('#div_souscripteur').html(data); + + // Réactivation Neutral Pro + actualiserSelectPicker('#numeroClient'); + + // On vide la valeur dans le tableau et on rafraîchit le libellé + tab["client"] = ""; + libelleBareme(); + } + }); +} + +function filtreproduitcreerbareme() { + const codeGcAssureur = $('#codeGcAssureur').val(); + + if (codeGcAssureur !== "") { + $.ajax({ + url: $("#racineWeb").val() + "Ajaxfiltreproduit/creerbareme/", + type: 'post', + data: { codeGcAssureur: codeGcAssureur }, + success: function(data) { + $('#div_produit').html(data); + + // Réactivation Neutral Pro + actualiserSelectPicker('#codeProduit'); + + tab["produit"] = ""; + libelleBareme(); + } + }); + } +} + +// Version sécurisée de la construction du libellé +function libelleBareme() { + // On nettoie les undefined pour éviter d'afficher "undefined" dans l'input + const parts = [ + tab["libelle"] || "BAREME", + tab["client"] || "", + tab["taux"] || "", + tab["territoire"] || "", + (tab["produit"] ? "- " + tab["produit"] : "") + ]; + + // On joint les éléments avec un espace et on nettoie les doubles espaces + const finalLibelle = parts.filter(p => p !== "").join(' ').replace(/\s\s+/g, ' '); + $('#libelle').val(finalLibelle.trim().toUpperCase()); +} + +function libelleClientBareme(controle) { + // Si l'option vide est choisie, on ne met rien + tab["client"] = (controle.value === "") ? "" : $(controle).find('option:selected').text(); + libelleBareme(); +} + +function libelleProduitBareme(controle) { + tab["produit"] = (controle.value === "") ? "" : $(controle).find('option:selected').text(); + libelleBareme(); +} + +function libelleTauxBareme(controle) { + tab["taux"] = $(controle).find('option:selected').text(); + libelleBareme(); +} + +function libelleTerritoireBareme(codeTerritoire) { + // On peut mapper le code à un nom si besoin, ou utiliser le code directement + tab["territoire"] = codeTerritoire; + libelleBareme(); } \ No newline at end of file diff --git a/Modele/Baremepriseencharge.php b/Modele/Baremepriseencharge.php index 0d1a8ff1..1a82844e 100755 --- a/Modele/Baremepriseencharge.php +++ b/Modele/Baremepriseencharge.php @@ -21,25 +21,7 @@ class Baremepriseencharge extends Modele public function getBaremepriseenchargeId($idBaremePriseEnCharge) { - - if (est_anglophone()){ - $sql = "SELECT A.*,concat(B.nom,' ',B.prenoms) as nomClient, - C.libelleEng AS territoire, D.libelle as tauxRemboursement - from baremepriseencharge A - LEFT JOIN clients B ON (B.numeroClient=A.numeroClient) - LEFT JOIN etendueterritoire C ON (C.codeTerritoire=A.codeTerritoire) - LEFT JOIN tauxcouverture D ON (D.id=A.idTauxCouverture) - WHERE A.id=?;"; - }else{ - - $sql = "SELECT A.*,concat(B.nom,' ',B.prenoms) as nomClient, - C.libelle AS territoire, D.libelle as tauxRemboursement - from baremepriseencharge A - LEFT JOIN clients B ON (B.numeroClient=A.numeroClient) - LEFT JOIN etendueterritoire C ON (C.codeTerritoire=A.codeTerritoire) - LEFT JOIN tauxcouverture D ON (D.id=A.idTauxCouverture) - WHERE A.id=?;"; - } + $sql = "CALL sp_get_bareme_pec_id(?)"; $resultat = $this->executerRequete($sql, array($idBaremePriseEnCharge)); diff --git a/Modele/Gestionconfiee.php b/Modele/Gestionconfiee.php index 8a477cf3..95d6b061 100755 --- a/Modele/Gestionconfiee.php +++ b/Modele/Gestionconfiee.php @@ -15,13 +15,14 @@ class Gestionconfiee extends Modele { public function getGcAssureurId($idGc) { - $sql = "SELECT a.*, b.libelle as typegc FROM gc_assureur a - JOIN gc_typegarant b ON (a.typeGarant = b.id) - WHERE a.id=?"; + $sql = "CALL sp_get_garant_id(?);"; + $resultat = $this->executerRequete($sql, array($idGc)); $context = $resultat->fetch(PDO::FETCH_ASSOC); + $_SESSION['codeGcAssureur_C'] = $context['codeGcAssureur']; $_SESSION['GcAssureur_C'] = $context['libelle']; + return $context; } diff --git a/Modele/Reseausoins.php b/Modele/Reseausoins.php index 8f7e9cdc..0632b947 100755 --- a/Modele/Reseausoins.php +++ b/Modele/Reseausoins.php @@ -373,4 +373,36 @@ class Reseausoins extends Modele return $resultat->fetchAll(PDO::FETCH_ASSOC); } + /** + * Recherche les prestataires disponibles via procédure stockée + */ + public function rechercherPrestatairesDisponibles($codeReseau, $query) { + // Utilisation de la fonction helper pour formater le LIKE (%query%) + $queryParam = contruireParamLike($query); + $codeSociete = $_SESSION['codeSociete']; + + // Appel de la procédure stockée optimisée + $sql = "CALL sp_rechercher_prestataires_dispo(?, ?, ?)"; + + $resultat = $this->executerRequete($sql, array($codeSociete, $codeReseau, $queryParam)); + + return $resultat->fetchAll(PDO::FETCH_ASSOC); + } + + /** + * Recherche les prestataires affectés via procédure stockée + */ + public function rechercherPrestatairesAffectes($codeReseau, $query) { + // Utilisation de la fonction helper pour formater le LIKE (%query%) + $queryParam = contruireParamLike($query); + $codeSociete = $_SESSION['codeSociete']; + + // Appel de la procédure stockée optimisée + $sql = "CALL sp_rechercher_prestataires_affectes(?, ?, ?)"; + + $resultat = $this->executerRequete($sql, array($codeSociete, $codeReseau, $queryParam)); + + return $resultat->fetchAll(PDO::FETCH_ASSOC); + } + } \ No newline at end of file diff --git a/Modele/Trancheage.php b/Modele/Trancheage.php index 4b24f1ba..323409d8 100755 --- a/Modele/Trancheage.php +++ b/Modele/Trancheage.php @@ -4,8 +4,9 @@ class Trancheage extends Modele{ public function getListeGarant() { - $sql = 'SELECT codeGcAssureur AS `code`, libelle FROM gc_assureur - WHERE codeSociete= ? AND actif = 1 ORDER BY libelle'; + $sql = 'SELECT codeGcAssureur AS `code`, CONCAT(libelle, " [",codeGcAssureur,"]") AS libelle + FROM gc_assureur WHERE codeSociete= ? AND actif = 1 ORDER BY libelle'; + $resultat = $this->executerRequete($sql,array($_SESSION['codeSociete'])); return $resultat->fetchAll(PDO::FETCH_ASSOC); } diff --git a/Vue/Ajaxaccesfichiersautrestables/index.php b/Vue/Ajaxaccesfichiersautrestables/index.php index dd43d301..703ee362 100755 --- a/Vue/Ajaxaccesfichiersautrestables/index.php +++ b/Vue/Ajaxaccesfichiersautrestables/index.php @@ -2,4 +2,5 @@ - \ No newline at end of file + + \ No newline at end of file diff --git a/Vue/Ajaxactesgarantiebareme/index.php b/Vue/Ajaxactesgarantiebareme/index.php index 45bab889..ca41a558 100755 --- a/Vue/Ajaxactesgarantiebareme/index.php +++ b/Vue/Ajaxactesgarantiebareme/index.php @@ -1,655 +1,251 @@ nettoyer($garantie['codeGarantie']); - $garantie = $this->nettoyer($garantie['libelle']); - - if (est_anglophone()) - { - $garantie = $this->nettoyer($garantie['libelleEng']); - } - + $idBareme = $_SESSION['idBaremePriseEnCharge']; + $codeGarantie = $this->nettoyer($garantie['codeGarantie']); + $libelleG = $this->nettoyer($garantie['libelle']); + if (est_anglophone()) { $libelleG = $this->nettoyer($garantie['libelleEng']); } ?> + + + +
+
+ 2. + +
+ + +
+ +
+
+ 3. + +
+ + +
+ +
+
+ 4. + +
+ + +
+ + + + + + + + \ No newline at end of file diff --git a/Vue/Ajaxbaremeproduit/index.php b/Vue/Ajaxbaremeproduit/index.php index 6de19ac4..0482c2a8 100755 --- a/Vue/Ajaxbaremeproduit/index.php +++ b/Vue/Ajaxbaremeproduit/index.php @@ -1,70 +1,58 @@ titre = "INTER SANTE - Barème de prise en charge initial"; - - - $nbreTotal = count($baremes); - - if($nbreTotal < 10){ - $nbreTotal = '0'.$nbreTotal; - }else{ - $nbreTotal = format_N($nbreTotal); - } + $nbreTotal = count($baremes); + $displayTotal = ($nbreTotal < 10) ? '0'.$nbreTotal : format_N($nbreTotal); ?> - - - - -
+
+ + + +
- - - - - - - - - - - - - - - - nettoyer($v['id']); - - $observation = $this->nettoyer($v['observationBareme']); - - if(!empty($observation)){ - $libelle = $observation; - }else{ - $libelle = $this->nettoyer($v['libelle']); - } - - $archiver = $this->nettoyer($v['archiver']); - $nbBaremeCollege = $this->nettoyer($v['nbBaremeCollege']); - - $dansCollege = ($nbBaremeCollege=="0") ? "Non" : "Oui"; - $territoire = $this->nettoyer($v['territoire']); - - if (est_anglophone()){ - $territoire = $this->nettoyer($v['territoireEng']); - } - ?> - - - - - - - - - - - -
nettoyer($v['garant']) ?> nettoyer($v['tauxRemboursement']) ?> " onclick="javascript:modifier_baremepriseencharge();"> " onclick="javascript:detail_baremepriseencharge();">
\ No newline at end of file +
+
+ + + + + + + + + + + + + nettoyer($v['id']); + $libelle = !empty($v['observationBareme']) ? $v['observationBareme'] : $v['libelle']; + $territoire = est_anglophone() ? $v['territoireEng'] : $v['territoire']; + ?> + + + + + + + + + + +
ID
nettoyer($libelle) ?>nettoyer($v['garant']) ?> + + nettoyer($v['tauxRemboursement']) ?> + + + nettoyer($territoire) ?> + +
+ + +
+
+
+
\ No newline at end of file diff --git a/Vue/Ajaxdupliquerreseausoins/index.php b/Vue/Ajaxdupliquerreseausoins/index.php index 1adcd6b6..520fd101 100755 --- a/Vue/Ajaxdupliquerreseausoins/index.php +++ b/Vue/Ajaxdupliquerreseausoins/index.php @@ -1,59 +1,74 @@ - + + + \ No newline at end of file diff --git a/Vue/Ajaxentete/index.php b/Vue/Ajaxentete/index.php index 8ad1b549..93ee8b1f 100755 --- a/Vue/Ajaxentete/index.php +++ b/Vue/Ajaxentete/index.php @@ -1,22 +1,8 @@ - - - - - - - - - - - - - -
- - - - - - - -
\ No newline at end of file +
+ + +
\ No newline at end of file diff --git a/Vue/Ajaxfiltreproduit/creerbareme.php b/Vue/Ajaxfiltreproduit/creerbareme.php index 14d6cf1f..2166cb00 100755 --- a/Vue/Ajaxfiltreproduit/creerbareme.php +++ b/Vue/Ajaxfiltreproduit/creerbareme.php @@ -1,4 +1,3 @@ - + diff --git a/Vue/Ajaxfiltreproduitbareme/index.php b/Vue/Ajaxfiltreproduitbareme/index.php index 79149176..630d1150 100755 --- a/Vue/Ajaxfiltreproduitbareme/index.php +++ b/Vue/Ajaxfiltreproduitbareme/index.php @@ -1,8 +1,14 @@ - + \ No newline at end of file diff --git a/Vue/Ajaxfiltreproduitreseau/index.php b/Vue/Ajaxfiltreproduitreseau/index.php index b6734680..73c4d5a6 100755 --- a/Vue/Ajaxfiltreproduitreseau/index.php +++ b/Vue/Ajaxfiltreproduitreseau/index.php @@ -1,3 +1,8 @@ - + \ No newline at end of file diff --git a/Vue/Ajaxfiltresouscripteur/index.php b/Vue/Ajaxfiltresouscripteur/index.php index 8156c40b..5d679382 100755 --- a/Vue/Ajaxfiltresouscripteur/index.php +++ b/Vue/Ajaxfiltresouscripteur/index.php @@ -1,5 +1,3 @@ -
- -
\ No newline at end of file + \ No newline at end of file diff --git a/Vue/Ajaxfiltretablesreference/index.php b/Vue/Ajaxfiltretablesreference/index.php index b2c3e888..aae796fd 100755 --- a/Vue/Ajaxfiltretablesreference/index.php +++ b/Vue/Ajaxfiltretablesreference/index.php @@ -1,3 +1,3 @@ - + \ No newline at end of file diff --git a/Vue/Ajaxfiltretabproduit/index.php b/Vue/Ajaxfiltretabproduit/index.php index e2429585..742b858c 100755 --- a/Vue/Ajaxfiltretabproduit/index.php +++ b/Vue/Ajaxfiltretabproduit/index.php @@ -1,81 +1,107 @@ - - - - -
+
+
+ + + +
- + - - - - - - - - - - - - - - nettoyer($produit['id']); - $codeModecalculPrime = $this->nettoyer($produit['codeModecalculPrime']); - $libelleProduit = $this->nettoyer($produit['libelle']); - $modeprime = $this->nettoyer($produit['modeprime']); - - if (est_anglophone()){ - $libelleProduit = $this->nettoyer($produit['libelleEng']); - $modeprime = $this->nettoyer($produit['modeprimeEng']); - } - - $produitArchive = $this->nettoyer($produit['produitArchive']); - $dansBareme = $this->nettoyer($produit['dansBareme']); - $aGarantie = $this->nettoyer($produit['aGarantie']); - ?> - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
nettoyer($produit['codeProduit']) ?> " onClick="javascript:consulter_produit();"> " onClick="javascript:de_archiver_produit('', '');"> " onClick="javascript:modifier_produit();"> " onClick="javascript:archiver_produit('');"> " onClick="javascript:garanties_produit();">
+
+
+
+ + + + + + + + + + + + nettoyer($produit['id']); + $codeModecalculPrime = $this->nettoyer($produit['codeModecalculPrime']); + $libelleProduit = est_anglophone() ? $this->nettoyer($produit['libelleEng']) : $this->nettoyer($produit['libelle']); + $modeprime = est_anglophone() ? $this->nettoyer($produit['modeprimeEng']) : $this->nettoyer($produit['modeprime']); + + $isArchive = ($this->nettoyer($produit['produitArchive']) == '1'); + $dansBareme = $this->nettoyer($produit['dansBareme']); + $aGarantie = ($this->nettoyer($produit['aGarantie']) == '1'); + + // Style spécifique pour les types 'TA' + $rowClass = ($codeModecalculPrime == 'TA') ? 'bg-warning-ghost' : ''; + ?> + + + + + + + + + + +
nettoyer($produit['codeProduit']) ?> +
+ + + +
+ + +
+ + + + + + + + + + + +
+
+ +
+
+
+
+
+ + + + \ No newline at end of file diff --git a/Vue/Ajaxgcassureur/creerusergc.php b/Vue/Ajaxgcassureur/creerusergc.php index d7d289dc..ee6285ea 100755 --- a/Vue/Ajaxgcassureur/creerusergc.php +++ b/Vue/Ajaxgcassureur/creerusergc.php @@ -1,10 +1,13 @@
- - - -
-

-
- - -
\ No newline at end of file + + + +
+ +
+ + + + \ No newline at end of file diff --git a/Vue/Ajaxinsererdetailbareme/index.php b/Vue/Ajaxinsererdetailbareme/index.php index 205c6849..a09ea413 100755 --- a/Vue/Ajaxinsererdetailbareme/index.php +++ b/Vue/Ajaxinsererdetailbareme/index.php @@ -1,51 +1,67 @@ - - - - - - - - - - - - - nettoyer($v['actif'])=="1"){ - $actif = "Oui"; - }else{ - $actif = "Non"; - } - ?> - - - - - - - - - - - - - - - - - - -
nettoyer($v['dateEffet'])); ?>nettoyer($v['ticketModerateur']);?> - -
- \ No newline at end of file + + +
+ + + + + + + + + + + + > + + + + + + + +
+ nettoyer($v['dateEffet'])); ?> + + + nettoyer($v['ticketModerateur']); ?> % + + + + + + + + + + + + + + + + +
+
+ + \ No newline at end of file diff --git a/Vue/Ajaxlistegarantsparametrage/index.php b/Vue/Ajaxlistegarantsparametrage/index.php index b7fe5bc6..4d9b6534 100755 --- a/Vue/Ajaxlistegarantsparametrage/index.php +++ b/Vue/Ajaxlistegarantsparametrage/index.php @@ -1,46 +1,88 @@ +
+
+
+ +
+ + 1) ? _("Lignes") : _("Ligne") ?> + +
- -
- - - - - - - - - - - - nettoyer($gc['id']); - $codeGcAssureur = $this->nettoyer($gc['codeGcAssureur']); - $nbPoliceGarant = $this->nettoyer($gc['nbPoliceGarant']); - ?> - - - - - - - - - -
Code
nettoyer($gc['libelle']) ?> nettoyer($gc['typegc']) ?>
- +
+ + + + + + + + + + + + + + nettoyer($gc['id']); + $code = $this->nettoyer($gc['codeGcAssureur']); + $libelle = $this->nettoyer($gc['libelle']); + $type = $this->nettoyer($gc['typegc']); + $nbPolice = (int)$gc['nbPoliceGarant']; + ?> + + + + + + + + + + + +
+ " style="cursor: pointer;"> + + + + + + + + + + +
+
+ + + + \ No newline at end of file diff --git a/Vue/Ajaxlisteprestataireparlot/index.php b/Vue/Ajaxlisteprestataireparlot/index.php index a0b600a8..af88b8e1 100755 --- a/Vue/Ajaxlisteprestataireparlot/index.php +++ b/Vue/Ajaxlisteprestataireparlot/index.php @@ -1,82 +1,100 @@  -
- -
- - - - - - -
- -
-
- - - - - - - - - - - - - - nettoyer($prestataire['id']); - $codePrestataire = $this->nettoyer($prestataire['codePrestataire']); - $nbligne++; - ?> - - - - - - - - - - - -
Code Type - -
nettoyer($prestataire['libelle']) ?>nettoyer($prestataire['codePrestataire']) ?>nettoyer($prestataire['libelleCategorie']) ?>nettoyer($prestataire['typeprestataire']) ?>nettoyer($prestataire['localite']) ?>nettoyer($prestataire['codePays']) ?> - nettoyer($prestataire['choix'] == '0')){ - $check =''; - } - else{ - $check = 'checked'; - } - ?> - > -
- +
+ + +
+
+ + nettoyer($nbreprestataire['nbcoche'])) ?> + +
+
+ +
+
+ + + + + + + + + + + + + nettoyer($v['id']); + $check = ($v['choix'] == '1') ? 'checked' : ''; + $nbligne++; + ?> + + + + + + + + + + +
CodeType + +
nettoyer($v['libelle']) ?>nettoyer($v['codePrestataire']) ?>nettoyer($v['libelleCategorie']) ?> + nettoyer($v['typeprestataire']) ?> + +
nettoyer($v['localite']) ?>
+
nettoyer($v['codePays']) ?>
+
+
+ > +
+
+
+
+ +
+ + \ No newline at end of file diff --git a/Vue/Ajaxmessagerieliste/index.php b/Vue/Ajaxmessagerieliste/index.php index 8909264c..ee02fe96 100755 --- a/Vue/Ajaxmessagerieliste/index.php +++ b/Vue/Ajaxmessagerieliste/index.php @@ -1,32 +1,113 @@ -
- - - - - - - - - - - - - - nettoyer($messagesnonlu['idMessagerie']); - ?> - - - - - - - - - - - - - -
Id Date Message
nettoyer($messagesnonlu['dateSysteme'])) ?> nettoyer($messagesnonlu['prestataire']) ?> nettoyer($messagesnonlu['expediteur']) ?>
+ + +
+ +
+
+ +
+ + + 1) ? _("Messages") : _("Message") ?> + +
+ +
+ + + + + + + + + + + + nettoyer($msg['idMessagerie']); + ?> + + + + + + + + + + + + + +
ID
# +
nettoyer($msg['dateSysteme'])) ?>
+
+
nettoyer($msg['prestataire']) ?>
+
nettoyer($msg['expediteur']) ?>
+
+
+ nettoyer($msg['textMessage'])) ?> +
+
+ +
+ +

+
+
+ + \ No newline at end of file diff --git a/Vue/Ajaxmodifiertypegarant/index.php b/Vue/Ajaxmodifiertypegarant/index.php index e5629f17..f986ea60 100755 --- a/Vue/Ajaxmodifiertypegarant/index.php +++ b/Vue/Ajaxmodifiertypegarant/index.php @@ -1,41 +1,73 @@ - \ No newline at end of file + + + \ No newline at end of file diff --git a/Vue/Ajaxouvrirtypegarant/index.php b/Vue/Ajaxouvrirtypegarant/index.php index f308efe7..45044f76 100755 --- a/Vue/Ajaxouvrirtypegarant/index.php +++ b/Vue/Ajaxouvrirtypegarant/index.php @@ -1,40 +1,72 @@ - -
\ No newline at end of file + + + \ No newline at end of file diff --git a/Vue/Ajaxparametreproduitgarant/index.php b/Vue/Ajaxparametreproduitgarant/index.php index b8d7b4c2..a32f683e 100755 --- a/Vue/Ajaxparametreproduitgarant/index.php +++ b/Vue/Ajaxparametreproduitgarant/index.php @@ -1,126 +1,131 @@ - + - + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - - - - -
- - - - - -
" style='font-size:10pt;' > " onClick="javascript:retour_param_fact_garant();" style='font-size:9pt;' >
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - - - - -
" style='font-size:10pt;' > " onClick="javascript:retour_param_fact_garant();" style='font-size:9pt;' >
- \ No newline at end of file +
+ +
+ +
+ +
+ +
+ +
+ +
+ + + + + + + +
+
+ +
+
+
+
+
+
+ + > +
+
+ + > +
+
+ + > +
+
+
+
+
+ +
+
+
+
+
+ + > +
+
+ + > +
+
+ + > +
+
+
+
+
+ +
+
+
+
+
+ + > +
+
+ + > +
+
+ + > +
+
+
+
+
+
+
+ + \ No newline at end of file diff --git a/Vue/Ajaxparamseuilalerte/actualisegarantieproduit.php b/Vue/Ajaxparamseuilalerte/actualisegarantieproduit.php new file mode 100755 index 00000000..fddfba59 --- /dev/null +++ b/Vue/Ajaxparamseuilalerte/actualisegarantieproduit.php @@ -0,0 +1,92 @@ +
+
+
+
+
+ +
+
+
+ + + + + + + + + + + + + + + +
nettoyer($v['garantie']) ?> + +
+
+
+
+
+ +
+
+
+ +
+ + +
+
+
+ + + + + + + + + + + + + + + + + + + + + + +
+ + nettoyer($v['garantie']) ?> +
+ + % +
+
+ +
+
+
+
+
+
diff --git a/Vue/Ajaxparamseuilalerte/affichergarantieproduit.php b/Vue/Ajaxparamseuilalerte/affichergarantieproduit.php index 8214501f..c56179e6 100755 --- a/Vue/Ajaxparamseuilalerte/affichergarantieproduit.php +++ b/Vue/Ajaxparamseuilalerte/affichergarantieproduit.php @@ -1,79 +1,117 @@ -
-
- - - - - - - +
+
+
+
+
+ +
+ +
+ +
+ +
-
- - - - +
+
=>
+ + + + + + + + + + + + + + +
nettoyer($v['garantie']) ?> + +
+
+
+
- - - - nettoyer($garanties_sans_seuil['garantie']) ?> - - - - - -
+
+
+
+
+ +
+ +
-
- - - - - - - - - - - - - - - - - - - - +
+
<=
+ + + + + + + + + + + + + + + + + + +
#
+ + nettoyer($v['garantie']) ?> +
+ + +
+
+
+ + CFA +
+
+
+
+
+ - - - - - - nettoyer($garanties_avec_seuil['garantie']) ?> + \ No newline at end of file diff --git a/Vue/Ajaxparamseuilalerte/affichergarantieproduitcons.php b/Vue/Ajaxparamseuilalerte/affichergarantieproduitcons.php index 39b3d3dd..7f874ab3 100755 --- a/Vue/Ajaxparamseuilalerte/affichergarantieproduitcons.php +++ b/Vue/Ajaxparamseuilalerte/affichergarantieproduitcons.php @@ -1,31 +1,73 @@ - - - - - - - - - - - - - +
+
+
+
+ + + + + + + + + + - - - - + + + + - - - - - - -
+ + + +
nettoyer($garanties_avec_seuil['garantie']) ?>
+ nettoyer($garanties_avec_seuil['garantie']) ?> +
+ + + % + + + + +
+ FCFA +
+ + + + + + + + + + + \ No newline at end of file diff --git a/Vue/Ajaxprestatairesreseau/index.php b/Vue/Ajaxprestatairesreseau/index.php index 62928636..074107ca 100755 --- a/Vue/Ajaxprestatairesreseau/index.php +++ b/Vue/Ajaxprestatairesreseau/index.php @@ -2,119 +2,152 @@ $codeReseau = $this->nettoyer($reseau['codeReseau']); $idReseau = $this->nettoyer($reseau['id']); $nomReseau = $this->nettoyer($reseau['libelle']); + + // Extraction unique des types pour les selects (Optionnel) + $typesDispo = est_anglophone() + ? array_unique(array_column($prestatairesdispo, 'typeprestataireEng')) + : array_unique(array_column($prestatairesdispo, 'typeprestataire')); + sort($typesDispo); + + $typesAffect = est_anglophone() + ? array_unique(array_column($prestatairesreseau, 'typeprestataireEng')) + : array_unique(array_column($prestatairesreseau, 'typeprestataire')); + sort($typesAffect); ?> + + - - -
-
- - - - - - - - - - -
- -
- -
- - - - - - - - - - - - - - +
+
+
+
+
+ +
+ + + +
-
- - - - - - - - - - -
=>
- -
nettoyer($v['libelle']) ?>nettoyer($v['typeprestataire']) ?>nettoyer($v['localite']) ?> - -
+
+
+
+ " onkeyup="rechercheServeur('dispo')"> +
+
+ " onkeyup="rechercheServeur('dispo')"> +
+
+ +
+
+
+ + +
+ +
+
+ + + + + + + + + + + + + + + +
+
nettoyer($v['libelle']) ?>
+
+ nettoyer($v['localite']) ?> | + nettoyer($v['typeprestataire']) ?> +
+
+ +
+
+
+ -
- - - - - - - - - - - -
- - - -
- - - - - - - - - - - - - - - - - - - - - -
<=
- -
- - nettoyer($v['libelle']) ?>nettoyer($v['localite']) ?>
+
+
+
+
+
+ +
+ + + +
+ +
+
+
+ " onkeyup="rechercheServeur('affect');"> +
+
+ " onkeyup="rechercheServeur('affect');"> +
+
+ +
+
+
+ + +
+ +
+
+ + + + + + + + + + + + + + + + + +
+ + nettoyer($v['libelle']) ?> + nettoyer($v['localite']) ?> + nettoyer($v['typeprestataire']) ?> +
+
+
-
\ No newline at end of file +
+ \ No newline at end of file diff --git a/Vue/Ajaxprestatairesreseau/rechercheraffectes.php b/Vue/Ajaxprestatairesreseau/rechercheraffectes.php new file mode 100644 index 00000000..4c14c037 --- /dev/null +++ b/Vue/Ajaxprestatairesreseau/rechercheraffectes.php @@ -0,0 +1,13 @@ + + + + + + + nettoyer($v['libelle']) ?> + nettoyer($v['localite']) ?> nettoyer($v['typeprestataire']) ?> + + + \ No newline at end of file diff --git a/Vue/Ajaxprestatairesreseau/rechercherdispos.php b/Vue/Ajaxprestatairesreseau/rechercherdispos.php new file mode 100644 index 00000000..0e50a9f1 --- /dev/null +++ b/Vue/Ajaxprestatairesreseau/rechercherdispos.php @@ -0,0 +1,15 @@ + + + + +
nettoyer($v['libelle']) ?>
+
nettoyer($v['localite']) ?> | nettoyer($v['typeprestataire']) ?>
+ + + + + + + \ No newline at end of file diff --git a/Vue/Ajaxprimelienparente/index.php b/Vue/Ajaxprimelienparente/index.php index 16fcd6cc..a8e8c49a 100755 --- a/Vue/Ajaxprimelienparente/index.php +++ b/Vue/Ajaxprimelienparente/index.php @@ -1,97 +1,95 @@ - - - - - - - - - - - - - - +
+
+
+ + + + + + + + + + + + + + nettoyer($v['id']); + $codeLienParente = $this->nettoyer($v['codeLienParente']); + $lien = est_anglophone() ? $this->nettoyer($v['lienparenteEng']) : $this->nettoyer($v['lienparente']); + $i++; + ?> + + + + - - nettoyer($v['id']); - $codeLienParente=$this->nettoyer($v['codeLienParente']); - $lienparente = $this->nettoyer($v['lienparente']); - - if (est_anglophone()){ - $lienparente = $this->nettoyer($v['lienparenteEng']); - } - - $ageMin = $this->nettoyer($v['ageMinimum']); - $ageMax = $this->nettoyer($v['ageMaximum']); - - ++$i; - ?> - - - - + + + + + + + + + + + - - - - - - - - - - - - - - - - - - - - - - - -
+ + + + +
- - + + + + + + + + ---FIXE--- - - - - - - - - - - - - - - - - - - -
\ No newline at end of file + + + + + + + + + + + + + + \ No newline at end of file diff --git a/Vue/Ajaxprimelienparente/trancheage.php b/Vue/Ajaxprimelienparente/trancheage.php index c9a9614b..d8036630 100755 --- a/Vue/Ajaxprimelienparente/trancheage.php +++ b/Vue/Ajaxprimelienparente/trancheage.php @@ -1,134 +1,122 @@ -
-
-
- - - - - - - - - - - - - +
+
+
+
+
+ + + + + + + + + + + + + nettoyer($v['id']); + $codeLienParente = $this->nettoyer($v['codeLienParente']); + $lienparente = est_anglophone() ? $this->nettoyer($v['lienparenteEng']) : $this->nettoyer($v['lienparente']); + $i++; + ?> + + + + + + + + + + + + + + - - nettoyer($v['id']); - $codeLienParente=$this->nettoyer($v['codeLienParente']); - $lienparente = $this->nettoyer($v['lienparente']); - - if (est_anglophone()){ - $lienparente = $this->nettoyer($v['lienparenteEng']); - } - - $ageMin = $this->nettoyer($v['ageMinimum']); - $ageMax = $this->nettoyer($v['ageMaximum']); - - ++$i; - ?> - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
+ + + + + + + +
- - - - - - - - - - - - - - - - - - -
-
- -
- - - - - - - - - nettoyer($v['id']); - - $libelle = $this->nettoyer($v['libelleTrancheAge']); - - if (est_anglophone()){ - $libelle = $this->nettoyer($v['libelleTrancheAgeEng']); - } - - $i++; - ?> - - - - - - -
- - - -
-
-
+ + + + + + + + + + +
+ + +
+
+ + + + + + + + + nettoyer($v['id']); + $libAge = est_anglophone() ? $this->nettoyer($v['libelleTrancheAgeEng']) : $this->nettoyer($v['libelleTrancheAge']); + $j++; + ?> + + + + + + +
+ +
+
+
+ + + \ No newline at end of file diff --git a/Vue/Ajaxprimelienparente/typetrancheage.php b/Vue/Ajaxprimelienparente/typetrancheage.php index 7a0ce7f6..6a0f23b5 100755 --- a/Vue/Ajaxprimelienparente/typetrancheage.php +++ b/Vue/Ajaxprimelienparente/typetrancheage.php @@ -1,16 +1,37 @@ - - - - - - - - -
- -
-
- +
+
+
+
+ +
+
+
+ + + + +
+
+
+
+ +
+ + diff --git a/Vue/Ajaxproduitreseau/afficherreseaucategorie.php b/Vue/Ajaxproduitreseau/afficherreseaucategorie.php index c2eaa4ee..97de22bd 100755 --- a/Vue/Ajaxproduitreseau/afficherreseaucategorie.php +++ b/Vue/Ajaxproduitreseau/afficherreseaucategorie.php @@ -1,71 +1,97 @@ -
+
+
+ +
+
+
+
+
+ +
+
+ +
+
+
+ + + + + + + + + + + + + + + +
nettoyer($v['libelle']) ?> + +
+
+
+
+
-
-
- - - - - - - - - - - - - +
+
+
+
+
+ +
+
+ +
+
+
+
=>
+ + + + + + + + + + + + + + +
+ + nettoyer($v['reseausoin']) ?>
+
+
+
+
+
+
- - - - nettoyer($reseausnonaccessible['libelle']) ?> - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - -
<=
nettoyer($reseausaccessible['reseausoin']) ?>
-
- - - + \ No newline at end of file diff --git a/Vue/Ajaxsaisirpassnewuser/index.php b/Vue/Ajaxsaisirpassnewuser/index.php index fbe3da21..0fd23347 100755 --- a/Vue/Ajaxsaisirpassnewuser/index.php +++ b/Vue/Ajaxsaisirpassnewuser/index.php @@ -1,12 +1,31 @@ - - - - - - + +
+
+ +
+ + " + onBlur="controle_longeur_passe(this);" required autocomplete="new-password"> +
+
+
+ +
+ + " + onBlur="controle_new_pass();" required autocomplete="new-password"> +
+
+
- - - - + + +
+ + +
diff --git a/Vue/Ajaxtbajouteractivite/index.php b/Vue/Ajaxtbajouteractivite/index.php index dd6a6c40..e4670653 100755 --- a/Vue/Ajaxtbajouteractivite/index.php +++ b/Vue/Ajaxtbajouteractivite/index.php @@ -1,16 +1,75 @@ -
- - - - - - - - - - - - - -
-
\ No newline at end of file +
+
+
+ +
+
+ +
+
+
+
+ +
+ + FR + + +
+
+ +
+ +
+ + EN + + +
+
+
+
+
+
+ + + + \ No newline at end of file diff --git a/Vue/Ajaxtbajouteraffection/index.php b/Vue/Ajaxtbajouteraffection/index.php index 08fee196..37429610 100755 --- a/Vue/Ajaxtbajouteraffection/index.php +++ b/Vue/Ajaxtbajouteraffection/index.php @@ -1,21 +1,79 @@ -
- - - - - - - - - - - - - - -
- -
-
\ No newline at end of file +
+
+
+ +
+
+ +
+
+
+ +
+ + +
+ +
+ +
+ + FR + + +
+
+ +
+ +
+ + EN + + +
+
+ +
+
+
+
+ + + + \ No newline at end of file diff --git a/Vue/Ajaxtbajouterbanques/index.php b/Vue/Ajaxtbajouterbanques/index.php index fda8795e..429ddb9c 100755 --- a/Vue/Ajaxtbajouterbanques/index.php +++ b/Vue/Ajaxtbajouterbanques/index.php @@ -1,30 +1,88 @@ -
- - - - - - - - - - - - - - - +
+
+
+ +
+
+ +
+ +
+ +
+ +
+ + +
+
-
- - - - - - -
code Swift
N° Compte CptN° Compte BancaireBanque Société - -
-
\ No newline at end of file +
+ +
+ + +
+
+ +
+ +
+ + +
+
+ +
+ +
+ + +
+
+ +
+ +
+ +
+
+ + + + + + + + + \ No newline at end of file diff --git a/Vue/Ajaxtbajouterbureau/index.php b/Vue/Ajaxtbajouterbureau/index.php index 17680a2a..1f08c5a9 100755 --- a/Vue/Ajaxtbajouterbureau/index.php +++ b/Vue/Ajaxtbajouterbureau/index.php @@ -1,32 +1,111 @@ -
- - - - - - - - - - - - - - - +
+
+
+ +
+
+ +
+ +
+
+ +
+ + +
+
-
- - - - - - - - - - - - -
-
+
+ +
+ + +
+
+ +
+ +
+ + +
+
+ +
+ +
+ + +
+
+ +
+ +
+ + +
+
+ +
+ +
+ + +
+
+ + + + + + + + \ No newline at end of file diff --git a/Vue/Ajaxtbajoutercommerciaux/index.php b/Vue/Ajaxtbajoutercommerciaux/index.php index 9fc30a15..e98ead18 100755 --- a/Vue/Ajaxtbajoutercommerciaux/index.php +++ b/Vue/Ajaxtbajoutercommerciaux/index.php @@ -1,70 +1,128 @@ -
- - - - - - - - - +
+
+
+ +
+
+ +
+ +
+ +
+ +
+ + +
+
-
- - - - - - - - - - - +
+ + +
- - - - - +
+ + +
- - - - - - - - - - - - - - - - - - - - -
Type - - - -
E-mail
"> - -
- - - -
-
+
+ +
+ + +
+
+ +
+ +
+ + +
+
+ +
+ +
+ + +
+
+ +
+ +
+ + " required> +
+
+ +
+ + +
+ +
+ + +
+ +
+ +
+ + +
+
+ +
+ +
+ + +
+
+ + + + + + + + \ No newline at end of file diff --git a/Vue/Ajaxtbajouterentetetrancheage/index.php b/Vue/Ajaxtbajouterentetetrancheage/index.php index ed997226..f7129c4b 100755 --- a/Vue/Ajaxtbajouterentetetrancheage/index.php +++ b/Vue/Ajaxtbajouterentetetrancheage/index.php @@ -1,23 +1,102 @@ -
- - - - - - - - - - - - - - - - -
- -
-
\ No newline at end of file +
+
+
+ +
+
+ +
+
+
+ +
+ +
+ + FR + + +
+
+ +
+ +
+ + EN + + +
+
+ +
+ +
+ +
+
+ +
+
+
+
+ + + + \ No newline at end of file diff --git a/Vue/Ajaxtbajouteretendueterritoire/index.php b/Vue/Ajaxtbajouteretendueterritoire/index.php index dd6a6c40..473cea75 100755 --- a/Vue/Ajaxtbajouteretendueterritoire/index.php +++ b/Vue/Ajaxtbajouteretendueterritoire/index.php @@ -1,16 +1,76 @@ -
- - - - - - - - - - - - - -
-
\ No newline at end of file +
+
+
+ +
+
+ +
+
+
+
+ +
+ + FR + + +
+
+ +
+ +
+ + EN + + +
+
+
+
+
+
+ + + + \ No newline at end of file diff --git a/Vue/Ajaxtbajouterintermediaires/index.php b/Vue/Ajaxtbajouterintermediaires/index.php index 63f79eba..0a391386 100755 --- a/Vue/Ajaxtbajouterintermediaires/index.php +++ b/Vue/Ajaxtbajouterintermediaires/index.php @@ -1,51 +1,103 @@ -
- - - - - - - - - - - - - - - + +
+
+
+ +
+
+ +
+
+
+ +
+ + +
+
-
- - - - - - - - - - - - - - - - - - - -
Type - -
E-mail - - - -
">
+
+ +
+ + +
+
+ +
+ +
+ + +
+
+ + +
+
+ +
+ + +
+
+ +
+ +
+ + +
+
+ +
+ +
+ + +
+
+ +
+ +
+ + +
+
+
+ +
+
+ +
+ + required"> +
+
+ +
+ +
+ + +
+
+ +
+ +
+ + +
+
+
+ +
\ No newline at end of file diff --git a/Vue/Ajaxtbajouterjoursferiers/index.php b/Vue/Ajaxtbajouterjoursferiers/index.php index cc84603e..ee1c1406 100755 --- a/Vue/Ajaxtbajouterjoursferiers/index.php +++ b/Vue/Ajaxtbajouterjoursferiers/index.php @@ -1,33 +1,69 @@ -
- - - - - - - - - - - - - - - - - - - - - - -
Date - - - -
+ +
+
+
+ +
+
+ +
+
+
+ +
+ + + + +
+
+ +
+ +
+ + + + +
+
+
+ +
+
+ +
+ + + + +
+
+ +
+ +
+ + + + +
+
+ +
+ +
+ + + + +
+
+
+
+
\ No newline at end of file diff --git a/Vue/Ajaxtbajouterlocalite/index.php b/Vue/Ajaxtbajouterlocalite/index.php index 0b56daa2..c63af9df 100755 --- a/Vue/Ajaxtbajouterlocalite/index.php +++ b/Vue/Ajaxtbajouterlocalite/index.php @@ -1,29 +1,57 @@ -
- - - - - - - - - - - +
+
+
+ +
+
-
- - - -
- - -
- + +
+
+ +
+ + +
+
+ +
+ +
+ +
-
-
\ No newline at end of file + + +
+ +
+ + +
+
+ + + + + + \ No newline at end of file diff --git a/Vue/Ajaxtbajoutermodepaiement/index.php b/Vue/Ajaxtbajoutermodepaiement/index.php index f5558b1f..21431ee9 100755 --- a/Vue/Ajaxtbajoutermodepaiement/index.php +++ b/Vue/Ajaxtbajoutermodepaiement/index.php @@ -1,26 +1,84 @@ -
- - - - - - - - - - - - - - - - - - - -
Type - - Ordre
-
\ No newline at end of file +
+
+
+ +
+
+ +
+
+
+ +
+ +
+ + FR + + +
+
+ +
+ +
+ + EN + + +
+
+ +
+ +
+ +
+
+ +
+ +
+ + +
+
+ +
+
+
+
+ + + + \ No newline at end of file diff --git a/Vue/Ajaxtbajoutermoyenpaiement/index.php b/Vue/Ajaxtbajoutermoyenpaiement/index.php index 224e61cb..8a8ac2d3 100755 --- a/Vue/Ajaxtbajoutermoyenpaiement/index.php +++ b/Vue/Ajaxtbajoutermoyenpaiement/index.php @@ -1,21 +1,79 @@ -
- - - - - - - - - - - - - - -
Type - - N° Compte
-
\ No newline at end of file +
+
+
+ +
+
+ +
+
+
+ +
+ +
+ + +
+
+ +
+ + +
+ +
+ +
+ + +
+
+ +
+
+
+
+ + + + \ No newline at end of file diff --git a/Vue/Ajaxtbajouterpays/index.php b/Vue/Ajaxtbajouterpays/index.php index 1f4d2058..070b0dcb 100755 --- a/Vue/Ajaxtbajouterpays/index.php +++ b/Vue/Ajaxtbajouterpays/index.php @@ -1,14 +1,61 @@ -
- - - - - - +
+
+
+ +
+
+ +
+ +
+
+ +
+ + +
+
+ +
+ +
+ + +
+
+
-
- - - -
Code
-
\ No newline at end of file +
+ + + + + \ No newline at end of file diff --git a/Vue/Ajaxtbajouterpointvente/index.php b/Vue/Ajaxtbajouterpointvente/index.php index fdbfc141..f46b06cd 100755 --- a/Vue/Ajaxtbajouterpointvente/index.php +++ b/Vue/Ajaxtbajouterpointvente/index.php @@ -1,63 +1,128 @@ -
- - - - - +
+
+
+ +
+
+ +
+ +
+ +
+ +
+ + +
+
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Type - -
Email
Adr. Post.Adr. Géo.
Pays - - Ville -
- +
-
Localite -
- +
+ + +
+ +
+ + +
+
+ +
+ +
+ + +
+
+ +
+ +
+ + +
+
+ +
+ +
-
-
+ +
+ +
+ +
+
+ +
+ +
+ +
+
+ + + + + + + + \ No newline at end of file diff --git a/Vue/Ajaxtbajoutersecteuractivite/index.php b/Vue/Ajaxtbajoutersecteuractivite/index.php index 71daa2ae..bd12642d 100755 --- a/Vue/Ajaxtbajoutersecteuractivite/index.php +++ b/Vue/Ajaxtbajoutersecteuractivite/index.php @@ -1,14 +1,42 @@ -
- - - - - - - - - - - -
+ +
+
+
+ +
+
+ +
+
+
+ +
+ + + + +
+
+ +
+ +
+ + + + +
+
+
+
+
\ No newline at end of file diff --git a/Vue/Ajaxtbajouterservice/index.php b/Vue/Ajaxtbajouterservice/index.php index 85bae3c6..fc627410 100755 --- a/Vue/Ajaxtbajouterservice/index.php +++ b/Vue/Ajaxtbajouterservice/index.php @@ -1,16 +1,42 @@ -
- - - - - - - - - - - - - -
+ +
+
+
+ +
+
+ +
+
+
+ +
+ + + + +
+
+ +
+ +
+ + + + +
+
+
+
+
\ No newline at end of file diff --git a/Vue/Ajaxtbajouterspecialite/index.php b/Vue/Ajaxtbajouterspecialite/index.php index 1519655e..704c7d9c 100755 --- a/Vue/Ajaxtbajouterspecialite/index.php +++ b/Vue/Ajaxtbajouterspecialite/index.php @@ -1,16 +1,75 @@ -
- - - - - - - - - - - - - -
-
\ No newline at end of file +
+
+
+ +
+
+ +
+
+
+
+ +
+ + FR + + +
+
+ +
+ +
+ + EN + + +
+
+
+
+
+
+ + + + \ No newline at end of file diff --git a/Vue/Ajaxtbajoutertitre/index.php b/Vue/Ajaxtbajoutertitre/index.php index 6c7e7609..d88aee7d 100755 --- a/Vue/Ajaxtbajoutertitre/index.php +++ b/Vue/Ajaxtbajoutertitre/index.php @@ -1,33 +1,65 @@ -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
CodeTitre Courrier FR
- - Titre Courrier ENG
+ +
+
+
+ +
+
+ +
+
+
+ +
+ + +
+
+ +
+ +
+ + +
+
+ +
+ +
+ + +
+
+
+ +
+
+ +
+ + +
+
+ +
+ +
+ + +
+
+ +
+ +
+ + +
+
+
+
+
\ No newline at end of file diff --git a/Vue/Ajaxtbajoutertypeaffection/index.php b/Vue/Ajaxtbajoutertypeaffection/index.php index 0eae40a0..026bd459 100755 --- a/Vue/Ajaxtbajoutertypeaffection/index.php +++ b/Vue/Ajaxtbajoutertypeaffection/index.php @@ -1,24 +1,80 @@ -
- - - - - - - - - - - - - - - - -
Maladie Chronique - - -
-
\ No newline at end of file +
+
+
+ +
+
+ +
+
+
+ +
+ +
+ + FR + + +
+
+ +
+ +
+ + EN + + +
+
+ +
+ +
+ +
+
+
+
+
+
+ + + + \ No newline at end of file diff --git a/Vue/Ajaxtbajoutertypepaiement/index.php b/Vue/Ajaxtbajoutertypepaiement/index.php index dd6a6c40..d0ed3eb9 100755 --- a/Vue/Ajaxtbajoutertypepaiement/index.php +++ b/Vue/Ajaxtbajoutertypepaiement/index.php @@ -1,16 +1,77 @@ -
- - - - - - - - - - - - - -
-
\ No newline at end of file +
+
+
+ +
+
+ +
+
+
+ +
+ +
+ + FR + + +
+
+ +
+ +
+ + EN + + +
+
+ +
+
+
+
+ + + + \ No newline at end of file diff --git a/Vue/Ajaxtbajouterville/index.php b/Vue/Ajaxtbajouterville/index.php index 05316fd0..a0726d10 100755 --- a/Vue/Ajaxtbajouterville/index.php +++ b/Vue/Ajaxtbajouterville/index.php @@ -1,20 +1,40 @@ -
- - - - - - - - - - - - -
- - -
+ +
+
+
+ +
+
+ +
+
+
+ +
+ + + + +
+
+ +
+ +
+ + + + +
+
+
+
+
\ No newline at end of file diff --git a/Vue/Ajaxtblisteractivite/index.php b/Vue/Ajaxtblisteractivite/index.php index 85b684c4..7796c19c 100755 --- a/Vue/Ajaxtblisteractivite/index.php +++ b/Vue/Ajaxtblisteractivite/index.php @@ -1,92 +1,78 @@ - - +
+
+
+
+ +
+ + + +
+
+
- - - - -
" readonly>
+
+
+ + + + + + + + + + + nettoyer($v['id']); + $libelle = est_anglophone() ? $this->nettoyer($v['libelleEng']) : $this->nettoyer($v['libelle']); + ?> + + + + + + + + +
Code
+ nettoyer($v['codeSociete']) ?> + + + nettoyer($v['codeActivite']) ?> + + + + + +
+
+
+
- - - - - - - - - - - - - - - nettoyer($v['id']); - if (est_anglophone()){ - $libelle = $this->nettoyer($v['libelleEng']); - }else{ - $libelle = $this->nettoyer($v['libelle']); - } - ?> - - - - - - - - - -
Code
nettoyer($v['codeSociete']);; ?> - nettoyer($v['codeActivite']) ?> - -
\ No newline at end of file + + + \ No newline at end of file diff --git a/Vue/Ajaxtblisteraffection/index.php b/Vue/Ajaxtblisteraffection/index.php index 872e8385..b58ce212 100755 --- a/Vue/Ajaxtblisteraffection/index.php +++ b/Vue/Ajaxtblisteraffection/index.php @@ -1,93 +1,86 @@ - +
+
+
+
+ +
+ + + +
+
+
- - - - -
" readonly>
- - - - - - - - - - - - - - - - nettoyer($v['id']); - - if (est_anglophone()){ - $libelle = $this->nettoyer($v['libelleEng']); - }else{ - $libelle = $this->nettoyer($v['libelle']); - } - ?> - - - - - - - - - - -
Code
nettoyer($v['codeSociete']);; ?> - nettoyer($v['codeAffection']) ?>nettoyer($v['typeaffection']) ?> - -
\ No newline at end of file +
+
+ + + + + + + + + + + + nettoyer($v['id']); + // Gestion multilingue Standard + $libelle = est_anglophone() ? $this->nettoyer($v['libelleEng']) : $this->nettoyer($v['libelle']); + ?> + + + + + + + + + +
Code
+ nettoyer($v['codeSociete']) ?> + + + nettoyer($v['codeAffection']) ?> + + + + + + + nettoyer($v['typeaffection']) ?> + + + +
+
+
+
+ + + + \ No newline at end of file diff --git a/Vue/Ajaxtblisterbanques/index.php b/Vue/Ajaxtblisterbanques/index.php index b419cc45..972cd4fc 100755 --- a/Vue/Ajaxtblisterbanques/index.php +++ b/Vue/Ajaxtblisterbanques/index.php @@ -1,86 +1,84 @@ - - +
+
+
+
+ +
+ + + +
+
+
- - - - -
" readonly>
- - - - - - - - - - - - - - - nettoyer($v['id']); - ?> - - - - - - - - - - -
Code
nettoyer($v['codeSociete']);; ?> - nettoyer($v['codeBanque']) ?>nettoyer($v['libelle']) ?>nettoyer($v['numeroCompteCpt']) ?> - -
\ No newline at end of file +
+
+ + + + + + + + + + + + nettoyer($v['id']); + ?> + + + + + + + + + +
Code
+ nettoyer($v['codeSociete']) ?> + + + nettoyer($v['codeBanque']) ?> + + + nettoyer($v['libelle']) ?> + + + + nettoyer($v['numeroCompteCpt']) ?> + + + +
+
+
+
+ + + + \ No newline at end of file diff --git a/Vue/Ajaxtblisterbureau/index.php b/Vue/Ajaxtblisterbureau/index.php index 19a35249..00704bc0 100755 --- a/Vue/Ajaxtblisterbureau/index.php +++ b/Vue/Ajaxtblisterbureau/index.php @@ -1,95 +1,85 @@ +
+
+
+
+ +
+ + + +
+
+
+
+
+ + + + + + + + + + + + + nettoyer($v['id']); + ?> + + + + + + + + + + +
Code
+ nettoyer($v['codeSociete']) ?> + + + nettoyer($v['codeBureau']) ?> + + + nettoyer($v['libelle']) ?> + + nettoyer($v['respo']) ?> + + nettoyer($v['contacts']) ?> + + +
+
+
+
+ - - - - - - - - -
" readonly>
- - - - - - - - - - - - - - - - nettoyer($v['id']); - ?> - - - - - - - - - - - - -
Code
nettoyer($v['codeSociete']) ?>nettoyer($v['codeBureau']) ?>nettoyer($v['libelle']) ?>nettoyer($v['respo']) ?>nettoyer($v['contacts']) ?> - -
\ No newline at end of file + \ No newline at end of file diff --git a/Vue/Ajaxtblistercommerciaux/index.php b/Vue/Ajaxtblistercommerciaux/index.php index 97f682dc..723fc051 100755 --- a/Vue/Ajaxtblistercommerciaux/index.php +++ b/Vue/Ajaxtblistercommerciaux/index.php @@ -1,53 +1,89 @@ - - - - - -
" readonly>
- - - - - - - - - - - - - - - - - nettoyer($v['id']); - - ?> - - - - - - - - - - - - -
CodeType
nettoyer($v['codeSociete']);; ?> - nettoyer($v['codeApporteur']) ?>nettoyer($v['libelle']) ?>nettoyer($v['typeapp']) ?>nettoyer($v['bureau']) ?> - -
\ No newline at end of file +
+
+
+
+ +
+ + + +
+
+
+ +
+
+ + + + + + + + + + + + + nettoyer($v['id']); + ?> + + + + + + + + + + +
CodeType
+ nettoyer($v['codeSociete']) ?> + + + nettoyer($v['codeApporteur']) ?> + + + nettoyer($v['libelle']) ?> + + + nettoyer($v['typeapp']) ?> + + + + nettoyer($v['bureau']) ?> + + + +
+
+
+
+ + + + \ No newline at end of file diff --git a/Vue/Ajaxtblisterentetetrancheage/index.php b/Vue/Ajaxtblisterentetetrancheage/index.php index 2ef5e383..8401cf76 100755 --- a/Vue/Ajaxtblisterentetetrancheage/index.php +++ b/Vue/Ajaxtblisterentetetrancheage/index.php @@ -1,55 +1,82 @@ - - +
+
+
+
+ +
+ + + +
+
+
- - - - -
" readonly>
- - - - - - - - - - - - - - nettoyer($v['id']); - - $libelle = $this->nettoyer($v['libelle']); - - if (est_anglophone()){ - $libelle = $this->nettoyer($v['libelleEng']); +
+
+
Code
+ + + + + + + + + + + nettoyer($v['id']); + $libelle = est_anglophone() ? $this->nettoyer($v['libelleEng']) : $this->nettoyer($v['libelle']); + ?> + + + + + + + + + +
Code
+ nettoyer($v['codeSociete']) ?> + + + nettoyer($v['garant']) ?> + + + nettoyer($v['codeEnteteTrancheAge']) ?> + + + + +
+
+ + - } - ?> - - nettoyer($v['codeSociete']);; ?> - nettoyer($v['garant']) ?> - nettoyer($v['codeEnteteTrancheAge']) ?> - - - - - - - - - - \ No newline at end of file + + + \ No newline at end of file diff --git a/Vue/Ajaxtblisteretendueterritoire/index.php b/Vue/Ajaxtblisteretendueterritoire/index.php index 51f96b4b..0d4c5b08 100755 --- a/Vue/Ajaxtblisteretendueterritoire/index.php +++ b/Vue/Ajaxtblisteretendueterritoire/index.php @@ -1,91 +1,79 @@ - - +
+
+
+
+ +
+ + + +
+
+
- - - - -
" readonly>
- - - - - - - - - - - - - - - nettoyer($v['id']); - if (est_anglophone()){ - $libelle = $this->nettoyer($v['libelleEng']); - }else{ - $libelle = $this->nettoyer($v['libelle']); - } - ?> - - - - - - - - - -
Code
nettoyer($v['codeSociete']);; ?> - nettoyer($v['codeTerritoire']) ?> - -
\ No newline at end of file +
+
+ + + + + + + + + + + nettoyer($v['id']); + // Gestion multilingue systématique + $libelle = est_anglophone() ? $this->nettoyer($v['libelleEng']) : $this->nettoyer($v['libelle']); + ?> + + + + + + + + +
Code
+ nettoyer($v['codeSociete']) ?> + + + nettoyer($v['codeTerritoire']) ?> + + + + + +
+
+
+
+ + + + \ No newline at end of file diff --git a/Vue/Ajaxtblisterintermediaires/index.php b/Vue/Ajaxtblisterintermediaires/index.php index 29f6e4e1..603c1d25 100755 --- a/Vue/Ajaxtblisterintermediaires/index.php +++ b/Vue/Ajaxtblisterintermediaires/index.php @@ -1,53 +1,69 @@ - +
+
+
+
+ +
+ + 0 + +
+
+
- +
+
+ + + + + + + + + + + + + nettoyer($v['id']); + ?> + + + + + + + + + + +
nettoyer($v['codeSociete']) ?> + + nettoyer($v['codeApporteur']) ?> + + nettoyer($v['libelle']) ?> + + nettoyer($v['type_apporteur']) ?> + + + nettoyer($v['telephone']) ?> + + +
+
+
+
- - - - -
" readonly>
- - - - - - - - - - - - - - - - - nettoyer($v['id']); - ?> - - - - - - - - - - - -
Code Type
nettoyer($v['codeSociete']);; ?> - nettoyer($v['codeApporteur']) ?>nettoyer($v['libelle']) ?>nettoyer($v['type_apporteur']) ?>nettoyer($v['telephone']) ?> - -
\ No newline at end of file + \ No newline at end of file diff --git a/Vue/Ajaxtblisterjoursferiers/index.php b/Vue/Ajaxtblisterjoursferiers/index.php index da23ff28..c44b2207 100755 --- a/Vue/Ajaxtblisterjoursferiers/index.php +++ b/Vue/Ajaxtblisterjoursferiers/index.php @@ -1,128 +1,120 @@ - +
+
+
+
+ +
+ + 0 + +
+ +
+
+ + + + +
+
+
+
- +
+
+ + + + + + + + + + + nettoyer($v['id']); + $isDemi = ($this->nettoyer($v['demiJournee']) == "1"); + + $libelleBase = est_anglophone() ? $this->nettoyer($v['libelleEng']) : $this->nettoyer($v['libelle']); + $dateFerier = $this->nettoyer($v['dateFerier']); + $ladate = date('d/m/Y', strtotime($dateFerier)); + ?> + + + + + + + + +
+ nettoyer($v['codeSociete']); ?> + +
+
+ + +
+ +
+
+ + + + + + + + +
+
+
+
- - - - - - - - - - - - -
- -
+ -
- - - - -
" readonly>
- - - - - - - - - - - - - - - - nettoyer($v['id']); - - if (est_anglophone()){ - if($this->nettoyer($v['demiJournee'])=="1"){ - $libelle = $this->nettoyer($v['libelleEng'])." (half day)"; - }else{ - $libelle = $this->nettoyer($v['libelleEng']); - } - - }else{ - if($this->nettoyer($v['demiJournee'])=="1"){ - $libelle = $this->nettoyer($v['libelle'])." (demi-journée)"; - }else{ - $libelle = $this->nettoyer($v['libelle']); - } - } - $dateFerier = $this->nettoyer($v['dateFerier']); - $day = jour_fr(date('D', strtotime($dateFerier))); - $jour = date('d', strtotime($dateFerier)); - $mois = mois_court_fr(date('F', strtotime($dateFerier))); - $ladate = $day." ".$jour."-".$mois."-".date('Y', strtotime($dateFerier)); - ?> - - - - - - - - - - - -
IDDate
nettoyer($v['codeSociete']);; ?>nettoyer($v['id']);; ?> - -
-
\ No newline at end of file + \ No newline at end of file diff --git a/Vue/Ajaxtblisterlocalite/index.php b/Vue/Ajaxtblisterlocalite/index.php index d36ac8f1..9f41df5f 100755 --- a/Vue/Ajaxtblisterlocalite/index.php +++ b/Vue/Ajaxtblisterlocalite/index.php @@ -1,88 +1,71 @@ - +
+
+
+
+ +
+ + 0 + +
+
+
- +
+
+ + + + + + + + + + + + + nettoyer($v['id']); + ?> + + + + + + + + + + +
nettoyer($v['codeSociete']) ?> + nettoyer($v['codeLocalite']) ?> + nettoyer($v['libelle']) ?>nettoyer($v['nomville']) ?> + + nettoyer($v['nompays']) ?> + + +
+
+
+
- - - - -
" readonly>
- - - - - - - - - - - - - - - - nettoyer($v['id']); - ?> - - - - - - - - - - - - -
Code
nettoyer($v['codeSociete']) ?>nettoyer($v['codeLocalite']) ?>nettoyer($v['libelle']) ?>nettoyer($v['nomville']) ?>nettoyer($v['nompays']) ?> - -
\ No newline at end of file + + + \ No newline at end of file diff --git a/Vue/Ajaxtblistermodepaiement/index.php b/Vue/Ajaxtblistermodepaiement/index.php index 835bf2c8..6719be18 100755 --- a/Vue/Ajaxtblistermodepaiement/index.php +++ b/Vue/Ajaxtblistermodepaiement/index.php @@ -1,95 +1,94 @@ - - +
+
+
+
+ +
+ + + +
+
+
- - - - -
" readonly>
- - - - - - - - - - - - - - - - nettoyer($v['id']); - if (est_anglophone()){ - $libelle = $this->nettoyer($v['libelleEng']); - $libtypepaie = $this->nettoyer($v['libtypeeng']); - }else{ - $libelle = $this->nettoyer($v['libelle']); - $libtypepaie = $this->nettoyer($v['libtypefr']); - } - ?> - - - - - - - - - - -
CodeType
nettoyer($v['codeSociete']);; ?> - nettoyer($v['codeModePaiement']) ?> - -
\ No newline at end of file +
+
+ + + + + + + + + + + + nettoyer($v['id']); + + // Gestion multilingue Centralisée + if (est_anglophone()){ + $libelle = $this->nettoyer($v['libelleEng']); + $libtypepaie = $this->nettoyer($v['libtypeeng']); + } else { + $libelle = $this->nettoyer($v['libelle']); + $libtypepaie = $this->nettoyer($v['libtypefr']); + } + ?> + + + + + + + + + +
Code
+ nettoyer($v['codeSociete']) ?> + + + nettoyer($v['codeModePaiement']) ?> + + + + + + + + + + +
+
+
+
+ + + + \ No newline at end of file diff --git a/Vue/Ajaxtblistermoyenpaiement/index.php b/Vue/Ajaxtblistermoyenpaiement/index.php index bc0b14dc..a47a3e3a 100755 --- a/Vue/Ajaxtblistermoyenpaiement/index.php +++ b/Vue/Ajaxtblistermoyenpaiement/index.php @@ -1,88 +1,91 @@ - - +
+
+
+
+ +
+ + + +
+
+
- - - - -
" readonly>
- - - - - - - - - - - - - - - - nettoyer($v['id']); - ?> - - - - - - - - - - - -
Code
nettoyer($v['codeSociete']);; ?> - nettoyer($v['codeMoyenPaiement']) ?>nettoyer($v['libelle']) ?>nettoyer($v['typepaiement']) ?>nettoyer($v['numeroCompte']) ?> - -
\ No newline at end of file +
+
+ + + + + + + + + + + + + nettoyer($v['id']); + ?> + + + + + + + + + + +
Code
+ nettoyer($v['codeSociete']) ?> + + + nettoyer($v['codeMoyenPaiement']) ?> + + + nettoyer($v['libelle']) ?> + + + + nettoyer($v['typepaiement']) ?> + + + + nettoyer($v['numeroCompte']) ?> + + + +
+
+
+
+ + + + \ No newline at end of file diff --git a/Vue/Ajaxtblisterpays/index.php b/Vue/Ajaxtblisterpays/index.php index 05a9f80b..f64eec2c 100755 --- a/Vue/Ajaxtblisterpays/index.php +++ b/Vue/Ajaxtblisterpays/index.php @@ -1,84 +1,62 @@ - +
+
+
+
+ +
+ + 0 + +
+
+
- +
+
+ + + + + + + + + + + nettoyer($v['id']); + ?> + + + + + + + + +
nettoyer($v['codeSociete']) ?> + nettoyer($v['codePays']) ?> + nettoyer($v['libelle']) ?> + +
+
+
+
- - - - -
" readonly>
- - - - - - - - - - - - - - nettoyer($v['id']); - ?> - - - - - - - - - - -
Code
nettoyer($v['codeSociete']) ?>nettoyer($v['codePays']) ?>nettoyer($v['libelle']) ?> - -
\ No newline at end of file + \ No newline at end of file diff --git a/Vue/Ajaxtblisterpointvente/index.php b/Vue/Ajaxtblisterpointvente/index.php index 4fad1491..1cd13110 100755 --- a/Vue/Ajaxtblisterpointvente/index.php +++ b/Vue/Ajaxtblisterpointvente/index.php @@ -1,88 +1,85 @@ - - +
+
+
+
+ +
+ + + +
+
+
- - - - -
" readonly>
- - - - - - - - - - - - - - - - nettoyer($v['id']); - ?> - - - - - - - - - - - -
CodeEmail
nettoyer($v['codeSociete']);; ?> - nettoyer($v['codePointVente']) ?>nettoyer($v['libelle'])?>nettoyer($v['telephone']) ?>nettoyer($v['email']) ?> - -
\ No newline at end of file +
+
+ + + + + + + + + + + + + nettoyer($v['id']); + ?> + + + + + + + + + + +
CodeEmail
+ nettoyer($v['codeSociete']) ?> + + + nettoyer($v['codePointVente']) ?> + + + nettoyer($v['libelle']) ?> + + nettoyer($v['telephone']) ?> + + nettoyer($v['email']) ?> + + +
+
+
+
+ + + + \ No newline at end of file diff --git a/Vue/Ajaxtblistersecteuractivite/index.php b/Vue/Ajaxtblistersecteuractivite/index.php index 411b26df..28c0750f 100755 --- a/Vue/Ajaxtblistersecteuractivite/index.php +++ b/Vue/Ajaxtblistersecteuractivite/index.php @@ -1,88 +1,58 @@ - +
+
+
+
+ +
+ + 0 + +
+
+
- +
+
+ + + + + + + + + + + nettoyer($v['id']); + $libelle = est_anglophone() ? $this->nettoyer($v['LibelleEng']) : $this->nettoyer($v['libelle']); + ?> + + + + + + + + +
nettoyer($v['codeSociete']) ?> + nettoyer($v['codeSecteur']) ?> + + +
+
+
+
- - - - -
" readonly>
- - - - - - - - - - - - - - nettoyer($v['id']); - $libelle = $this->nettoyer($v['libelle']); - if (est_anglophone()){ - $libelle = $this->nettoyer($v['LibelleEng']); - } - ?> - - - - - - - - - -
Code
nettoyer($v['codeSociete']);; ?> - nettoyer($v['codeSecteur']); ?> - -
\ No newline at end of file + \ No newline at end of file diff --git a/Vue/Ajaxtblisterservice/index.php b/Vue/Ajaxtblisterservice/index.php index 1f283159..684e6297 100755 --- a/Vue/Ajaxtblisterservice/index.php +++ b/Vue/Ajaxtblisterservice/index.php @@ -1,88 +1,58 @@ - +
+
+
+
+ +
+ + 0 + +
+
+
- +
+
+ + + + + + + + + + + nettoyer($v['id']); + $libelle = est_anglophone() ? $this->nettoyer($v['libelleEng']) : $this->nettoyer($v['libelle']); + ?> + + + + + + + + +
nettoyer($v['codeSociete']) ?> + nettoyer($v['codeService']) ?> + + +
+
+
+
- - - - -
" readonly>
- - - - - - - - - - - - - - nettoyer($v['id']); - $libelle = $this->nettoyer($v['libelle']); - if (est_anglophone()){ - $libelle = $this->nettoyer($v['libelleEng']); - } - ?> - - - - - - - - - - -
Code
nettoyer($v['codeSociete']) ?>nettoyer($v['codeService']) ?> - -
\ No newline at end of file + \ No newline at end of file diff --git a/Vue/Ajaxtblisterspecialite/index.php b/Vue/Ajaxtblisterspecialite/index.php index ae150417..6b25c451 100755 --- a/Vue/Ajaxtblisterspecialite/index.php +++ b/Vue/Ajaxtblisterspecialite/index.php @@ -1,89 +1,78 @@ - - +
+
+
+
+ +
+ + + +
+
+
- - - - -
" readonly>
- - - - - - - - - - - - - - nettoyer($v['id']); - $libelle = $this->nettoyer($v['libelle']); - - if (est_anglophone()){ - $libelle = $this->nettoyer($v['libelleEng']); - } - ?> - - - - - - - - - -
Code
nettoyer($v['codeSociete']);; ?> - nettoyer($v['codeSpecialite']) ?> - -
\ No newline at end of file +
+
+ + + + + + + + + + + nettoyer($v['id']); + $libelle = est_anglophone() ? $this->nettoyer($v['libelleEng']) : $this->nettoyer($v['libelle']); + ?> + + + + + + + + +
Code
+ nettoyer($v['codeSociete']) ?> + + + nettoyer($v['codeSpecialite']) ?> + + + + + +
+
+
+
+ + + + \ No newline at end of file diff --git a/Vue/Ajaxtblistertitre/index.php b/Vue/Ajaxtblistertitre/index.php index e7b680a6..febbacf5 100755 --- a/Vue/Ajaxtblistertitre/index.php +++ b/Vue/Ajaxtblistertitre/index.php @@ -1,90 +1,61 @@ - +
+
+
+
+ +
+ + 0 + +
+
+
- +
+
+ + + + + + + + + + + + nettoyer($v['id']); + $libelle = est_anglophone() ? $this->nettoyer($v['libelleEng']) : $this->nettoyer($v['libelle']); + ?> + + + + + + + + + +
nettoyer($v['codeSociete']) ?> + nettoyer($v['codeTitre']) ?> + nettoyer($v['titreCourrier']) ?> + +
+
+
+
- - - - -
" readonly>
- - - - - - - - - - - - - - - nettoyer($v['id']); - $libelle = $this->nettoyer($v['libelle']); - if (est_anglophone()){ - $libelle = $this->nettoyer($v['libelleEng']); - } - ?> - - - - - - - - - - - -
Code
nettoyer($v['codeSociete']) ?>nettoyer($v['codeTitre']) ?>nettoyer($v['titreCourrier']) ?> - -
\ No newline at end of file + \ No newline at end of file diff --git a/Vue/Ajaxtblistertypeaffection/index.php b/Vue/Ajaxtblistertypeaffection/index.php index 81cf4e24..ad7cf1f4 100755 --- a/Vue/Ajaxtblistertypeaffection/index.php +++ b/Vue/Ajaxtblistertypeaffection/index.php @@ -1,91 +1,92 @@ - - +
+
+
+
+ +
+ + + +
+
+
- - - - -
" readonly>
- - - - - - - - - - - - - - - nettoyer($v['id']); - $libelle = $this->nettoyer($v['libelle']); - - if (est_anglophone()){ - $libelle = $this->nettoyer($v['libelleEng']); - } - ?> - - - - - - - - - - -
Code ?
nettoyer($v['codeSociete']);; ?> - nettoyer($v['codeTypeAffection']) ?>nettoyer($v['maladieChronique'])==1)?'Oui':'Non' ?> - -
\ No newline at end of file +
+
+ + + + + + + + + + + + nettoyer($v['id']); + $libelle = est_anglophone() ? $this->nettoyer($v['libelleEng']) : $this->nettoyer($v['libelle']); + $isChronique = ($this->nettoyer($v['maladieChronique']) == 1); + ?> + + + + + + + + + +
Code
+ nettoyer($v['codeSociete']) ?> + + + nettoyer($v['codeTypeAffection']) ?> + + + + + + + + + + + + + + + +
+
+
+
+ + + + \ No newline at end of file diff --git a/Vue/Ajaxtblistertypepaiement/index.php b/Vue/Ajaxtblistertypepaiement/index.php index 210d7888..362e94fc 100755 --- a/Vue/Ajaxtblistertypepaiement/index.php +++ b/Vue/Ajaxtblistertypepaiement/index.php @@ -1,91 +1,78 @@ - - +
+
+
+
+ +
+ + + +
+
+
- - - - -
" readonly>
- - - - - - - - - - - - - - - nettoyer($v['id']); - if (est_anglophone()){ - $libelle = $this->nettoyer($v['libelleEng']); - }else{ - $libelle = $this->nettoyer($v['libelle']); - } - ?> - - - - - - - - - -
Code
nettoyer($v['codeSociete']);; ?> - nettoyer($v['codeTypePaiement']) ?> - -
\ No newline at end of file +
+
+ + + + + + + + + + + nettoyer($v['id']); + $libelle = est_anglophone() ? $this->nettoyer($v['libelleEng']) : $this->nettoyer($v['libelle']); + ?> + + + + + + + + +
Code
+ nettoyer($v['codeSociete']) ?> + + + nettoyer($v['codeTypePaiement']) ?> + + + + + +
+
+
+
+ + + + \ No newline at end of file diff --git a/Vue/Ajaxtblisterville/index.php b/Vue/Ajaxtblisterville/index.php index c07de50b..15a8bfa4 100755 --- a/Vue/Ajaxtblisterville/index.php +++ b/Vue/Ajaxtblisterville/index.php @@ -1,86 +1,62 @@ - +
+
+
+
+ +
+ + 0 + +
+
+
- +
+
+ + + + + + + + + + + + nettoyer($v['id']); + ?> + + + + + + + + + +
nettoyer($v['codeSociete']) ?> + nettoyer($v['codeVille']) ?> + nettoyer($v['libelle']) ?> + + nettoyer($v['pays']) ?> + + +
+
+
+
- - - - -
" readonly>
- - - - - - - - - - - - - - - nettoyer($v['id']); - ?> - - - - - - - - - - - -
Code
nettoyer($v['codeSociete']) ?>nettoyer($v['codeVille']) ?>nettoyer($v['libelle']) ?>nettoyer($v['pays']) ?> - -
\ No newline at end of file + \ No newline at end of file diff --git a/Vue/Ajaxtbmodifieractivite/index.php b/Vue/Ajaxtbmodifieractivite/index.php index ed743736..6a15d1da 100755 --- a/Vue/Ajaxtbmodifieractivite/index.php +++ b/Vue/Ajaxtbmodifieractivite/index.php @@ -1,18 +1,93 @@ -
- - - - - - - - - - - - - - - -
Code
-
\ No newline at end of file +
+
+
+ +
+
+ +
+
+ + +
+
+ +
+ + + + +
+
+ +
+ +
+ + FR + + +
+
+ +
+ +
+ + EN + + +
+
+
+
+
+
+ + + + \ No newline at end of file diff --git a/Vue/Ajaxtbmodifieraffection/index.php b/Vue/Ajaxtbmodifieraffection/index.php index 64ac00c5..49645a38 100755 --- a/Vue/Ajaxtbmodifieraffection/index.php +++ b/Vue/Ajaxtbmodifieraffection/index.php @@ -1,23 +1,93 @@ -
- - - - - - - - - - - - - - - - -
CodeType - -
-
\ No newline at end of file +
+
+
+ +
+
+ +
+
+ + +
+ +
+ +
+ + +
+
+ +
+ + +
+ +
+ +
+ + FR + + +
+
+ +
+ +
+ + EN + + +
+
+ +
+
+
+
+ + + + \ No newline at end of file diff --git a/Vue/Ajaxtbmodifierbanques/index.php b/Vue/Ajaxtbmodifierbanques/index.php index 432be3d7..914a3c89 100755 --- a/Vue/Ajaxtbmodifierbanques/index.php +++ b/Vue/Ajaxtbmodifierbanques/index.php @@ -1,33 +1,106 @@ -
- - - - - - - - - - - - - - - - - +
+
+
+ +
+
+ +
+ + -
- - - - - - -
Code
- - -
-
\ No newline at end of file +
+ +
+ +
+ + + + +
+
+ +
+ +
+ + +
+
+ +
+ +
+ + +
+
+ +
+ +
+ + +
+
+ +
+ +
+ + +
+
+ +
+ +
+ +
+
+ +
+ + + + + + + \ No newline at end of file diff --git a/Vue/Ajaxtbmodifierbureau/index.php b/Vue/Ajaxtbmodifierbureau/index.php index 805741f0..828bb4dd 100755 --- a/Vue/Ajaxtbmodifierbureau/index.php +++ b/Vue/Ajaxtbmodifierbureau/index.php @@ -1,32 +1,118 @@ -
- - - - - - - - - - - - - - - - - +
+
+
+ +
+
+ +
+ + -
- - - - - - - - - - -
Code
E-mail
-
\ No newline at end of file +
+
+ +
+ + +
+
+ +
+ +
+ + +
+
+ +
+ +
+ + +
+
+ +
+ +
+ + +
+
+ +
+ +
+ + +
+
+ +
+ +
+ + +
+
+ +
+ +
+ + +
+
+
+ + + + + + + \ No newline at end of file diff --git a/Vue/Ajaxtbmodifiercommerciaux/index.php b/Vue/Ajaxtbmodifiercommerciaux/index.php index 2344f449..54a1a14a 100755 --- a/Vue/Ajaxtbmodifiercommerciaux/index.php +++ b/Vue/Ajaxtbmodifiercommerciaux/index.php @@ -1,64 +1,139 @@ -
- - - - - - - - - - - - - +
+
+
+ +
+
+ +
+ + -
- - - - - - - - - - - +
+ +
+ +
+ + +
+
-
- - - - - - - - - - - - - - - - - -
CodeType - - - -
- - - -
">
-
\ No newline at end of file +
+ +
+ + +
+
+ +
+ + +
+ +
+ + +
+ +
+ + +
+ +
+ +
+ + +
+
+ +
+ +
+ + +
+
+ +
+ + +
+ +
+ +
+ + +
+
+ +
+ +
+ + +
+
+ +
+ +
+ + +
+
+ +
+ +
+ + +
+
+ + + + + + + + \ No newline at end of file diff --git a/Vue/Ajaxtbmodifierentetetrancheage/index.php b/Vue/Ajaxtbmodifierentetetrancheage/index.php index fb133231..fe0d4003 100755 --- a/Vue/Ajaxtbmodifierentetetrancheage/index.php +++ b/Vue/Ajaxtbmodifierentetetrancheage/index.php @@ -1,29 +1,95 @@ -
- - - - - - - - - - - - - - - - - - - - -
Code -
- -
-
\ No newline at end of file +
+
+
+ +
+
+ +
+
+ + +
+ +
+ +
+ + +
+
+ +
+ +
+ + FR + + +
+
+ +
+ +
+ + EN + + +
+
+ +
+ +
+ + +
+ +
+ +
+
+
+
+ + + + \ No newline at end of file diff --git a/Vue/Ajaxtbmodifieretendueterritoire/index.php b/Vue/Ajaxtbmodifieretendueterritoire/index.php index 6f08e696..8e5a1365 100755 --- a/Vue/Ajaxtbmodifieretendueterritoire/index.php +++ b/Vue/Ajaxtbmodifieretendueterritoire/index.php @@ -1,18 +1,90 @@ -
- - - - - - - - - - - - - - - -
Code
-
\ No newline at end of file +
+
+
+ +
+
+ +
+
+ + +
+
+ +
+ + +
+
+ +
+ +
+ + FR + + +
+
+ +
+ +
+ + EN + + +
+
+
+
+
+
+ + + + \ No newline at end of file diff --git a/Vue/Ajaxtbmodifierintermediaires/index.php b/Vue/Ajaxtbmodifierintermediaires/index.php index a985c7ba..c80d9e9b 100755 --- a/Vue/Ajaxtbmodifierintermediaires/index.php +++ b/Vue/Ajaxtbmodifierintermediaires/index.php @@ -1,53 +1,121 @@ -
- - - - - - - - - - - - - - - - - - + + - - - - - - - - - - - - - - - - - - - -
CodeType - -
E-mail - - - -
">
+
+
+
+ +
+
+ +
+
+
+ +
+ + +
+
+ +
+ +
+ + +
+
+ +
+ +
+ + +
+
+ +
+ +
+ + +
+
+
+ +
+
+ +
+ + +
+
+ +
+ +
+ + +
+
+ +
+ +
+ + +
+
+ +
+ +
+ + +
+
+
+ +
+
+ +
+ + "> +
+
+ +
+ +
+ + +
+
+ +
+ +
+ + +
+
+
+
+
\ No newline at end of file diff --git a/Vue/Ajaxtbmodifierjoursferiers/index.php b/Vue/Ajaxtbmodifierjoursferiers/index.php index e6b3b5a6..26815f3c 100755 --- a/Vue/Ajaxtbmodifierjoursferiers/index.php +++ b/Vue/Ajaxtbmodifierjoursferiers/index.php @@ -1,35 +1,77 @@ -
- - - - - - - - - - - - - - - - - - - - - - - - -
Date - - - -
+ + + +
+
+
+ +
+
+ +
+
+
+ +
+ + + + +
+
+ +
+ +
+ + + + +
+
+
+ +
+
+ +
+ + + + +
+
+ +
+ +
+ + + + +
+
+ +
+ +
+ + + + +
+
+
+
+
\ No newline at end of file diff --git a/Vue/Ajaxtbmodifierlocalite/index.php b/Vue/Ajaxtbmodifierlocalite/index.php index 8b4fafb4..d9cf2a54 100755 --- a/Vue/Ajaxtbmodifierlocalite/index.php +++ b/Vue/Ajaxtbmodifierlocalite/index.php @@ -1,31 +1,51 @@ -
- - - - - - - - - - - - - - - - - - -
Code - - -
- + + + +
+
+
+ +
+
+ +
+
+
+ +
+ + +
-
+ +
+ +
+ + +
+
+ +
+ +
+ + +
+
+ +
+ +
+ + +
+
+ + +
\ No newline at end of file diff --git a/Vue/Ajaxtbmodifiermodepaiement/index.php b/Vue/Ajaxtbmodifiermodepaiement/index.php index b5e08686..e0f98a08 100755 --- a/Vue/Ajaxtbmodifiermodepaiement/index.php +++ b/Vue/Ajaxtbmodifiermodepaiement/index.php @@ -1,28 +1,96 @@ -
- - - - - - - - - - - - - - - - - - - - - -
CodeType - -
-
\ No newline at end of file +
+
+
+ +
+
+ +
+
+ + +
+ +
+ + +
+ +
+ +
+ + FR + + +
+
+ +
+ +
+ + EN + + +
+
+ +
+ +
+ +
+
+ +
+ +
+ + +
+
+ +
+
+
+
+ + + + \ No newline at end of file diff --git a/Vue/Ajaxtbmodifiermoyenpaiement/index.php b/Vue/Ajaxtbmodifiermoyenpaiement/index.php index 97e5b40b..3141c8a8 100755 --- a/Vue/Ajaxtbmodifiermoyenpaiement/index.php +++ b/Vue/Ajaxtbmodifiermoyenpaiement/index.php @@ -1,26 +1,87 @@ -
- - - - - - - - - - - - - - - - - - - -
CodeType - -
-
\ No newline at end of file +
+
+
+ +
+
+ +
+
+ + +
+ +
+ +
+ + + + +
+
+ +
+ +
+ + +
+
+ +
+ + +
+ +
+ +
+ + +
+
+ +
+
+
+
+ + + + \ No newline at end of file diff --git a/Vue/Ajaxtbmodifierpays/index.php b/Vue/Ajaxtbmodifierpays/index.php index 64e74057..06a5e25c 100755 --- a/Vue/Ajaxtbmodifierpays/index.php +++ b/Vue/Ajaxtbmodifierpays/index.php @@ -1,15 +1,57 @@ -
- - - - - - - +
+
+
+ +
+
+ +
+ + -
- - - -
Code
-
\ No newline at end of file +
+
+ +
+ + +
+
+ +
+ +
+ + +
+
+
+ + + + + \ No newline at end of file diff --git a/Vue/Ajaxtbmodifierpointvente/index.php b/Vue/Ajaxtbmodifierpointvente/index.php index 1d0eb48f..9450ed96 100755 --- a/Vue/Ajaxtbmodifierpointvente/index.php +++ b/Vue/Ajaxtbmodifierpointvente/index.php @@ -1,65 +1,134 @@ -
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +
+
+
+ +
+
+ +
+ + -
- - - - - - -
CodeType - -
E-mailFax
- - -
- +
+ + +
+ +
+ + +
+
+ +
+ +
-
-
- +
+ + +
+ +
+ + +
+
+ +
+ +
+ + +
+
+ +
+ +
+ + +
+
+ +
+ +
-
-
\ No newline at end of file + +
+ +
+ +
+
+ +
+ +
+ +
+
+ + + + + + + + \ No newline at end of file diff --git a/Vue/Ajaxtbmodifiersecteuractivite/index.php b/Vue/Ajaxtbmodifiersecteuractivite/index.php index 56698c15..e9689776 100755 --- a/Vue/Ajaxtbmodifiersecteuractivite/index.php +++ b/Vue/Ajaxtbmodifiersecteuractivite/index.php @@ -1,18 +1,61 @@ -
- - - - - - - - - - - - - - - -
Code
+ + + +
+
+
+ +
+
+ +
+
+
+ +
+ + + + +
+
+ +
+ +
+ + + + +
+
+ +
+ +
+ + + + +
+
+
+
+
\ No newline at end of file diff --git a/Vue/Ajaxtbmodifierservice/index.php b/Vue/Ajaxtbmodifierservice/index.php index 09380af1..b44cef36 100755 --- a/Vue/Ajaxtbmodifierservice/index.php +++ b/Vue/Ajaxtbmodifierservice/index.php @@ -1,17 +1,61 @@ -
- - - - - - - - - - - - - - -
Code
+ + + +
+
+
+ +
+
+ +
+
+
+ +
+ + + + +
+
+ +
+ +
+ + + + +
+
+ +
+ +
+ + + + +
+
+
+
+
\ No newline at end of file diff --git a/Vue/Ajaxtbmodifierspecialite/index.php b/Vue/Ajaxtbmodifierspecialite/index.php index aefcff68..6dac20cf 100755 --- a/Vue/Ajaxtbmodifierspecialite/index.php +++ b/Vue/Ajaxtbmodifierspecialite/index.php @@ -1,18 +1,94 @@ -
- - - - - - - - - - - - - - - -
Code
-
\ No newline at end of file +
+
+
+ +
+
+ +
+
+ + +
+
+ +
+ + + + +
+
+ +
+ +
+ + FR + + +
+
+ +
+ +
+ + EN + + +
+
+
+
+
+
+ + + + \ No newline at end of file diff --git a/Vue/Ajaxtbmodifiertitre/index.php b/Vue/Ajaxtbmodifiertitre/index.php index 2935389a..80dcc847 100755 --- a/Vue/Ajaxtbmodifiertitre/index.php +++ b/Vue/Ajaxtbmodifiertitre/index.php @@ -1,34 +1,76 @@ -
- - - - - - - - - - - - - - - - - - - - - - - - - - - -
CodeTitre Courrier FR
- - Titre Courrier ENG
+ + + +
+
+
+ +
+
+ +
+
+
+ +
+ + +
+
+ +
+ +
+ + +
+
+ +
+ +
+ + +
+
+
+ +
+
+ +
+ + +
+
+ +
+ +
+ + +
+
+ +
+ +
+ + +
+
+
+
+
\ No newline at end of file diff --git a/Vue/Ajaxtbmodifiertypeaffection/index.php b/Vue/Ajaxtbmodifiertypeaffection/index.php index c71b226e..3217246a 100755 --- a/Vue/Ajaxtbmodifiertypeaffection/index.php +++ b/Vue/Ajaxtbmodifiertypeaffection/index.php @@ -1,26 +1,90 @@ -
- - - - - - - - - - - - - - - - - - -
Code - - -
-
\ No newline at end of file +
+
+
+ +
+
+ +
+
+ + +
+ +
+ +
+ + + + +
+
+ +
+ +
+ + FR + + +
+
+ +
+ +
+ + EN + + +
+
+ +
+ +
+ +
+
+ +
+
+
+
+ + + + \ No newline at end of file diff --git a/Vue/Ajaxtbmodifiertypepaiement/index.php b/Vue/Ajaxtbmodifiertypepaiement/index.php index 261fa63a..eae531c5 100755 --- a/Vue/Ajaxtbmodifiertypepaiement/index.php +++ b/Vue/Ajaxtbmodifiertypepaiement/index.php @@ -1,18 +1,97 @@ -
- - - - - - - - - - - - - - - -
Code
-
\ No newline at end of file +
+
+
+ +
+
+ +
+
+ + +
+ +
+ +
+ + + + +
+
+ +
+ +
+ + FR + + +
+
+ +
+ +
+ + EN + + +
+
+ +
+
+
+
+ + + + \ No newline at end of file diff --git a/Vue/Ajaxtbmodifierville/index.php b/Vue/Ajaxtbmodifierville/index.php index 9e0ef290..aab3bdfe 100755 --- a/Vue/Ajaxtbmodifierville/index.php +++ b/Vue/Ajaxtbmodifierville/index.php @@ -1,22 +1,58 @@ -
- - - - - - - - - - + + + +
+
+
+ +
+
+ +
+
+
+ +
+ + + + +
+
-
- - - -
CodeType - -
+
+ +
+ + + + +
+
+ +
+ +
+ + + + +
+
+ + +
\ No newline at end of file diff --git a/Vue/Ajaxtrancheage/affichertrancheage.php b/Vue/Ajaxtrancheage/affichertrancheage.php index 99473e27..b9a9e01c 100755 --- a/Vue/Ajaxtrancheage/affichertrancheage.php +++ b/Vue/Ajaxtrancheage/affichertrancheage.php @@ -1,71 +1,93 @@ +
+
+ + + + + + + + + -
+
+ + +
+
+
+ + +
+
- - - - - - - - - - - - - + + + + + - ' '): ?> - - - - + + + + + + + + + + + + + + + + + + + +
- -
- - - -
+
+ +
+
-
-

-
-
nettoyer($tranheage['codeTrancheAge']) ?>nettoyer($tranheage['ageMin']) ?> nettoyer($tranheage['ageMax']) ?> + + + +
+
+
- - + - - - - - nettoyer($tranheage['codeTrancheAge']) ?> - nettoyer($tranheage['ageMin']) ?> - nettoyer($tranheage['ageMax']) ?> - - - - - - - - - - - - \ No newline at end of file + \ No newline at end of file diff --git a/Vue/Autresparametresgeneraux/index.php b/Vue/Autresparametresgeneraux/index.php index 5ee20d90..710ad35a 100755 --- a/Vue/Autresparametresgeneraux/index.php +++ b/Vue/Autresparametresgeneraux/index.php @@ -2,7 +2,7 @@ -
+
@@ -21,7 +21,7 @@
-