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

This commit is contained in:
KANE LAZENI 2026-02-18 10:24:16 +00:00
commit d197ec4b0b
14 changed files with 289 additions and 214 deletions

File diff suppressed because one or more lines are too long

View File

@ -1,20 +0,0 @@
<?php
require_once 'Framework/Controleur.php';
require_once 'Modele/Police.php';
class ControleurAjaxlisterpolicesclient extends Controleur {
private $police;
public function __construct()
{
$this->police = new Police();
}
public function index()
{
$vue = $this->requete->getParametreFormulaire("vue");
$polices = $this->police->getPoliceRh();
$this->genererVueAjax(array('vue' => $vue, 'polices' => $polices));
}
}

View File

@ -0,0 +1,18 @@
<?php
require_once 'Framework/Controleur.php';
require_once 'Modele/Police.php';
class ControleurAjaxsessionvue extends Controleur {
private $police;
public function __construct()
{
$this->police = new Police();
}
public function index()
{
$vue = $this->requete->getParametreFormulaire("vue");
$_SESSION['vueActive'] = $vue;
}
}

View File

@ -0,0 +1,24 @@
<?php
require_once 'Framework/Controleur.php';
require_once 'Modele/Menuvueutilisateur.php';
require_once 'Modele/Police.php';
class ControleurChoisirpolice extends Controleur {
private $police;
public function __construct()
{
$this->menuvue = new Menuvueutilisateur();
$this->menuvue->getMenuVue("Choisirpolice");
$this->police = new Police();
}
public function index()
{
$vue = $_SESSION["vueActive"];
$polices = $this->police->getPoliceRh();
$this->genererVue(array('vue' => $vue, 'polices' => $polices));
}
}

View File

@ -118,9 +118,8 @@ async function showMessageDeconnexion()
await alert_ebene(msg, msgEng).then(() => {
// Ce code ne sexécute quaprès clic sur OK
setInterval(() => {
window.location.assign($("#racineWeb" ).val()+"Connexion/deconnecter/");
}, 20000);
window.location.assign($("#racineWeb" ).val()+"Connexion/deconnecter/");
});
}
@ -3041,7 +3040,14 @@ function importer_modele_assure(idAvenant) {
}
var div_export = $('#div_exporter_liste_assures');
div_export.html('<div class="text-center py-5"><div class="spinner-border text-info" role="status"></div><p class="mt-2">Analyse du fichier et liaison à l\'avenant...</p></div>');
const codeLangue = $("#codeLangue").val();
if(codeLangue === "en_US") {
div_export.html('<div class="text-center py-5"><div class="spinner-border text-info" role="status"></div><p class="mt-2">Analyze the file and attach it to the amendment.</p></div>');
} else{
div_export.html('<div class="text-center py-5"><div class="spinner-border text-info" role="status"></div><p class="mt-2">Analyse du fichier et liaison à l\'avenant...</p></div>');
}
var donnees = {
idAvenant: idAvenant,
@ -4529,6 +4535,7 @@ function consulterfactureged_pop()
});
}
function lister_polices_client(id) {
const vues = {
1: "Rechercherassure",
@ -4537,61 +4544,26 @@ function lister_polices_client(id) {
};
vue = vues[id] || null; // null si id ne correspond à rien
if(vue != null){
donnees = 'vue='+vue;
$.ajax({
url: $("#racineWeb").val()+"Ajaxsessionvue/",
type : 'post',
data: donnees,
error: function(errorData) {
},
complete: function() {
window.location.assign($("#racineWeb" ).val()+"Choisirpolice/");
}
});
}
const modalEl = document.getElementById('pop_police');
// On déplace le modal directement sous <body> s'il n'y est pas déjà.
// Cela permet de passer outre les z-index des conteneurs parents (Sidebar, Header).
if (modalEl.parentElement !== document.body) {
document.body.appendChild(modalEl);
}
const racine = $("#racineWeb").val() || "/";
const divPolice = document.getElementById('div_police');
/* ===================================================
* Préparation visuelle (Spinner)
* =================================================== */
showLoader("#div_police", { size: 3 });
/* ===================================================
* Initialisation de l'instance Bootstrap
* =================================================== */
const modal = bootstrap.Modal.getOrCreateInstance(modalEl, {
backdrop: 'static',
keyboard: false
});
/* ===================================================
* Gestion de l'événement d'affichage et AJAX
* =================================================== */
// On utilise 'shown.bs.modal' pour lancer l'AJAX une fois le modal visible
$(modalEl).one('shown.bs.modal', function () {
$.ajax({
url: racine + "Ajaxlisterpolicesclient/",
type: 'POST',
data: { vue: vue },
success: function (data) {
divPolice.innerHTML = data;
},
error: function (xhr, status, error) {
divPolice.innerHTML = `
<div class="alert alert-danger m-3 shadow-sm">
<strong>Erreur :</strong> Impossible de générer la liste des polices.
<small class="d-block text-muted mt-1">${error}</small>
</div>
`;
}
});
});
/* ===================================================
* 6. Affichage final
* =================================================== */
modal.show();
}
function ajax_contexter_police(){
idPolice = $("#idPolice").val();
@ -4609,11 +4581,28 @@ function ajax_contexter_police(){
}
function ouvrir_vue(vue)
{
window.location.assign($("#racineWeb" ).val()+vue+"/");
function ouvrir_vue(vue) {
idPolice = $("#idPolice").val();
if (idPolice<=" ")
{
v_msg="Veuillez sélectionner une police!";
v_msgEng="Please select a policy!";
alert_ebene(v_msg, v_msgEng).then(() => {
// Ce code ne sexécute quaprès clic sur OK
$("#idPolice").focus();
return;
});
return;
}
window.location.assign($("#racineWeb").val() + vue + "/");
}
function afficher_users_client_id(idUtilisateur)
{
window.location.assign($("#racineWeb" ).val()+"Ficheuserrhclient/"+idUtilisateur+"/");

View File

@ -23,6 +23,7 @@ class Emission extends Modele {
public function getbeneficiaireprimeadherent($idAdherent, $debutPeriode, $finPeriode)
{
/*
if (est_anglophone())
{
$sql = 'call sp_get_beneficiaire_prime_adherent_eng(?, ?, ?)';
@ -31,6 +32,9 @@ class Emission extends Modele {
{
$sql = 'call sp_get_beneficiaire_prime_adherent(?, ?, ?)';
}
*/
$sql = 'call sp_get_beneficiaire_prime_adherent(?, ?, ?)';
$resultat = $this->executerRequete($sql, array($idAdherent, $debutPeriode, $finPeriode));

View File

@ -5,13 +5,13 @@
<th colspan="4" class="text-center text-uppercase small py-3" style="letter-spacing: 1px;">
<i class="fa-solid fa-sigma me-2"></i><?= _("Total Général") ?>
</th>
<th class="text-center h6 mb-0"><?= format_N($this->nettoyer($beneficiaires_total['primeNetteTotal'])) ?></th>
<th class="text-center h6 mb-0"><?= format_N($this->nettoyer($beneficiaires_total['commissionTotal'])) ?></th>
<th class="text-center h6 mb-0"><?= format_N($this->nettoyer($beneficiaires_total['commissionAutreTotal'])) ?></th>
<th class="text-center h6 mb-0"><?= format_N($this->nettoyer($beneficiaires_total['accessoireTotal'])) ?></th>
<th class="text-center h6 mb-0"><?= format_N($this->nettoyer($beneficiaires_total['taxeTotal'])) ?></th>
<th class="text-center h6 mb-0"><?= format_N($this->nettoyer($beneficiaires_total['fraisCarteTotal'])) ?></th>
<th class="text-center h5 mb-0 text-warning"><?= format_N($this->nettoyer($beneficiaires_total['primeTtcTotal'])) ?></th>
<th class="text-center h6 mb-0"><?= is_array($beneficiaires_total) ? format_N($this->nettoyer($beneficiaires_total['primeNetteTotal'])) : '0'; ?></th>
<th class="text-center h6 mb-0"><?= is_array($beneficiaires_total) ? format_N($this->nettoyer($beneficiaires_total['commissionTotal'])) : '0'; ?></th>
<th class="text-center h6 mb-0"><?= is_array($beneficiaires_total) ? format_N($this->nettoyer($beneficiaires_total['commissionAutreTotal'])) : '0'; ?></th>
<th class="text-center h6 mb-0"><?= is_array($beneficiaires_total) ? format_N($this->nettoyer($beneficiaires_total['accessoireTotal'])) : '0'; ?></th>
<th class="text-center h6 mb-0"><?= is_array($beneficiaires_total) ? format_N($this->nettoyer($beneficiaires_total['taxeTotal'])) : '0'; ?></th>
<th class="text-center h6 mb-0"><?= is_array($beneficiaires_total) ? format_N($this->nettoyer($beneficiaires_total['fraisCarteTotal'])) : '0'; ?></th>
<th class="text-center h5 mb-0 text-warning"><?= is_array($beneficiaires_total) ? format_N($this->nettoyer($beneficiaires_total['primeTtcTotal'])) : '0'; ?></th>
</tr>
<tr class="bg-secondary bg-opacity-25 small text-uppercase">
<th class="text-center border-0 fw-bold"><?= _("Effet") ?></th>
@ -57,13 +57,13 @@
<tfoot class="table-light">
<tr class="fw-bold">
<td colspan="4" class="text-end text-uppercase small pe-4"><?= _("Sous-Total") ?></td>
<td class="text-center"><?= format_N($this->nettoyer($beneficiaires_total['primeNetteTotal'])) ?></td>
<td class="text-center"><?= format_N($this->nettoyer($beneficiaires_total['commissionTotal'])) ?></td>
<td class="text-center"><?= format_N($this->nettoyer($beneficiaires_total['commissionAutreTotal'])) ?></td>
<td class="text-center"><?= format_N($this->nettoyer($beneficiaires_total['accessoireTotal'])) ?></td>
<td class="text-center"><?= format_N($this->nettoyer($beneficiaires_total['taxeTotal'])) ?></td>
<td class="text-center"><?= format_N($this->nettoyer($beneficiaires_total['fraisCarteTotal'])) ?></td>
<td class="text-center text-primary"><?= format_N($this->nettoyer($beneficiaires_total['primeTtcTotal'])) ?></td>
<td class="text-center"><?= is_array($beneficiaires_total) ? format_N($this->nettoyer($beneficiaires_total['primeNetteTotal'])) : '0'; ?></td>
<td class="text-center"><?= is_array($beneficiaires_total) ? format_N($this->nettoyer($beneficiaires_total['commissionTotal'])) : '0'; ?></td>
<td class="text-center"><?= is_array($beneficiaires_total) ? format_N($this->nettoyer($beneficiaires_total['commissionAutreTotal'])) : '0'; ?></td>
<td class="text-center"><?= is_array($beneficiaires_total) ? format_N($this->nettoyer($beneficiaires_total['accessoireTotal'])) : '0'; ?></td>
<td class="text-center"><?= is_array($beneficiaires_total) ? format_N($this->nettoyer($beneficiaires_total['taxeTotal'])) : '0'; ?></td>
<td class="text-center"><?= is_array($beneficiaires_total) ? format_N($this->nettoyer($beneficiaires_total['fraisCarteTotal'])) : '0'; ?></td>
<td class="text-center text-primary"><?= is_array($beneficiaires_total) ? format_N($this->nettoyer($beneficiaires_total['primeTtcTotal'])) : '0'; ?></td>
</tr>
</tfoot>
</table>

View File

@ -1,4 +1,5 @@
<div id="div_remplacement_adherent">
<!-- -->
<div class="card border-primary shadow-sm mb-4">
<div class="card-body py-2 bg-light">
<div class="row g-2 align-items-center">
@ -62,22 +63,30 @@
<div class="card-body p-4">
<div class="row g-3 mb-4">
<div class="col-md-6">
<label class="form-label small fw-bold text-uppercase"><?= _("Nom") ?></label>
<label class="form-label small fw-bold text-uppercase">
<?= _("Nom") ?><span class="required-star">*</span>
</label>
<input class="form-control text-uppercase border-success" type="text" id="nom" name="nom" required>
</div>
<div class="col-md-6">
<label class="form-label small fw-bold text-uppercase"><?= _("Prénoms") ?></label>
<label class="form-label small fw-bold text-uppercase">
<?= _("Prénoms") ?><span class="required-star">*</span>
</label>
<input class="form-control border-success" type="text" id="prenoms" name="prenoms" required>
</div>
<div class="col-md-4">
<label class="form-label small fw-bold text-uppercase"><?= _("Nature Pièce") ?></label>
<select class="form-select" id="codeNaturePiece" name="codeNaturePiece">
<label class="form-label small fw-bold text-uppercase">
<?= _("Nature Pièce") ?><span class="required-star">*</span>
</label>
<select class="form-select" id="codeNaturePiece" name="codeNaturePiece" required>
<?php liste_options($naturepiece,""); ?>
</select>
</div>
<div class="col-md-4">
<label class="form-label small fw-bold text-uppercase"><?= _("N° Pièce") ?></label>
<label class="form-label small fw-bold text-uppercase">
<?= _("N° Pièce") ?><span class="required-star">*</span>
</label>
<input class="form-control" type="text" id="numeroPiece" name="numeroPiece" onblur="controler_piece_beneficiaire();"
required autocomplete="off">
</div>
@ -87,13 +96,17 @@
</div>
<div class="col-md-4">
<label class="form-label small fw-bold text-uppercase"><?= _("Genre") ?></label>
<select class="form-select" id="sexe" name="sexe">
<label class="form-label small fw-bold text-uppercase">
<?= _("Genre") ?><span class="required-star">*</span>
</label>
<select class="form-select" id="sexe" name="sexe" required>
<?php liste_options($sexe,""); ?>
</select>
</div>
<div class="col-md-4">
<label class="form-label fw-bold small text-uppercase"><?= _("Date de Naissance") ?></label>
<label class="form-label fw-bold small text-uppercase">
<?= _("Date de Naissance") ?><span class="required-star">*</span>
</label>
<div class="input-group">
<span class="input-group-text bg-white text-muted"><i class="fas fa-calendar-alt"></i></span>
<input type="text" class="form-control datepicker" id="dateNaissance" name="dateNaissance" required
@ -141,8 +154,10 @@
</div>
<div class="col-md-4">
<label class="form-label small fw-bold text-uppercase"><?= _("Téléphone Portable") ?></label>
<input class="form-control" type="tel" id="telephonePortable" name="telephonePortable" value="<?= $_SESSION['indicatifTelephone'] ?>">
<label class="form-label small fw-bold text-uppercase">
<?= _("Téléphone Portable") ?><span class="required-star">*</span>
</label>
<input class="form-control" type="tel" id="telephonePortable" name="telephonePortable" value="<?= $_SESSION['indicatifTelephone'] ?>" required>
</div>
<div class="col-md-4">
<label class="form-label small fw-bold text-uppercase"><?= _("E-mail") ?></label>

View File

@ -72,7 +72,7 @@
</tr>
<tr class="bg-light text-dark small text-center border-bottom">
<th class="sticky-col bg-light"><?= _("Nom & Prénoms") ?></th>
<th class="border-end"> Adh</th>
<th class="border-end"><?= est_anglophone() ? "Memb No" : "N° Adh"; ?></th>
<th>Stat</th>
<th class="border-end">TTC</th>
<?php foreach ($natures as $n): ?><th><?= $n ?></th><?php endforeach; ?>

View File

@ -1,5 +1,6 @@
<div id="div_police" class="p-3 bg-white rounded shadow-sm border">
<div id="div_police" class="container-fluid py-1 animate__animated animate__fadeIn">
<h1 class="text-primary"><i class="bi bi-file-earmark-text me-2"></i><?= _('Sélectionner une police') ?></h1>
<div class="row g-3 align-items-end">
<div class="col-md-7">
<label for="idPolice" class="form-label extra-small fw-bold text-muted text-uppercase mb-2">

View File

@ -26,35 +26,47 @@
<div class="card-body p-4">
<div class="row g-3">
<div class="col-md-6">
<label class="form-label fw-bold small text-uppercase"><?= _("Collège") ?></label>
<label class="form-label fw-bold small text-uppercase">
<?= _("Collège") ?><span class="required-star">*</span>
</label>
<select class="form-select border-primary-subtle" id="idCollege" name="idCollege" required autofocus onChange="prorater_prime_adherent();">
<?php liste_options($college,""); ?>
</select>
</div>
<div class="col-md-6">
<label class="form-label fw-bold small text-uppercase"><?= _("Avenant") ?></label>
<label class="form-label fw-bold small text-uppercase">
<?= _("Avenant") ?><span class="required-star">*</span>
</label>
<select class="form-select" id="idAvenant" name="idAvenant" required onChange="changer_avenant_incorporation();">
<?php liste_options($avenant,""); ?>
</select>
</div>
<div class="col-md-6">
<label class="form-label fw-bold small text-uppercase"><?= _("Nom de l'adhérent") ?></label>
<label class="form-label fw-bold small text-uppercase">
<?= _("Nom de l'adhérent") ?><span class="required-star">*</span>
</label>
<input type="text" class="form-control text-uppercase fw-bold" id="nom" name="nom" required>
</div>
<div class="col-md-6">
<label class="form-label fw-bold small text-uppercase"><?= _("Prénoms") ?></label>
<label class="form-label fw-bold small text-uppercase">
<?= _("Prénoms") ?><span class="required-star">*</span>
</label>
<input type="text" class="form-control" id="prenoms" name="prenoms" required>
</div>
<div class="col-md-4">
<label class="form-label fw-bold small text-uppercase"><?= _("Nature Pièce") ?></label>
<label class="form-label fw-bold small text-uppercase">
<?= _("Nature Pièce") ?><span class="required-star">*</span>
</label>
<select class="form-select" id="codeNaturePiece" name="codeNaturePiece" required onChange="controler_piece_beneficiaire();">
<?php liste_options($naturepiece,""); ?>
</select>
</div>
<div class="col-md-4">
<label class="form-label fw-bold small text-uppercase"><?= _("N° de Pièce") ?></label>
<label class="form-label fw-bold small text-uppercase">
<?= _("N° de Pièce") ?><span class="required-star">*</span>
</label>
<input type="text" class="form-control" id="numeroPiece" name="numeroPiece" onblur="controler_piece_beneficiaire();" required autocomplete="off">
</div>
<div class="col-md-4 d-flex align-items-end">
@ -62,13 +74,17 @@
</div>
<div class="col-md-2">
<label class="form-label fw-bold small text-uppercase"><?= _("Genre") ?></label>
<label class="form-label fw-bold small text-uppercase">
<?= _("Genre") ?><span class="required-star">*</span>
</label>
<select class="form-select" id="sexe" name="sexe" required>
<?php liste_options($sexe,""); ?>
</select>
</div>
<div class="col-md-3">
<label class="form-label fw-bold small text-uppercase"><?= _("Date de Naissance") ?></label>
<label class="form-label fw-bold small text-uppercase">
<?= _("Date de Naissance") ?><span class="required-star">*</span>
</label>
<div class="input-group">
<span class="input-group-text bg-white text-muted"><i class="fas fa-calendar-alt"></i></span>
<input type="text" class="form-control datepicker" id="dateNaissance" name="dateNaissance" required
@ -79,13 +95,17 @@
<input type="text" id="agepersonne" name="agepersonne" class="form-control-plaintext text-danger fw-bold text-center border-bottom" value="Age : 0" disabled>
</div>
<div class="col-md-2">
<label class="form-label fw-bold small text-uppercase"><?= _("Groupe Sanguin") ?></label>
<label class="form-label fw-bold small text-uppercase">
<?= _("Groupe Sanguin") ?><span class="required-star">*</span>
</label>
<select class="form-select" id="codeGroupeSanguin" name="codeGroupeSanguin" required>
<?php liste_options($groupesanguin,""); ?>
</select>
</div>
<div class="col-md-3">
<label class="form-label fw-bold small text-uppercase"><?= _("Situation Familiale") ?></label>
<label class="form-label fw-bold small text-uppercase">
<?= _("Situation Familiale") ?><span class="required-star">*</span>
</label>
<select class="form-select" id="codeSituationFamille" name="codeSituationFamille" required>
<?php liste_options($situationfamille,""); ?>
</select>
@ -103,13 +123,17 @@
<div class="card-body p-4">
<div class="row g-3">
<div class="col-md-4">
<label class="form-label fw-bold small text-uppercase"><?= _("Pays") ?></label>
<label class="form-label fw-bold small text-uppercase">
<?= _("Pays") ?><span class="required-star">*</span>
</label>
<select class="form-select" id="codePays" name="codePays" required onChange="ajaxListerVille();">
<?php liste_options($pays, $codePays); ?>
</select>
</div>
<div class="col-md-4">
<label class="form-label fw-bold small text-uppercase"><?= (isset($_SESSION['affichagedynamique']['Province'])) ? _($_SESSION['affichagedynamique']['Province']) : _("Province") ?></label>
<label class="form-label fw-bold small text-uppercase">
<?= (isset($_SESSION['affichagedynamique']['Province'])) ? _($_SESSION['affichagedynamique']['Province']) : _("Province") ?><span class="required-star">*</span>
</label>
<div id="listeville">
<select class="form-select" id="codeVille" name="codeVille" required onChange="ajaxListerLocalite();">
<?php liste_options($ville, $codeVille); ?>
@ -117,7 +141,9 @@
</div>
</div>
<div class="col-md-4">
<label class="form-label fw-bold small text-uppercase"><?= (isset($_SESSION['affichagedynamique']['Commune'])) ? _($_SESSION['affichagedynamique']['Commune']) : _("Commune") ?></label>
<label class="form-label fw-bold small text-uppercase">
<?= (isset($_SESSION['affichagedynamique']['Commune'])) ? _($_SESSION['affichagedynamique']['Commune']) : _("Commune") ?><span class="required-star">*</span>
</label>
<div id="listelocalite">
<select class="form-select" id="codeLocalite" name="codeLocalite" required>
<?php liste_options($localite, $codeLocalite); ?>
@ -138,7 +164,9 @@
</div>
<div class="col-md-6">
<label class="form-label fw-bold small text-uppercase"><?= _("Téléphone Portable") ?></label>
<label class="form-label fw-bold small text-uppercase">
<?= _("Téléphone Portable") ?><span class="required-star">*</span>
</label>
<div class="input-group">
<span class="input-group-text bg-white text-muted"><i class="fas fa-mobile-alt"></i></span>
<input type="tel" class="form-control" id="telephonePortable" name="telephonePortable" required minlength="12">
@ -161,7 +189,9 @@
<div class="card-body p-4 d-flex flex-column justify-content-between">
<div>
<div class="mb-3">
<label class="form-label fw-bold small text-uppercase"><?= _("Date d'Entrée") ?></label>
<label class="form-label fw-bold small text-uppercase">
<?= _("Date d'Entrée") ?><span class="required-star">*</span>
</label>
<div id="div_date_avenant">
<input type="text" class="form-control datepicker fw-bold text-uppercase" id="dateEntree" name="dateEntree"
value="<?= dateLang($_SESSION['dateAvenant_C'], $_SESSION['lang']) ?>" required onChange="prorater_prime_adherent();">
@ -169,7 +199,9 @@
</div>
<div class="row g-2 mb-4">
<div class="col-7">
<label class="form-label fw-bold small text-uppercase"><?= _("Prorata?") ?></label>
<label class="form-label fw-bold small text-uppercase">
<?= _("Prorata?") ?><span class="required-star">*</span>
</label>
<select class="form-select form-select-sm" id="prorata" name="prorata" required onChange="prorater_prime_adherent();">
<?php liste_options($ouinonprorata,"1",true); ?>
</select>

View File

@ -27,21 +27,27 @@
<h5 class="mb-3 text-secondary small text-uppercase fw-bold"><?= _("Paramètres d'inclusion") ?></h5>
<div class="mb-3">
<label class="form-label small fw-bold text-uppercase"><?= _("Avenant") ?></label>
<label class="form-label small fw-bold text-uppercase">
<?= _("Avenant") ?><span class="required-star">*</span>
</label>
<select class="form-select form-select-sm shadow-sm border-primary" id="idAvenant" name="idAvenant" required autofocus onChange="changer_avenant_incorporation_beneficiaire();">
<?php liste_options($avenant,""); ?>
</select>
</div>
<div class="mb-3">
<label class="form-label small fw-bold text-uppercase"><?= _("Date d'Entrée") ?></label>
<label class="form-label small fw-bold text-uppercase">
<?= _("Date d'Entrée") ?><span class="required-star">*</span>
</label>
<div id="div_date_avenant">
<input class="form-control form-control-sm datepicker" type="text" id="dateEntree" name="dateEntree" value="<?= dateLang($_SESSION['dateAvenant_C'], $_SESSION['lang']) ?>" required onChange="prorater_prime_beneficiaire();">
</div>
</div>
<div class="mb-3">
<label class="form-label small fw-bold text-uppercase"><?= _("Option de Prorata") ?></label>
<label class="form-label small fw-bold text-uppercase">
<?= _("Option de Prorata") ?><span class="required-star">*</span>
</label>
<select class="form-select form-select-sm" id="prorata" name="prorata" required onChange="prorater_prime_beneficiaire();">
<?php liste_options($ouinonprorata,"1",true); ?>
</select>
@ -53,24 +59,32 @@
<div class="row g-2 mb-3">
<div class="col-md-5">
<label class="form-label small fw-bold text-uppercase"><?= _("Nom") ?></label>
<label class="form-label small fw-bold text-uppercase">
<?= _("Nom") ?><span class="required-star">*</span>
</label>
<input class="form-control form-control-sm fw-bold shadow-sm" type="text" id="nomBeneficiaire" name="nomBeneficiaire" value="<?= $adherent['nom'] ?>" required style="text-transform: uppercase;">
</div>
<div class="col-md-7">
<label class="form-label small fw-bold text-uppercase"><?= _("Prénoms") ?></label>
<label class="form-label small fw-bold text-uppercase">
<?= _("Prénoms") ?><span class="required-star">*</span>
</label>
<input class="form-control form-control-sm shadow-sm" type="text" id="prenomsBeneficiaire" name="prenomsBeneficiaire" required>
</div>
</div>
<div class="row g-2 mb-3">
<div class="col-md-6">
<label class="form-label small fw-bold text-uppercase"><?= _("Lien Parenté") ?></label>
<label class="form-label small fw-bold text-uppercase">
<?= _("Lien Parenté") ?><span class="required-star">*</span>
</label>
<select class="form-select form-select-sm" id="codeLienParente" name="codeLienParente" required onChange="filtrergenreconjoint();">
<?php liste_options($lienparente,""); ?>
</select>
</div>
<div class="col-md-6">
<label class="form-label small fw-bold text-uppercase"><?= _("Genre") ?></label>
<label class="form-label small fw-bold text-uppercase">
<?= _("Genre") ?><span class="required-star">*</span>
</label>
<select class="form-select form-select-sm" id="sexe" name="sexe" required>
<?php liste_options($sexe,""); ?>
</select>
@ -79,7 +93,9 @@
<div class="row g-2 mb-3">
<div class="col-md-6">
<label class="form-label small fw-bold text-uppercase"><?= _("Date de Naissance") ?></label>
<label class="form-label small fw-bold text-uppercase">
<?= _("Date de Naissance") ?><span class="required-star">*</span>
</label>
<input class="form-control form-control-sm datepicker" type="text" id="dateNaissance" name="dateNaissance" required onchange="controle_age($('#dateNaissance').datepicker('getDate'), $('#codeLienParente').val())">
</div>
<div class="col-md-6">
@ -94,25 +110,33 @@
<div class="card col-md-12">
<div class="row g-3">
<div class="col-md-3">
<label class="form-label small fw-bold text-uppercase"><?= _("Nature Pièce") ?></label>
<label class="form-label small fw-bold text-uppercase">
<?= _("Nature Pièce") ?><span class="required-star">*</span>
</label>
<select class="form-select form-select-sm" id="codeNaturePiece" name="codeNaturePiece" required onChange="javascript:controler_piece_beneficiaire();">
<?php liste_options($naturepiece,""); ?>
</select>
</div>
<div class="col-md-3">
<label class="form-label small fw-bold text-uppercase"><?= _("N° Pièce") ?></label>
<label class="form-label small fw-bold text-uppercase">
<?= _("N° Pièce") ?><span class="required-star">*</span>
</label>
<input class="form-control form-control-sm" type="text" id="numeroPiece" name="numeroPiece" onblur="javascript:controler_piece_beneficiaire();" required autocomplete="off">
<div id="div_controle_piece" class="mt-1 small"></div>
</div>
<div class="col-md-3">
<label class="form-label small fw-bold text-uppercase"><?= _("Groupe Sanguin") ?></label>
<label class="form-label small fw-bold text-uppercase">
<?= _("Groupe Sanguin") ?><span class="required-star">*</span>
</label>
<select class="form-select form-select-sm" id="codeGroupeSanguin" name="codeGroupeSanguin" required>
<?php liste_options($groupesanguin,""); ?>
</select>
</div>
<div class="col-md-3">
<label class="form-label small fw-bold text-uppercase"><?= _("Téléphone") ?></label>
<input class="form-control form-control-sm" type="tel" id="telephonePortable" name="telephonePortable" autocomplete="off">
<label class="form-label small fw-bold text-uppercase">
<?= _("Portable") ?><span class="required-star">*</span>
</label>
<input class="form-control form-control-sm" type="tel" id="telephonePortable" name="telephonePortable" required autocomplete="off">
</div>
</div>
</div>

View File

@ -68,10 +68,6 @@
<div id="div_liste_assure_importe" class="card shadow-sm border-0">
<div class="card-header bg-white py-3 d-flex justify-content-between align-items-center">
<h5 class="mb-0 fw-bold text-secondary"><i class="fas fa-users me-2"></i><?= _("Détail des bénéficiaires") ?></h5>
<div class="btn-group">
<button class="btn btn-sm btn-outline-secondary" onclick="exportExcel()">Excel</button>
<button class="btn btn-sm btn-outline-secondary" onclick="exportPdf()">PDF</button>
</div>
</div>
<div class="card-body p-0">

View File

@ -126,7 +126,7 @@ $photoAssureCrypte = $_SESSION['photoAssureCrypte'];
<link rel="manifest" href="<?= $racineWeb ?>manifest.json">
<!-- 4. VOS STYLES PERSONNALISÉS (en dernier pour qu'ils dominent) -->
<link href="<?= $racineWeb ?>Bootstrap_new/css/style_office.css?ver=2026.01.31.05" rel="stylesheet">
<link href="<?= $racineWeb ?>Bootstrap_new/css/style_office.css?ver=2026.02.05.00" rel="stylesheet">
<link href="<?= $racineWeb ?>Bootstrap_new/css/ux_enhancements.css?ver=2025.12.21.02" rel="stylesheet">
<!-- Charts -->
@ -219,8 +219,6 @@ $photoAssureCrypte = $_SESSION['photoAssureCrypte'];
$descriptionVue = est_anglophone() ? $infovue['DescriptionEng'] : $infovue['Description'];
$titreRetour = est_anglophone() ? $infovue['titreRetourEng'] : $infovue['titreRetour'];
$retourVue = $infovue['lienRetour'];
//var_dump(array("Descrip =" => $descriptionVue, "retour" => $retourVue));
?>
<body>
<!-- Header -->
@ -229,7 +227,7 @@ $photoAssureCrypte = $_SESSION['photoAssureCrypte'];
<div class="logo-container">
<a href="Accueil" class="app-logo">
<img src="/Bootstrap_new/images/new/favicon.png" alt="INTER-SANTE" width="36" height="36">
<span class="ms-2">INTER-SANTE</span>
<span class="ms-2">INTER SANTE</span>
</a>
<?php if($_SESSION['bdTests_C'] == "1"): ?>
@ -238,7 +236,7 @@ $photoAssureCrypte = $_SESSION['photoAssureCrypte'];
<span>MODE TEST</span>
</div>
<?php endif; ?>
<!-- -->
<i class="bi bi-list toggle-sidebar-btn" onclick="toggleSidebar()" style="cursor: pointer;"></i>
</div>
@ -479,11 +477,17 @@ $photoAssureCrypte = $_SESSION['photoAssureCrypte'];
<i class="bi bi-file-earmark-text"></i>
<span><?= _('Police') ?></span>
</div>
<div class="info-box">
<div class="info-value">
<?= $this->nettoyer($_SESSION['numeroPolice_C']) ?>
<?php if($_SESSION['numeroPolice_C'] <= " "): ?>
<div class="info-box">
<div class="info-value">
<?= $this->nettoyer($_SESSION['numeroPolice_C']) ?>
</div>
</div>
</div>
<?php else: ?>
<button class="action-btn" onclick="javascript:afficher_police_id();">
<?= $this->nettoyer($_SESSION['numeroPolice_C']) ?>
</button>
<?php endif; ?>
</div>
<!-- Adhérent principal -->
@ -492,11 +496,17 @@ $photoAssureCrypte = $_SESSION['photoAssureCrypte'];
<i class="bi bi-person-badge"></i>
<span><?= _('Assuré principal') ?></span>
</div>
<div class="info-box">
<div class="info-value">
<?= $this->nettoyer($_SESSION['adherent_C']) ?>
<?php if($_SESSION['adherent_C'] <= " "): ?>
<div class="info-box">
<div class="info-value">
<?= $this->nettoyer($_SESSION['adherent_C']) ?>
</div>
</div>
</div>
<?php else: ?>
<button class="action-btn" onclick="javascript:afficher_adherent_id();">
<?= $this->nettoyer($_SESSION['adherent_C']) ?>
</button>
<?php endif; ?>
</div>
<!-- Patient -->
@ -677,7 +687,7 @@ $photoAssureCrypte = $_SESSION['photoAssureCrypte'];
<script src="https://cdn.jsdelivr.net/npm/sweetalert2@11"></script>
<!-- Application Scripts -->
<script src="/Js/fonctions.js?ver=2026.02.03.02"></script>
<script src="/Js/fonctions.js?ver=2026.02.17.07"></script>
<script type="text/javascript">
raffraichier_gabarit();
@ -723,45 +733,30 @@ $photoAssureCrypte = $_SESSION['photoAssureCrypte'];
<script src="Bootstrap/vendor/echarts/echarts.min.js"></script>
<script>
// CORRECTION URGENTE - FORCE LE BON MENU
document.addEventListener('DOMContentLoaded', function() {
// Attendre que NavigationManager soit prêt
/* ================================
1) Correction urgente - Forcer le bon menu
================================= */
setTimeout(function() {
// 1. Vérifier l'état actuel
const openMenus = document.querySelectorAll('.nav-submenu.show');
// 2. Si submenu1 est ouvert mais on est sur Accueil
if (window.appConfig?.activeLink === 'Accueil') {
const wrongMenu = document.getElementById('submenu1');
const correctMenu = document.getElementById('submenu0');
if (wrongMenu?.classList.contains('show')) {
// FORCER LA CORRECTION
if (window.appUX?.navigation) {
// Fermer tous les menus
window.appUX.navigation.closeAllMenus();
// Ouvrir submenu0
setTimeout(() => {
window.appUX.navigation.openMenuById('submenu0');
}, 200);
}
// Fallback manuel
else {
// Fermer submenu1
} else {
wrongMenu.classList.remove('show');
const wrongLink = document.querySelector('[href="#submenu1"]');
if (wrongLink) {
wrongLink.setAttribute('aria-expanded', 'false');
wrongLink.classList.remove('active');
}
// Ouvrir submenu0
setTimeout(() => {
if (correctMenu) {
correctMenu.classList.add('show');
@ -775,91 +770,88 @@ $photoAssureCrypte = $_SESSION['photoAssureCrypte'];
}
}
}
// Vérification finale
setTimeout(() => {
const finalState = document.querySelectorAll('.nav-submenu.show');
if (finalState.length === 1 && finalState[0].id === 'submenu0') {
// OK
}
}, 500);
}, 1000); // Attendre 1s que tout soit initialisé
});
</script>
}, 1000);
<script>
document.addEventListener('DOMContentLoaded', function () {
// 1) Déplacer immédiatement tous les modals existants sous <body>
document.querySelectorAll('.modal').forEach(function (m) {
/* ================================
2) Gestion des modals Bootstrap
================================= */
document.querySelectorAll('.modal').forEach(function(m) {
if (m.parentNode !== document.body) document.body.appendChild(m);
});
// 2) Intercepter tous les clics sur triggers AVANT Bootstrap (phase capture)
document.addEventListener('click', function (e) {
document.addEventListener('click', function(e) {
const trigger = e.target.closest('[data-bs-toggle="modal"][data-bs-target]');
if (!trigger) return;
const targetSelector = trigger.getAttribute('data-bs-target');
const modal = document.querySelector(targetSelector);
if (modal && modal.parentNode !== document.body) {
document.body.appendChild(modal);
document.body.appendChild(modal);
}
}, true);
// 3) Fallback: si un modal s'ouvre autrement, garantir le déplacement
document.addEventListener('show.bs.modal', function (event) {
document.addEventListener('show.bs.modal', function(event) {
const modal = event.target;
if (modal && modal.parentNode !== document.body) {
document.body.appendChild(modal);
document.body.appendChild(modal);
}
});
});
</script>
<script>
document.addEventListener("DOMContentLoaded", function () {
// On initialise les menus SANS les forcer à s'ouvrir
/* ================================
3) Gestion des sous-menus (Collapse)
================================= */
document.querySelectorAll('[data-submenu-target]').forEach(link => {
link.addEventListener('click', function (e) {
link.addEventListener('click', function(e) {
e.preventDefault();
const targetId = this.getAttribute('data-submenu-target');
const targetEl = document.getElementById(targetId);
if (targetEl) {
const instance = bootstrap.Collapse.getOrCreateInstance(targetEl, {
parent: '.nav-section', // Ferme les autres quand on en ouvre un
parent: '.nav-section',
toggle: false
});
instance.toggle();
}
});
});
});
</script>
<script>
document.addEventListener("DOMContentLoaded", function () {
const btn = document.getElementById('userDropdownBtn');
if (btn) {
// On crée l'instance Bootstrap une seule fois
const dropdown = new bootstrap.Dropdown(btn);
btn.addEventListener('click', function (e) {
// ÉTAPE CLÉ : On empêche les autres scripts du header de bloquer le clic
/* ================================
4) Dropdown utilisateur
================================= */
const btn = document.getElementById('userDropdownBtn');
if (btn) {
const dropdown = new bootstrap.Dropdown(btn);
btn.addEventListener('click', function(e) {
e.preventDefault();
e.stopPropagation();
// On force l'ouverture/fermeture
e.stopPropagation();
dropdown.toggle();
});
}
// Sécurité : Fermer le menu si on clique n'importe où ailleurs sur la page
document.addEventListener('click', function (e) {
document.addEventListener('click', function(e) {
const btn = document.getElementById('userDropdownBtn');
if (btn && !btn.contains(e.target)) {
const instance = bootstrap.Dropdown.getInstance(btn);
if (instance) instance.hide();
}
});
/* ================================
5) Ajouter étoile rouge aux champs required
================================= */
document.querySelectorAll('input[required], select[required], textarea[required]').forEach(function(el) {
let label = document.querySelector('label[for="'+el.id+'"]');
if (label && !label.querySelector('.required-star')) {
label.innerHTML += '<span class="required-star">*</span>';
}
});
});
</script>
</body>