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

This commit is contained in:
KANE LAZENI 2026-04-21 01:41:17 +00:00
commit d437cb4e02
59 changed files with 2212 additions and 537 deletions

5
.gitignore vendored
View File

@ -1,4 +1,3 @@
Config/
Config
Config/dev.ini
@ -10,4 +9,6 @@ Cron/prod.ini
Temp/
Temp
*.ssh
.ssh/
.ssh/
Gettext/
Gettext

View File

@ -35,5 +35,12 @@ class ControleurAjaxavenant extends Controleur {
$this->genererVueAjax(array('dateAvenant' => $dateAvenant));
}
public function notifier()
{
$idAvenant = $this->requete->getParametre("idAvenant");
$this->avenant->notifieravenant($idAvenant);
}
}

View File

@ -13,11 +13,13 @@ class ControleurAjaxlistegedbeneficiaireprod extends Controleur {
{
unset($_FILES['fichier_upload']);
$d1 = $this->requete->getParametreDate("d1");
$d2 = $this->requete->getParametreDate("d2");
$nomOrigine = $this->requete->getParametreFormulaire("nomOrigine");
$d1 = $this->requete->getParametreDate("d1");
$d2 = $this->requete->getParametreDate("d2");
$geds = $this->ged->getgedbeneficiaireprod($d1, $d2, $nomOrigine);
$nomOrigine = $this->requete->getParametreFormulaire("nomOrigine");
$codeNaturePiece = $this->requete->getParametreFormulaire("codeNaturePiece");
$geds = $this->ged->getgedbeneficiaireprod($d1, $d2, $nomOrigine, $codeNaturePiece);
$this->genererVueAjax(array('geds' => $geds));
}

View File

@ -16,6 +16,8 @@ class ControleurAjaxmouvementassure extends Controleur {
$debut = $this->requete->getParametreDate("debut");
$fin = $this->requete->getParametreDate("fin");
$_SESSION['idAvenant'] = "0";
$mouvementassures = $this->mouvementassure->getMouvementassure($ajoutClient, $codeSensMouvement, $valide, $debut, $fin);
$this->genererVueAjax(array('mouvementassures' => $mouvementassures));
@ -40,5 +42,17 @@ class ControleurAjaxmouvementassure extends Controleur {
$this->genererVueAjax(array('mouvementassures' => $mouvementassures));
}
public function avenant()
{
$idAvenant = $this->requete->getParametreFormulaire("idAvenant");
$_SESSION['idAvenant'] = $idAvenant;
}
public function reinitvalidation()
{
$idMvt = $this->requete->getParametreFormulaire("idMvt");
$this->mouvementassure->reinitvalidation($idMvt);
}
}

View File

@ -0,0 +1,31 @@
<?php
require_once 'Framework/Controleur.php';
require_once 'Modele/Police.php';
class ControleurAjaxrequetedetailsinistres extends Controleur
{
private $sppolice;
public function __construct() {
$this->sppolice = new Police();
}
public function index()
{
$dateDebut = $this->requete->getParametreDate("dateFacture1");
$dateFin = $this->requete->getParametreDate("dateFacture2");
$_SESSION['dateDebutRequete'] = $this->requete->getParametreFormulaire("dateFacture1");
$_SESSION['dateFinRequete'] = $this->requete->getParametreFormulaire("dateFacture2");
$rpsinistres = $this->sppolice->requetedetailsinistres($dateDebut, $dateFin);
$rpsinistres_total = $this->sppolice->requetedetailsinistres_total($dateDebut, $dateFin);
$this->genererVueAjax(array(
'rpsinistres' => $rpsinistres,
'rpsinistres_total' => $rpsinistres_total
));
}
}

View File

@ -0,0 +1,23 @@
<?php
require_once 'Framework/Controleur.php';
require_once 'Modele/Police.php';
class ControleurAjaxrequeteentetedetailsinistres extends Controleur {
private $sppolice;
public function __construct()
{
$this->sppolice = new Police();
}
public function index()
{
$idPolice = $_SESSION['idPolice_C'];
$dj = date("Y-m-d");
$sppoliceentete = $this->sppolice->getRapportSpPoliceEntete($idPolice, $dj);
$this->genererVueAjax(array('sppoliceentete' => $sppoliceentete));
}
}

View File

@ -0,0 +1,23 @@
<?php
require_once 'Framework/Controleur.php';
require_once 'Modele/Police.php';
class ControleurAjaxrequeteentetefrequencesprestataires extends Controleur {
private $sppolice;
public function __construct()
{
$this->sppolice = new Police();
}
public function index()
{
$idPolice = $_SESSION['idPolice_C'];
$dj = date("Y-m-d");
$sppoliceentete = $this->sppolice->getRapportSpPoliceEntete($idPolice, $dj);
$this->genererVueAjax(array('sppoliceentete' => $sppoliceentete));
}
}

View File

@ -0,0 +1,23 @@
<?php
require_once 'Framework/Controleur.php';
require_once 'Modele/Police.php';
class ControleurAjaxrequeteenteteresumesinistres extends Controleur {
private $sppolice;
public function __construct()
{
$this->sppolice = new Police();
}
public function index()
{
$idPolice = $_SESSION['idPolice_C'];
$dj = date("Y-m-d");
$sppoliceentete = $this->sppolice->getRapportSpPoliceEntete($idPolice, $dj);
$this->genererVueAjax(array('sppoliceentete' => $sppoliceentete));
}
}

View File

@ -0,0 +1,30 @@
<?php
require_once 'Framework/Controleur.php';
require_once 'Modele/Police.php';
class ControleurAjaxrequetefrequencesprestataires extends Controleur
{
private $sppolice;
public function __construct() {
$this->sppolice = new Police();
}
public function index()
{
$dateDebut = $this->requete->getParametreDate("dateFacture1");
$dateFin = $this->requete->getParametreDate("dateFacture2");
$_SESSION['dateDebutRequete'] = $this->requete->getParametreFormulaire("dateFacture1");
$_SESSION['dateFinRequete'] = $this->requete->getParametreFormulaire("dateFacture2");
$rpsinistres = $this->sppolice->requetefrequenceinistres($dateDebut, $dateFin);
$rpsinistres_total = $this->sppolice->requetefrequencesinistres_total($dateDebut, $dateFin);
$this->genererVueAjax(array(
'rpsinistres' => $rpsinistres,
'rpsinistres_total' => $rpsinistres_total
));
}
}

View File

@ -0,0 +1,31 @@
<?php
require_once 'Framework/Controleur.php';
require_once 'Modele/Police.php';
class ControleurAjaxrequeteresumesinistres extends Controleur
{
private $sppolice;
public function __construct() {
$this->sppolice = new Police();
}
public function index()
{
$dateFacture1 = $this->requete->getParametreDate("dateFacture1");
$dateFacture2 = $this->requete->getParametreDate("dateFacture2");
$_SESSION['dateEffetPolice'] = $this->requete->getParametreFormulaire("dateFacture1");
$_SESSION['dateFinRequete'] = $this->requete->getParametreFormulaire("dateFacture2");
$rpsinistres = $this->sppolice->requeteresumesinistres($dateFacture2);
$rpsinistres_total = $this->sppolice->requeteresumesinistres_total($dateFacture2);
$this->genererVueAjax(array(
'rpsinistres' => $rpsinistres,
'rpsinistres_total' => $rpsinistres_total
));
}
}

View File

@ -0,0 +1,78 @@
<?php
require_once 'Framework/Controleurrequete.php'; // OK
require_once 'Modele/Police.php';
class ControleurAjaxrequeteresumesinistresexport extends Controleurrequete
{
private $sppolice;
public function __construct() {
$this->sppolice = new Police();
}
public function index()
{
$dateFacture1 = $this->requete->getParametreDate("dateFacture1");
$dateFacture2 = $this->requete->getParametreDate("dateFacture2");
$_SESSION['dateDebutRequete'] = $this->requete->getParametreFormulaire("dateFacture1");
$_SESSION['dateFinRequete'] = $this->requete->getParametreFormulaire("dateFacture2");
$idPolice = $_SESSION['idPolice_C'];
$dateReference = date("Y-m-d");
$sppoliceentete = $this->sppolice->getRapportSpPoliceEnteteExport($idPolice, $dateReference);
$rpsinistres = $this->sppolice->requeteresumesinistresexport($dateFacture2);
//$rpsinistres_total = $this->sppolice->requeteresumesinistres_total($dateFacture2);
// Excel
$headerXLS = array
(
_('Adhérent Principal'),
_('Date de début'),
_('Période passée'),
_('Sinistres'),
_('Ratio'),
_('Cat')
);
$dataXLS = array();
foreach ($rpsinistres as $v)
{
$dataXLS[]=$v;
}
$classeur = new PHPExcel();
$classeur->getProperties()->setCreator("INTER-SANTE");
$classeur->setActiveSheetIndex(0);
$feuille=$classeur->getActiveSheet();
$feuille->setTitle(_('RESUME'));
$feuille->setCellValue('A1', convertirc(_('RAPPORT DES SINISTRES')));
$feuille->mergeCells('A1:F1');
$feuille->setCellValue('A3', convertirc(_('Souscripteur').' : '.$sppoliceentete['Souscripteur']));
$feuille->setCellValue('A4', _('Numéro Police') . ' : ' . $sppoliceentete['numeroPolice']);
$feuille->setCellValue('A5', _('Période Couverte') . ' : ' . dateLang($sppoliceentete['dateEffet'], $_SESSION['lang']) . ' AU ' . dateLang($sppoliceentete['dateEcheance'], $_SESSION['lang']));
$feuille->fromArray($headerXLS, NULL, 'A7', true);
$feuille->fromArray($dataXLS, NULL, 'A8', true);
//Forcer le téléchargement vers le navigateur;
$fichier = 'Temp/TMP_RESUME_SINISTRE'."_".uniqid().".xlsx";
$writer = new PHPExcel_Writer_Excel2007($classeur);
$writer->save($fichier);
$t_html =' <div id ="div_export_a" class="alert alert-info"> ';
$t_html .=' <a style="font-size:15pt;" href="'.$fichier.'" target="_blank" > '._("TELECHARGER").' </a> ';
$t_html .=' </div ';
echo $t_html;
exit();
}
}

View File

@ -68,6 +68,7 @@ class ControleurFicheadherent extends Controleur {
$dataConsoParLiens = json_encode($tabPrestationsParLiens, JSON_NUMERIC_CHECK);
$dataConsoParGaranties = json_encode($tabConsoParGaranties, JSON_NUMERIC_CHECK);
$nombreGed = $this->adherent->getNombreGedAdherent($idAdherent);
$this->genererVue(array(
'adherent' => $adherent,
@ -78,7 +79,8 @@ class ControleurFicheadherent extends Controleur {
'dataConsoParMois' => $dataConsoParMois,
'dataConsoParLiens' => $dataConsoParLiens,
'dataConsoParGaranties' => $dataConsoParGaranties,
'nbreLienParente' => $nbreLienParente
'nbreLienParente' => $nbreLienParente,
'nombreGed' => $nombreGed
));
}

View File

@ -37,6 +37,7 @@ class ControleurFichebeneficiaire extends Controleur
$codeTypeContrat = $_SESSION['codeTypeContrat'];
$idPolice = $_SESSION['idPolice_C'];
$this->police->getContextePoliceId($idPolice);
$this->beneficiaire->getContexteBeneficiaireId($idBeneficiaire);
@ -225,6 +226,8 @@ class ControleurFichebeneficiaire extends Controleur
// Encodage JSON
$dataConsoParMois = json_encode($tabConsoParMois, JSON_NUMERIC_CHECK);
$dataConsoParGaranties = json_encode($tabConsoParGaranties, JSON_NUMERIC_CHECK);
$nombreGed = $this->beneficiaire->getNombreGedBeneficiaire($idBeneficiaire);
$this->genererVue(array(
'beneficiaire' => $beneficiaire,
@ -234,7 +237,8 @@ class ControleurFichebeneficiaire extends Controleur
'limite_beneficiaire' => $limite_beneficiaire,
'limite_adherent' => $limite_adherent,
'dataConsoParMois' => $dataConsoParMois,
'dataConsoParGaranties' => $dataConsoParGaranties
'dataConsoParGaranties' => $dataConsoParGaranties,
'nombreGed' => $nombreGed
));
}

View File

@ -25,7 +25,7 @@ class ControleurGedadherent extends Controleur {
$nomOrigine = $this->requete->getParametreFormulaire("nomOrigine");
$codeNaturePiece = $this->requete->getParametreFormulaire("codeNaturePiece");
if(!empty($_POST))
{
define('TARGET', $_SESSION['cheminGed']); // Repertoire cible
@ -41,13 +41,10 @@ class ControleurGedadherent extends Controleur {
$extension = '';
if($codeNaturePiece == "AUT"){
$libelleDocument = $this->requete->getParametreFormulaire("libelleAutre");
$libelleAutre = $this->requete->getParametreFormulaire("libelleAutre");
}else{
$libelleDocument = $this->ged->getLibelleTypeDocument($codeNaturePiece);
$libelleAutre = "";
}
var_dump(array($codeNaturePiece, $libelleDocument));
die();
if( !is_dir(TARGET) )
{
@ -92,7 +89,8 @@ class ControleurGedadherent extends Controleur {
: 'Chargé avec succès';
// on va envoyer dans la base de données
$this->ged->enregistrergedadherent($nomOrigine, $nouveau_fichier, $taille, $codeNaturePiece, $libelleDocument);
$this->ged->enregistrergedadherent($nomOrigine, $nouveau_fichier, $taille, $codeNaturePiece, $libelleAutre);
$this->rediriger("Gedadherent");
}
else
@ -143,7 +141,7 @@ class ControleurGedadherent extends Controleur {
$d2 = date('Y-m-d');
$geds = $this->ged->getgedadherent($d1, $d2, $nomOrigine, $codeNaturePiece);
$geds = $this->ged->getgedadherent($d1, $d2, "", "");
unset($_FILES['fichier_upload']);

View File

@ -1,16 +1,19 @@
<?php
require_once 'Framework/Controleur.php';
require_once 'Modele/Ged.php';
require_once 'Modele/Naturepiece.php';
require_once 'Modele/Menuvueutilisateur.php';
class ControleurGedbeneficiaireprod extends Controleur {
private $ged;
private $naturepiece;
public function __construct() {
$this->menuvue = new Menuvueutilisateur();
$this->menuvue->getMenuVue('Gedbeneficiaireprod');
$this->ged = new Ged();
$this->naturepiece = (new Naturepiece())->getListe();
}
public function index($msgErreur=null)
@ -20,6 +23,9 @@ class ControleurGedbeneficiaireprod extends Controleur {
$nouveau_fichier = "Rien";
$nomOrigine = $this->requete->getParametreFormulaire("nomOrigine");
$codeNaturePiece = $this->requete->getParametreFormulaire("codeNaturePiece");
if(!empty($_POST))
{
define('TARGET', $_SESSION['cheminGed']); // Repertoire cible
@ -34,6 +40,12 @@ class ControleurGedbeneficiaireprod extends Controleur {
// Variables
$extension = '';
if($codeNaturePiece == "AUT"){
$libelleAutre = $this->requete->getParametreFormulaire("libelleAutre");
}else{
$libelleAutre = "";
}
if( !is_dir(TARGET) )
{
if( !mkdir(TARGET, 0755) )
@ -76,7 +88,7 @@ class ControleurGedbeneficiaireprod extends Controleur {
: 'Chargé avec succès';
// on va envoyer dans la base de données
$this->ged->enregistrergedbeneficiaireprod($nomOrigine, $nouveau_fichier, $taille);
$this->ged->enregistrergedbeneficiaireprod($nomOrigine, $nouveau_fichier, $taille, $codeNaturePiece, $libelleAutre);
$this->rediriger("Gedbeneficiaireprod");
}
else
@ -125,10 +137,10 @@ class ControleurGedbeneficiaireprod extends Controleur {
$d1 = $_SESSION['dUneSemaineAvant_C'];
$d2 = date('Y-m-d');
$geds = $this->ged->getgedbeneficiaireprod($d1, $d2, "");
$geds = $this->ged->getgedbeneficiaireprod($d1, $d2, "", "");
unset($_FILES['fichier_upload']);
$this->genererVue(array('geds' => $geds, 'msgErreur' => $msgErreur));
$this->genererVue(array('geds' => $geds, 'msgErreur' => $msgErreur, 'naturepiece' => $this->naturepiece));
}
}

View File

@ -22,7 +22,15 @@ class ControleurListeavenant extends Controleur {
$police = $this->police->getPoliceId($idPolice);
$avenants = $this->avenant->getAvenant($idPolice);
$dj = date("Y-m-d");
$this->genererVue(array('police' => $police, 'avenants' => $avenants));
$sppoliceentete = $this->police->getRapportSpPoliceEntete($idPolice, $dj);
$this->genererVue(array(
'police' => $police,
'avenants' => $avenants,
'sppoliceentete' => $sppoliceentete
));
}
}

View File

@ -6,8 +6,8 @@ require_once 'Modele/Beneficiaire.php';
require_once 'Modele/Naturepiece.php';
require_once 'Modele/Sexe.php';
require_once 'Modele/Groupesanguin.php';
require_once 'Modele/Lienparente.php';
require_once 'Modele/Mouvementassure.php';
class ControleurModifierbeneficiaire extends Controleur {
private $beneficiaire;
@ -16,18 +16,19 @@ class ControleurModifierbeneficiaire extends Controleur {
private $groupesanguin;
private $adherent;
private $lienparente;
private $mouvementassure;
public function __construct() {
$this->menuvue = new Menuvueutilisateur();
$this->menuvue->getMenuVue('Modifierbeneficiaire');
$this->beneficiaire = new Beneficiaire();
$this->naturepiece = (new Naturepiece())->getListe();
$this->sexe = (new Sexe())->getListe();
$this->groupesanguin = (new Groupesanguin())->getListe();
$this->adherent = new Adherent();
// $this->lienparente = (new Lienparente())->getListe();
$this->lienparente = new Lienparente();
$this->beneficiaire = new Beneficiaire();
$this->naturepiece = (new Naturepiece())->getListe();
$this->sexe = (new Sexe())->getListe();
$this->groupesanguin = (new Groupesanguin())->getListe();
$this->adherent = new Adherent();
$this->lienparente = new Lienparente();
$this->mouvementassure = new Mouvementassure();
}
public function index()
{
@ -56,8 +57,30 @@ class ControleurModifierbeneficiaire extends Controleur {
$lienparente = $this->lienparente->getListeDependant();
}
$this->genererVue(array('beneficiaire' => $beneficiaire, 'adherent' => $adherent, 'naturepiece' => $this->naturepiece, 'sexe' => $this->sexe,
'groupesanguin' => $this->groupesanguin, 'lienparente' => $lienparente));
$nombreGed = $this->beneficiaire->getNombreGedBeneficiaire($idBeneficiaire);
$idAvenant = $_SESSION['idAvenant'];
if($idAvenant > "0"){
$mouvementassure = $this->mouvementassure->getMouvementassureID($idBeneficiaire, $idAvenant);
}else{
$mouvementassure = array(
'id' => "0",
'aCorriger' => "0",
'motif' => ""
);
}
$this->genererVue(array(
'beneficiaire' => $beneficiaire,
'adherent' => $adherent,
'naturepiece' => $this->naturepiece,
'sexe' => $this->sexe,
'groupesanguin' => $this->groupesanguin,
'lienparente' => $lienparente,
'nombreGed' => $nombreGed,
'mouvementassure' => $mouvementassure
));
}
public function modifier($prenoms=null) {
@ -82,6 +105,6 @@ class ControleurModifierbeneficiaire extends Controleur {
$this->beneficiaire->modifier($id, $nomBeneficiaire, $prenomsBeneficiaire, $codeLienParente, $codeNaturePiece, $numeroPiece,
$sexe, $codeGroupeSanguin, $dateNaissance, $telephonePortable, $dateEntree, $primeFamille, $primeBeneficiaire);
$this->rediriger("Fichebeneficiaire/".$id);
$this->rediriger("Mouvementassure/");
}
}

View File

@ -0,0 +1,35 @@
<?php
require_once 'Framework/Controleur.php';
require_once 'Modele/Requetes.php';
require_once 'Modele/Police.php';
require_once 'Modele/Menuvueutilisateur.php';
class ControleurRequetes extends Controleur
{
private $requetes;
private $sppolice;
public function __construct() {
$this->menuvue = new Menuvueutilisateur();
$this->menuvue->getMenuVue('Requetes');
$this->requetes = (new Requetes())->getListe();
$this->sppolice = new Police();
}
public function index()
{
$idPolice = $_SESSION['idPolice_C'];
$dj = date("Y-m-d");
$sppoliceentete = $this->sppolice->getRapportSpPoliceEntete($idPolice, $dj);
$_SESSION['dateFinRequete'] = dateCouranteLang($_SESSION['lang']);
$this->genererVue(array(
'requetes' => $this->requetes,
'sppoliceentete' => $sppoliceentete
));
}
}

View File

@ -9,4 +9,88 @@ require_once 'Localisation.php';
abstract class Controleurrequete extends Controleur
{
}
function pdf_to_image($fichierSimple, $uniqid)
{
$inputPdf = dirname(__DIR__) . "/".$fichierSimple; // PDF dorigine
$path_parts = pathinfo($inputPdf);
$outputPdf = $path_parts["dirname"]."/TMP_$uniqid.pdf"; // PDF final "image-only"
$fichier="Temp/TMP_$uniqid.pdf";
// $dpi = 300; // 150 si tu veux alléger
$dpi = 150; // 150 si tu veux alléger
$quality = 90; // JPEG quality
// dossier temporaire
$tmpDir = sys_get_temp_dir() . '/pdf2img_' . uniqid();
if (!is_dir($tmpDir)) {
mkdir($tmpDir, 0777, true);
}
try {
$imagick = new Imagick();
// très important : définir la résolution AVANT readImage
$imagick->setResolution($dpi, $dpi);
$imagick->readImage($inputPdf);
$nbPages = $imagick->getNumberImages();
$imageFiles = [];
for ($i = 0; $i < $nbPages; $i++) {
$imagick->setIteratorIndex($i);
$page = $imagick->getImage();
// important : forcer un fond blanc si le PDF avait de la transparence
$page->setImageBackgroundColor('white');
$page = $page->mergeImageLayers(Imagick::LAYERMETHOD_FLATTEN);
// sortie en JPEG
$page->setImageFormat('jpeg');
$page->setImageCompression(Imagick::COMPRESSION_JPEG);
$page->setImageCompressionQuality($quality);
$imgPath = sprintf('%s/page-%03d.jpg', $tmpDir, $i + 1);
$page->writeImage($imgPath);
$imageFiles[] = $imgPath;
$page->clear();
$page->destroy();
}
// 1) on essaie img2pdf (plus propre)
$escapedImages = array_map('escapeshellarg', $imageFiles);
$cmd = 'img2pdf ' . implode(' ', $escapedImages) . ' -o ' . escapeshellarg($outputPdf);
exec($cmd, $o1, $r1);
if ($r1 !== 0) {
// 2) fallback : ImageMagick
// attention : certaines installations utilisent "convert" au lieu de "magick"
$cmd2 = 'magick ' . implode(' ', $escapedImages) . ' -density ' . intval($dpi) . ' -compress jpeg ' . escapeshellarg($outputPdf);
exec($cmd2, $o2, $r2);
if ($r2 !== 0) {
throw new Exception("Impossible de recomposer le PDF (img2pdf puis magick ont échoué)");
}
}
// nettoyage (optionnel)
foreach ($imageFiles as $f) {
@unlink($f);
}
@rmdir($tmpDir);
} catch (Exception $e) {
echo "Erreur : " . $e->getMessage();
exit();
}
// Fin conversion
// supprimer $inputPdf
@unlink($inputPdf);
$t_html =' <div id ="div_export_a" class="alert alert-info"> ';
$t_html .=' <a style="font-size:15pt;" href="'.$fichier.'" target="_blank" > TELECHARGER </a> ';
$t_html .=' </div ';
echo $t_html;
}

View File

@ -42,25 +42,6 @@ function toggleSidebar() {
document.body.classList.toggle('sidebar-collapsed');
}
$(function() {
// Initialisation des composants au chargement de la page
appliquerDataTable('.tabliste');
dataTableSpeciale();
let nomForm = $("#nomForm").val();
/*
if(nomForm == "remboursementClassic")
{
let filtre = "0";
d1 = $("#d1").val();
d2 = $("#d2").val();
lister_dossiers_classiques(filtre);
}
*/
});
function raffraichier_gabarit()
{
@ -379,13 +360,13 @@ function changer_langue_connexion() {
}
/**
* CONFIGURATION DATATABLES
* Initialise un tableau DataTable avec options génériques.
*
* @param {string|jQuery} selector - Sélecteur du tableau (ex: '.tabliste' ou '#myTable')
* @param {object} options - Options personnalisées (langue, boutons, ordre, etc.)
* Initialise DataTables avec support multilingue, exports personnalisés et entêtes fixes.
* * @param {string} selector - Sélecteur jQuery de la table (ex: '.tabliste')
* @param {object} options - Options DataTables spécifiques pour surcharger par défaut
* @param {string} titreDoc - Titre principal pour les exports (PDF/Excel/Print)
* @param {string} message - Informations de police/contexte sous le titre (messageTop)
*/
function appliquerDataTable(selector = '.tabliste', options = {}) {
function appliquerDataTable(selector = '.tabliste', options = {}, titreDoc = "Rapport", message = "") {
const codeLangue = $("#codeLangue").val() || 'fr_FR';
const translations = {
@ -393,38 +374,65 @@ function appliquerDataTable(selector = '.tabliste', options = {}) {
lengthMenu: "Affiche _MENU_ par page",
zeroRecords: "Aucune donnée trouvée",
info: "_PAGE_ sur _PAGES_",
search: "Recherche:",
paginate: { next: "►", previous: "◄" }
infoEmpty: "Aucun enregistrement disponible",
infoFiltered: "(filtré de _MAX_ total)",
search: "Recherche rapide :",
paginate: { next: "Suivant ►", previous: "◄ Précédent" }
},
en_US: {
lengthMenu: "Display _MENU_ records",
zeroRecords: "Nothing found",
info: "Showing page _PAGE_ of _PAGES_",
search: "Search:",
paginate: { next: "►", previous: "◄" }
infoEmpty: "No records available",
infoFiltered: "(filtered from _MAX_ total)",
search: "Quick Search:",
paginate: { next: "Next ►", previous: "◄ Previous" }
}
};
$(selector).each(function() {
const $table = $(this);
// Colonnes marquées comme 'data-hidden'
const hiddenTargets = [];
$table.find('thead th').each((idx, th) => {
if ($(th).data('hidden')) hiddenTargets.push(idx);
});
const exportConfig = {
title: titreDoc,
messageTop: message,
exportOptions: { columns: ':visible' }
};
// --- CORRECTION ICI ---
// On définit les boutons par défaut uniquement SI aucun bouton n'est fourni dans 'options'
const defaultButtons = [
$.extend(true, {}, exportConfig, { extend: 'copy', className: 'btn btn-sm btn-light' }),
$.extend(true, {}, exportConfig, { extend: 'excel', className: 'btn btn-sm btn-success' }),
$.extend(true, {}, exportConfig, {
extend: 'pdf',
className: 'btn btn-sm btn-danger',
orientation: 'landscape',
pageSize: 'A4'
}),
$.extend(true, {}, exportConfig, { extend: 'print', className: 'btn btn-sm btn-dark' })
];
// On vérifie si l'utilisateur a passé ses propres boutons
const finalButtons = (options && options.buttons) ? options.buttons : defaultButtons;
const instance = $table.DataTable($.extend(true, {
destroy: true,
responsive: true,
pageLength: 25,
order: [[0, "desc"]],
dom: 'Bfrtip',
language: translations[codeLangue] || translations.fr_FR,
columnDefs: [{ targets: hiddenTargets, visible: false }],
dom: 'Bfrtip',
buttons: ['copy', 'csv', 'excel', 'pdf', 'print']
fixedHeader: { header: true, footer: true },
buttons: finalButtons // On utilise la liste filtrée
}, options));
// Ajustement après rendu
$table.on('init.dt', function () {
if (instance && instance.responsive) {
instance.columns.adjust();
@ -434,6 +442,7 @@ function appliquerDataTable(selector = '.tabliste', options = {}) {
});
}
function dataTableSpeciale() {
const $table = $('.tabspeciale');
const codeLangue = $("#codeLangue").val() || "fr_FR";
@ -1220,7 +1229,11 @@ function addChartToPdf(pdf, canvasId, title, startY) {
function charger_contrats(){
const codeLangue = document.querySelector("#codeLangue")?.value || "fr_FR";
const titre = (codeLangue === "en_US") ? "LIST OF CONTRACTS" : "LISTE DES CONTRATS";
showLoader("#div_liste_contrats", { size: 3 });
$.ajax({
url: $("#racineWeb").val()+"Ajaxlistepolicesclient/",
@ -1230,7 +1243,7 @@ function charger_contrats(){
},
success: function(data) {
$("#div_liste_contrats").html(data);
appliquerDataTable('.tabliste');
appliquerDataTable('.tabliste', {}, titre);
}
});
}
@ -2013,6 +2026,7 @@ function selectionner_beneficiaire(id,no)
function afficher_beneficiaire()
{
if ($("#numeroBeneficiaire_C" ).val()>"")
{
window.location.assign($("#racineWeb" ).val()+"Fichebeneficiaire/"+$("#numeroBeneficiaire_C" ).val()+"/");
@ -2021,11 +2035,18 @@ function afficher_beneficiaire()
function afficher_beneficiaire_id()
{
idBeneficiaire = $("#idBeneficiaire_C" ).val();
if ($("#idBeneficiaire_C" ).val()>"")
{
window.location.assign($("#racineWeb" ).val()+"Fichebeneficiaire/"+idBeneficiaire+"/");
idBeneficiaire = $("#idBeneficiaire_C" ).val();
idAvenant = $("#idAvenant").val();
if(idAvenant > "0"){
modifier_beneficiaire(idBeneficiaire);
}else{
if ($("#idBeneficiaire_C" ).val()>"")
{
window.location.assign($("#racineWeb" ).val()+"Fichebeneficiaire/"+idBeneficiaire+"/");
}
}
}
function creer_beneficiaires()
@ -4639,7 +4660,8 @@ function lister_polices_client(id) {
const vues = {
1: "Rechercherassure",
2: "Syntheseconsopolice",
3: "Sppolice"
3: "Sppolice",
4: "Requetes"
};
vue = vues[id] || null; // null si id ne correspond à rien
@ -5607,6 +5629,7 @@ function ajax_menus_profil()
function afficher_menu_vue_profil()
{
codeProfil=$("#codeProfil").val();
if (codeProfil<=" ")
{
v_msg="Veuillez sélectionner un profil!";
@ -5833,8 +5856,6 @@ function retirer_tous_menu_vue_profil()
function retirer_un_menu_vue_profil(codeMenu)
{
debugger;
codeProfil=$("#codeProfil").val();
if (codeProfil<=" ")
@ -6612,7 +6633,17 @@ function init_remplacement_adherent()
donnees = 'dateSortie='+dateS+'&dateRemplacement='+dateR+'&motifavenant='+motifavenant+'&fraisCarte='+fraisCarte;
$("#div_remplacement_adherent").html('<div style="padding-top:80px;"><img src="Bootstrap/images/loading.gif"/>&nbsp;&nbsp;<span style="font-size:15pt;">' + 'Veuillez patienter... / Please wait...' + '</span></div>');
$("#div_remplacement_adherent").html(`
<div class="d-flex flex-column align-items-center justify-content-center" style="padding-top:80px;">
<div class="spinner-border text-primary" role="status" style="width:3rem; height:3rem;">
<span class="visually-hidden">Loading...</span>
</div>
<span class="mt-3 fs-5 fw-bold">
Veuillez patienter... / Please wait...
</span>
</div>
`
);
$.ajax({
url: $("#racineWeb").val()+"Ajaxremplaceradherent/init/",
@ -6802,7 +6833,16 @@ function enregistrer_remplacement_adherent()
.then((isConfirmed) => {
if (isConfirmed) {
// L'utilisateur a confirmé
$("#div_remplacement_adherent").html('<div style="padding-top:80px;"><img src="Bootstrap/images/loading.gif"/>&nbsp;&nbsp;<span style="font-size:15pt;">' + 'Veuillez patienter... / Please wait...' + '</span></div>');
$("#div_remplacement_adherent").html(`
<div class="d-flex flex-column align-items-center justify-content-center" style="padding-top:80px;">
<div class="spinner-border text-primary" role="status" style="width:3rem; height:3rem;">
<span class="visually-hidden">Loading...</span>
</div>
<span class="mt-3 fs-5 fw-bold">
Veuillez patienter... / Please wait...
</span>
</div>
`);
$.ajax({
url: $("#racineWeb").val()+"Ajaxremplaceradherent/enregistrerremplacementadherent/",
@ -6834,7 +6874,17 @@ function enregistrer_remplacement_adherent()
function pop_afficher_selection_reincorporation()
{
var div_selection_assure = $('#div_selection_assure');
div_selection_assure.html('<div style="padding-top:80px;"><img src="Bootstrap/images/loading.gif"/>&nbsp;&nbsp;<span style="font-size:15pt;">' + 'Veuillez patienter... / Please wait...' + '</span></div>');
div_selection_assure.html(`
<div class="d-flex flex-column align-items-center justify-content-center" style="padding-top:80px;">
<div class="spinner-border text-primary" role="status" style="width:3rem; height:3rem;">
<span class="visually-hidden">Loading...</span>
</div>
<span class="mt-3 fs-5 fw-bold">
Veuillez patienter... / Please wait...
</span>
</div>
`);
$("#btn_pop").click();
$.ajax({
@ -6908,7 +6958,16 @@ function beneficiaire_a_reincorporer(p_choix, p_id_beneficiaire)
function recapituler_reincorporer()
{
var div_assure_a_retirer = $('#div_assure_a_retirer');
div_assure_a_retirer.html('<div style="padding-top:80px;"><img src="Bootstrap/images/loading.gif"/>&nbsp;&nbsp;<span style="font-size:15pt;">' + 'Veuillez patienter... / Please wait...' + '</span></div>');
div_assure_a_retirer.html(`
<div class="d-flex flex-column align-items-center justify-content-center" style="padding-top:80px;">
<div class="spinner-border text-primary" role="status" style="width:3rem; height:3rem;">
<span class="visually-hidden">Loading...</span>
</div>
<span class="mt-3 fs-5 fw-bold">
Veuillez patienter... / Please wait...
</span>
</div>
`);
$.ajax({
url: $("#racineWeb").val()+"Ajaxdetailreincorporation/recapituler/",
@ -6940,7 +6999,16 @@ function lister_ged_adherent()
donnees = 'd1='+d1+'&d2='+d2+'&nomOrigine='+nomOrigine+'&codeNaturePiece='+codeNaturePiece;
$("#div_ged").html('<div style="padding-top:80px;"><img src="Bootstrap/images/loading.gif"/>&nbsp;&nbsp;<span style="font-size:15pt;">' + 'Veuillez patienter... / Please wait...' + '</span></div>');
$("#div_ged").html(`
<div class="d-flex flex-column align-items-center justify-content-center" style="padding-top:80px;">
<div class="spinner-border text-primary" role="status" style="width:3rem; height:3rem;">
<span class="visually-hidden">Loading...</span>
</div>
<span class="mt-3 fs-5 fw-bold">
Veuillez patienter... / Please wait...
</span>
</div>
`);
$.ajax({
url: $("#racineWeb").val()+"Ajaxlistegedadherent/",
@ -6961,10 +7029,20 @@ function lister_ged_beneficiaire_prod()
d1 = $("#d1").val();
d2 = $("#d2").val();
nomOrigine = $("#nomOrigine").val();
codeNaturePiece = $("#codeNaturePiece").val();
donnees = 'd1='+d1+'&d2='+d2+'&nomOrigine='+nomOrigine;
donnees = 'd1='+d1+'&d2='+d2+'&nomOrigine='+nomOrigine+'&codeNaturePiece='+codeNaturePiece;
$("#div_ged").html('<div style="padding-top:80px;"><img src="Bootstrap/images/loading.gif"/>&nbsp;&nbsp;<span style="font-size:15pt;">' + 'Veuillez patienter... / Please wait...' + '</span></div>');
$("#div_ged").html(`
<div class="d-flex flex-column align-items-center justify-content-center" style="padding-top:80px;">
<div class="spinner-border text-primary" role="status" style="width:3rem; height:3rem;">
<span class="visually-hidden">Loading...</span>
</div>
<span class="mt-3 fs-5 fw-bold">
Veuillez patienter... / Please wait...
</span>
</div>
`);
$.ajax({
url: $("#racineWeb").val()+"Ajaxlistegedbeneficiaireprod/",
@ -6978,4 +7056,251 @@ function lister_ged_beneficiaire_prod()
complete: function() {
}
});
}
function ajaxenteterequete()
{
codeRequete=$("#codeRequete").val();
if (codeRequete<=" ")
{
v_msg="Veuillez sélectionner une requête!";
v_msgEng="Please select a query!";
alert_ebene(v_msg, v_msgEng);
$("#codeRequete").focus();
return;
}
donnees = 'codeRequete='+codeRequete;
v_url = $("#racineWeb").val()+"Ajaxrequeteentete"+codeRequete+"/";
$("#div_ente_requete").html(`
<div class="d-flex flex-column align-items-center justify-content-center" style="padding-top:80px;">
<div class="spinner-border text-primary" role="status" style="width:3rem; height:3rem;">
<span class="visually-hidden">Loading...</span>
</div>
<span class="mt-3 fs-5 fw-bold">
Veuillez patienter... / Please wait...
</span>
</div>
`);
$("#div_detail_requete").html(`
<div class="card-body p-0">
<div class="text-center py-5 text-muted">
<i class="fas fa-chart-line fa-4x mb-3 opacity-25"></i>
<p class="h5">Aucune donnée affichée / No data displayed</p>
</div>
</div>
`);
$.ajax({
url: v_url,
type : 'post',
data: donnees,
error: function(errorData) {
},
success: function(data) {
$("#div_ente_requete").html(data);
$(".datepicker" ).datepicker();
}
});
}
function requetes_sinistres_rh()
{
donnees = "";
donnees_retour = "";
codeRequete=$("#codeRequete").val();
if (codeRequete<=" ")
{
v_msg="Veuillez sélectionner une requête!";
v_msgEng="Please select a query!";
alert_ebene(v_msg, v_msgEng);
$("#codeRequete").focus();
return;
}
v_url = $("#racineWeb").val()+"Ajaxrequete"+codeRequete+"/";
dateFacture1 = $("#dateFacture1").val();
dateFacture2 = $("#dateFacture2").val();
donnees += '&dateFacture1=' + dateFacture1;
donnees += '&dateFacture2=' + dateFacture2;
$("#div_detail_requete").html(`
<div class="d-flex flex-column align-items-center justify-content-center" style="padding-top:80px;">
<div class="spinner-border text-primary" role="status" style="width:3rem; height:3rem;">
<span class="visually-hidden">Loading...</span>
</div>
<span class="mt-3 fs-5 fw-bold">
Veuillez patienter... / Please wait...
</span>
</div>
`);
$.ajax({
url: v_url,
type : 'post',
data: donnees,
error: function(errorData) {
},
success: function(data) {
donnees_retour = data;
},
complete: function() {
$("#div_detail_requete").html(donnees_retour);
$("#nbligne").val($("#nbligne_info").val());
}
});
}
function requetes_resume_sinistres_export()
{
debugger;
$('#div_detail_requete').html('');
$('#div_export_a').html("");
donnees = "";
donnees_retour = "";
codeRequete=$("#codeRequete").val();
if (codeRequete<=" ")
{
v_msg="Veuillez sélectionner une requête!";
v_msgEng="Please select a query!";
alert_ebene(v_msg, v_msgEng);
$("#codeRequete").focus();
return;
}
v_url = $("#racineWeb").val()+"Ajaxrequete"+codeRequete+"export/";
dateFacture1 = $("#dateFacture1").val();
dateFacture2 = $("#dateFacture2").val();
donnees += '&dateFacture1=' + dateFacture1;
donnees += '&dateFacture2=' + dateFacture2;
var div_export = $('#div_detail_requete');
div_export.html(`
<div class="d-flex flex-column align-items-center justify-content-center" style="padding-top:80px;">
<div class="spinner-border text-primary" role="status" style="width:3rem; height:3rem;">
<span class="visually-hidden">Loading...</span>
</div>
<span class="mt-3 fs-5 fw-bold">
Veuillez patienter... / Please wait...
</span>
</div>
`);
$.ajax({
url: v_url,
type : 'post',
data: donnees,
error: function(errorData) {
},
success: function(data) {
debugger;
donnees_retour = data;
},
complete: function() {
debugger;
$('#div_detail_requete').html("");
$('#div_export_a').html(donnees_retour);
}
});
}
function envoyer_notification_avenant(idAvenant)
{
donnees = 'idAvenant='+idAvenant;
$.ajax({
url: $("#racineWeb").val()+"Ajaxavenant/notifier/",
type : 'post',
data: donnees,
error: function(errorData) {
},
success: function(data) {
const msg = "Votre notification a été transmise avec succès.";
const msgEng = "Your notification has been successfully sent.";
alert_ebene(msg, msgEng);
return;
},
complete: function()
{
liste_avenant();
}
});
}
function motif_rejet(motif)
{
alert_ebene(motif, motif);
}
function corriger_mvt_beneficiaire(idBeneficiaire, idAvenant)
{
donnees = 'idAvenant='+idAvenant;
$.ajax({
url: $("#racineWeb").val()+"Ajaxmouvementassure/avenant/",
type : 'post',
data: donnees,
error: function(errorData) {
},
success: function(data) {
setTimeout(() => {
modifier_beneficiaire(idBeneficiaire);
}, 150);
},
complete: function() {
}
});
}
function confirmer_correction(idMvt, idBeneficiaire)
{
donnees = 'idMvt='+idMvt;
const v_msg = "Avez-vous terminé avec la correction demandée ?";
const v_msgEng = "Have you finished with the requested correction?";
confirm_ebene(v_msg, v_msgEng).then(isConfirmed => {
if (isConfirmed) {
$.ajax({
url: $("#racineWeb").val()+"Ajaxmouvementassure/reinitvalidation/",
type : 'post',
data: donnees,
error: function(errorData) {
},
success: function(data) {
const msg = "Validation reinitialisée avec succès !";
const msgEng = "Validation successfully reset!";
alert_ebene(msg, msgEng).then(() => {
// Ce code ne sexécute quaprès clic sur OK
modifier_beneficiaire(idBeneficiaire);
});
},
complete: function() {
}
});
}
});
}

View File

@ -887,5 +887,17 @@ class Adherent extends Modele {
return $resultat->fetchAll(PDO::FETCH_ASSOC);
}
public function getNombreGedAdherent($idAdherent)
{
$source = 'S';
$sql = 'SELECT fn_nombre_ged_adherent(?, ?) as nombreGed;';
$resultat = $this->executerRequete($sql, array($idAdherent, $source));
$ligne = $resultat->fetch(PDO::FETCH_ASSOC);
return $ligne['nombreGed'];
}
}

View File

@ -104,5 +104,13 @@ class Avenant extends Modele {
return $resultat->fetchAll(PDO::FETCH_ASSOC);
}
public function notifieravenant($idAvenant)
{
$user = $_SESSION['codeUtilisateur'];
$sql = 'call sp_rh_notifier_avenant(?, ?)';
$this->executerRequete($sql, array($idAvenant, $user));
}
}

View File

@ -1658,4 +1658,15 @@ class Beneficiaire extends Modele {
return $resultat->fetchAll(PDO::FETCH_ASSOC);
}
public function getNombreGedBeneficiaire($idBeneficiaire)
{
$source = 'S';
$sql = 'SELECT fn_nombre_ged_beneficiaire(?, ?) as nombreGed;';
$resultat = $this->executerRequete($sql, array($idBeneficiaire, $source));
$ligne = $resultat->fetch(PDO::FETCH_ASSOC);
return $ligne['nombreGed'];
}
}

View File

@ -47,24 +47,31 @@ class Ged extends Modele {
return $resultat->fetchAll(PDO::FETCH_ASSOC);
}
public function enregistrergedbeneficiaireprod($nomOrigine, $nouveau_fichier, $taille)
public function enregistrergedbeneficiaireprod($nomOrigine, $nouveau_fichier, $taille, $codeNaturePiece, $libelleAutre)
{
$idBeneficiaire = $_SESSION['idBeneficiaire_C'];
$user = $_SESSION['login'];
$cheminFichier = $_SESSION['dossierGed'].$nouveau_fichier;
$sql = 'call sp_r_ajouter_ged_beneficiaire_prod(?, ?, ?, ?, ?)';
$sql = 'call sp_r_ajouter_ged_beneficiaire_prod_rh(?, ?, ?, ?, ?, ?, ?);';
//var_dump(array($idBeneficiaire, $nomOrigine, $cheminFichier, $taille, $user, $codeNaturePiece, $libelleAutre)); die();
$this->executerRequete($sql, array($idBeneficiaire, $nomOrigine, $cheminFichier, $taille, $user));
$this->executerRequete($sql, array($idBeneficiaire, $nomOrigine, $cheminFichier, $taille, $user, $codeNaturePiece, $libelleAutre));
}
public function getgedbeneficiaireprod($d1, $d2, $nomOrigine)
public function getgedbeneficiaireprod($d1, $d2, $nomOrigine, $codeNaturePiece)
{
$idBeneficiaire = $_SESSION['idBeneficiaire_C'];
$idBeneficiaire = $_SESSION['idBeneficiaire_C'];
$lang = $_SESSION['lang'];
$sql = 'call sp_r_get_ged_beneficiaire_prod(?, ?, ?, ?)';
$codeNaturePiece = contruireParamLike($codeNaturePiece);
$sql = 'call sp_r_get_ged_beneficiaire_prod_rh(?, ?, ?, ?, ?, ?);';
//var_dump(array($idBeneficiaire, $d1, $d2, $nomOrigine, $codeNaturePiece, $lang)); die();
$resultat = $this->executerRequete($sql, array($idBeneficiaire, $d1, $d2, $nomOrigine));
$resultat = $this->executerRequete($sql, array($idBeneficiaire, $d1, $d2, $nomOrigine, $codeNaturePiece, $lang));
return $resultat->fetchAll(PDO::FETCH_ASSOC);
}
@ -72,29 +79,30 @@ class Ged extends Modele {
public function getgedadherent($d1, $d2, $nomOrigine, $codeNaturePiece)
{
$idAdherent = $_SESSION['idAdherent_C'];
$lang = $_SESSION['lang'];
$codeNaturePiece = contruireParamLike($codeNaturePiece);
$sql = 'call sp_get_ged_adherent_rh(?, ?, ?, ?, ?);';
$sql = 'call sp_get_ged_adherent_rh(?, ?, ?, ?, ?, ?);';
//var_dump(array($idAdherent, $d1, $d2, $nomOrigine, $codeNaturePiece)); die();
$resultat = $this->executerRequete($sql, array($idAdherent, $d1, $d2, $nomOrigine, $codeNaturePiece));
$resultat = $this->executerRequete($sql, array($idAdherent, $d1, $d2, $nomOrigine, $codeNaturePiece, $lang));
return $resultat->fetchAll(PDO::FETCH_ASSOC);
}
public function enregistrergedadherent($nomOrigine, $nouveau_fichier, $taille, $codeNaturePiece, $libelleDocument)
public function enregistrergedadherent($nomOrigine, $nouveau_fichier, $taille, $codeNaturePiece, $libelleAutre)
{
$idAdherent = $_SESSION['idAdherent_C'];
$user = $_SESSION['login'];
$cheminFichier = $_SESSION['dossierGed'].$nouveau_fichier;
$sql = 'call sp_ajouter_ged_adherent_rh(?, ?, ?, ?, ?)';
$sql = 'call sp_ajouter_ged_adherent_rh(?, ?, ?, ?, ?, ?, ?);';
//var_dump(array($idAdherent, $nomOrigine, $cheminFichier, $taille, $user, $codeNaturePiece, $libelleAutre)); die();
$this->executerRequete($sql, array($idAdherent, $nomOrigine, $cheminFichier, $taille, $user, $codeNaturePiece, $libelleDocument));
$this->executerRequete($sql, array($idAdherent, $nomOrigine, $cheminFichier, $taille, $user, $codeNaturePiece, $libelleAutre));
}
public function getgedpolice($d1, $d2, $nomOrigine)

View File

@ -6,28 +6,31 @@ class Mouvementassure extends Modele {
public function getMouvementassure($ajoutClient, $codeSensMouvement, $valide, $debut, $fin)
{
$codeSensMouvement = contruireParamLike($codeSensMouvement);
$ajoutClient = contruireParamLike($ajoutClient);
$valide = contruireParamLike($valide);
$ajoutClient = contruireParamLike($ajoutClient);
$valide = contruireParamLike($valide);
/*
var_dump(
array(
"idPolice_C" => $_SESSION['idPolice_C'],
"ajoutClient" => $ajoutClient,
"codeSensMouvement" => $codeSensMouvement,
"valide" => $valide,
"debut" => $debut,
"fin" => $fin
)
);
exit();
*/
$sql = 'call sp_get_mouvementassures(?, ?, ?, ?, ?, ?)';
$resultat = $this->executerRequete($sql, array($_SESSION['idPolice_C'], $ajoutClient, $codeSensMouvement, $valide, $debut, $fin));
return $resultat->fetchAll(PDO::FETCH_ASSOC);
}
public function getMouvementassureID($idBeneficiaire, $idAvenant)
{
$sql = 'call sp_get_mouvement_rh_beneficiaire(?, ?)';
$resultat = $this->executerRequete($sql, array($idBeneficiaire, $idAvenant));
return $resultat->fetch(PDO::FETCH_ASSOC);
}
public function reinitvalidation($idMvt)
{
$user = $_SESSION['codeUtilisateur'];
$sql = 'call sp_mouvement_rh_reinitvalidation(?, ?);';
$this->executerRequete($sql, array($idMvt, $user));
}
}

View File

@ -896,4 +896,89 @@ class Police extends Modele {
$this->executerRequete($sql, array($idPolice, $user));
}
public function requeteresumesinistres($dateFacture2) {
$idPolice = $_SESSION['idPolice_C'];
$sql = 'CALL sp_requeteresumesinistres_rh(?, ?);';
$liste = $this->executerRequete($sql,array($idPolice, $dateFacture2));
return $liste->fetchAll(PDO::FETCH_ASSOC);
}
public function requeteresumesinistres_total($dateFacture2) {
$idPolice = $_SESSION['idPolice_C'];
$sql = 'CALL sp_requeteresumesinistres_total_rh(?, ?);';
$liste = $this->executerRequete($sql,array($idPolice, $dateFacture2));
return $liste->fetch(PDO::FETCH_ASSOC);
}
public function getRapportSpPoliceEnteteExport($idPolice, $dateReference)
{
$sql = 'call sp_rapport_sp_police_entete_export(?, ?);';
$sppolice = $this->executerRequete($sql, array($idPolice, $dateReference));
return $sppolice->fetch(PDO::FETCH_ASSOC);
}
public function requeteresumesinistresexport($dateFacture2) {
$idPolice = $_SESSION['idPolice_C'];
$sql = 'CALL sp_requeteresumesinistres_rh_export(?, ?);';
$liste = $this->executerRequete($sql,array($idPolice, $dateFacture2));
return $liste->fetchAll(PDO::FETCH_ASSOC);
}
public function requetedetailsinistres($dateDebut, $dateFin) {
$idPolice = $_SESSION['idPolice_C'];
$sql = 'CALL sp_requetedetailsinistres_rh(?, ?, ?);';
$liste = $this->executerRequete($sql,array($idPolice, $dateDebut, $dateFin));
return $liste->fetchAll(PDO::FETCH_ASSOC);
}
public function requetedetailsinistres_total($dateDebut, $dateFin) {
$idPolice = $_SESSION['idPolice_C'];
$sql = 'CALL sp_requetedetailsinistres_total_rh(?, ?, ?);';
$liste = $this->executerRequete($sql,array($idPolice, $dateDebut, $dateFin));
return $liste->fetch(PDO::FETCH_ASSOC);
}
public function requetefrequenceinistres($dateDebut, $dateFin) {
$idPolice = $_SESSION['idPolice_C'];
$sql = 'CALL sp_requetefrequencesinistres_rh(?, ?, ?);';
$liste = $this->executerRequete($sql,array($idPolice, $dateDebut, $dateFin));
return $liste->fetchAll(PDO::FETCH_ASSOC);
}
public function requetefrequencesinistres_total($dateDebut, $dateFin) {
$idPolice = $_SESSION['idPolice_C'];
$sql = 'CALL sp_requetefrequencesinistres_total_rh(?, ?, ?);';
$liste = $this->executerRequete($sql,array($idPolice, $dateDebut, $dateFin));
return $liste->fetch(PDO::FETCH_ASSOC);
}
}

View File

@ -3,15 +3,19 @@ require_once 'Framework/Modele.php';
class Requetes extends Modele
{
public function getListe() {
$codeProfil = $_SESSION['codeProfil_C'];
public function getListe()
{
if (est_anglophone())
{
$sql = 'SELECT codeRequete as `code`, nomRequeteEng as libelle FROM c_requetes order by 2;';
}
else
{
$sql = 'SELECT codeRequete as `code`, nomRequete as libelle FROM c_requetes order by 2;';
}
$sql = 'call sp_p_get_requetes(?)';
$liste = $this->executerRequete($sql);
$resultat = $this->executerRequete($sql, array($codeProfil));
return $resultat->fetchAll(PDO::FETCH_ASSOC);
}
return $liste->fetchAll(PDO::FETCH_ASSOC);
}
}

View File

@ -2548,7 +2548,7 @@ class PHPExcel_Calculation
public static function unwrapResult($value)
{
if (is_string($value)) {
if ((isset($value{0})) && ($value{0} == '"') && (substr($value, -1) == '"')) {
if ((isset($value[0])) && ($value[0] == '"') && (substr($value, -1) == '"')) {
return substr($value, 1, -1);
}
// Convert numeric errors to NaN error
@ -2669,11 +2669,11 @@ class PHPExcel_Calculation
// Basic validation that this is indeed a formula
// We return an empty array if not
$formula = trim($formula);
if ((!isset($formula{0})) || ($formula{0} != '=')) {
if ((!isset($formula[0])) || ($formula[0] != '=')) {
return array();
}
$formula = ltrim(substr($formula, 1));
if (!isset($formula{0})) {
if (!isset($formula[0])) {
return array();
}
@ -2761,11 +2761,11 @@ class PHPExcel_Calculation
// Basic validation that this is indeed a formula
// We simply return the cell value if not
$formula = trim($formula);
if ($formula{0} != '=') {
if ($formula[0] != '=') {
return self::wrapResult($formula);
}
$formula = ltrim(substr($formula, 1));
if (!isset($formula{0})) {
if (!isset($formula[0])) {
return self::wrapResult($formula);
}
@ -2777,7 +2777,7 @@ class PHPExcel_Calculation
return $cellValue;
}
if (($wsTitle{0} !== "\x00") && ($this->cyclicReferenceStack->onStack($wsCellReference))) {
if (($wsTitle[0] !== "\x00") && ($this->cyclicReferenceStack->onStack($wsCellReference))) {
if ($this->cyclicFormulaCount <= 0) {
$this->cyclicFormulaCell = '';
return $this->raiseFormulaError('Cyclic Reference in Formula');
@ -3031,7 +3031,7 @@ class PHPExcel_Calculation
} else {
if ($value == '') {
return 'an empty string';
} elseif ($value{0} == '#') {
} elseif ($value[0] == '#') {
return 'a '.$value.' error';
} else {
$typeString = 'a string';
@ -3163,10 +3163,10 @@ class PHPExcel_Calculation
// Loop through the formula extracting each operator and operand in turn
while (true) {
//echo 'Assessing Expression '.substr($formula, $index), PHP_EOL;
$opCharacter = $formula{$index}; // Get the first character of the value at the current index position
$opCharacter = $formula[$index]; // Get the first character of the value at the current index position
//echo 'Initial character of expression block is '.$opCharacter, PHP_EOL;
if ((isset(self::$comparisonOperators[$opCharacter])) && (strlen($formula) > $index) && (isset(self::$comparisonOperators[$formula{$index+1}]))) {
$opCharacter .= $formula{++$index};
if ((isset(self::$comparisonOperators[$opCharacter])) && (strlen($formula) > $index) && (isset(self::$comparisonOperators[$formula[$index+1]]))) {
$opCharacter .= $formula[++$index+1];
//echo 'Initial character of expression block is comparison operator '.$opCharacter.PHP_EOL;
}
@ -3454,11 +3454,11 @@ class PHPExcel_Calculation
}
}
// Ignore white space
while (($formula{$index} == "\n") || ($formula{$index} == "\r")) {
while (($formula[$index] == "\n") || ($formula[$index] == "\r")) {
++$index;
}
if ($formula{$index} == ' ') {
while ($formula{$index} == ' ') {
if ($formula[$index] == ' ') {
while ($formula[$index] == ' ') {
++$index;
}
// If we're expecting an operator, but only have a space between the previous and next operands (and both are
@ -3888,7 +3888,7 @@ class PHPExcel_Calculation
// echo 'Token is a PHPExcel constant: '.$excelConstant.'<br />';
$stack->push('Constant Value', self::$excelConstants[$excelConstant]);
$this->_debugLog->writeDebugLog('Evaluating Constant ', $excelConstant, ' as ', $this->showTypeDetails(self::$excelConstants[$excelConstant]));
} elseif ((is_numeric($token)) || ($token === null) || (is_bool($token)) || ($token == '') || ($token{0} == '"') || ($token{0} == '#')) {
} elseif ((is_numeric($token)) || ($token === null) || (is_bool($token)) || ($token == '') || ($token[0] == '"') || ($token[0] == '#')) {
// echo 'Token is a number, boolean, string, null or an Excel error<br />';
$stack->push('Value', $token);
// if the token is a named range, push the named range name onto the stack
@ -3933,13 +3933,13 @@ class PHPExcel_Calculation
if (is_string($operand)) {
// We only need special validations for the operand if it is a string
// Start by stripping off the quotation marks we use to identify true excel string values internally
if ($operand > '' && $operand{0} == '"') {
if ($operand > '' && $operand[0] == '"') {
$operand = self::unwrapResult($operand);
}
// If the string is a numeric value, we treat it as a numeric, so no further testing
if (!is_numeric($operand)) {
// If not a numeric, test to see if the value is an Excel error, and so can't be used in normal binary operations
if ($operand > '' && $operand{0} == '#') {
if ($operand > '' && $operand[0] == '#') {
$stack->push('Value', $operand);
$this->_debugLog->writeDebugLog('Evaluation Result is ', $this->showTypeDetails($operand));
return false;
@ -3995,10 +3995,10 @@ class PHPExcel_Calculation
}
// Simple validate the two operands if they are string values
if (is_string($operand1) && $operand1 > '' && $operand1{0} == '"') {
if (is_string($operand1) && $operand1 > '' && $operand1[0] == '"') {
$operand1 = self::unwrapResult($operand1);
}
if (is_string($operand2) && $operand2 > '' && $operand2{0} == '"') {
if (is_string($operand2) && $operand2 > '' && $operand2[0] == '"') {
$operand2 = self::unwrapResult($operand2);
}

View File

@ -318,10 +318,10 @@ class PHPExcel_Calculation_Functions
public static function ifCondition($condition)
{
$condition = PHPExcel_Calculation_Functions::flattenSingleValue($condition);
if (!isset($condition{0})) {
if (!isset($condition[0])) {
$condition = '=""';
}
if (!in_array($condition{0}, array('>', '<', '='))) {
if (!in_array($condition[0], array('>', '<', '='))) {
if (!is_numeric($condition)) {
$condition = PHPExcel_Calculation::wrapResult(strtoupper($condition));
}
@ -559,7 +559,7 @@ class PHPExcel_Calculation_Functions
return (integer) $value;
case 'string':
// Errors
if ((strlen($value) > 0) && ($value{0} == '#')) {
if ((strlen($value) > 0) && ($value[0] == '#')) {
return $value;
}
break;
@ -609,7 +609,7 @@ class PHPExcel_Calculation_Functions
return 64;
} elseif (is_string($value)) {
// Errors
if ((strlen($value) > 0) && ($value{0} == '#')) {
if ((strlen($value) > 0) && ($value[0] == '#')) {
return 16;
}
return 2;

View File

@ -809,19 +809,19 @@ class PHPExcel_Cell
// We also use the language construct isset() rather than the more costly strlen() function to match the length of $pString
// for improved performance
if (isset($pString{0})) {
if (!isset($pString{1})) {
if (isset($pString[0])) {
if (!isset($pString[1])) {
$_indexCache[$pString] = $_columnLookup[$pString];
return $_indexCache[$pString];
} elseif (!isset($pString{2})) {
$_indexCache[$pString] = $_columnLookup[$pString{0}] * 26 + $_columnLookup[$pString{1}];
} elseif (!isset($pString[2])) {
$_indexCache[$pString] = $_columnLookup[$pString[0]] * 26 + $_columnLookup[$pString[1]];
return $_indexCache[$pString];
} elseif (!isset($pString{3})) {
$_indexCache[$pString] = $_columnLookup[$pString{0}] * 676 + $_columnLookup[$pString{1}] * 26 + $_columnLookup[$pString{2}];
$_indexCache[$pString] = $_columnLookup[$pString[0]] * 676 + $_columnLookup[$pString[1]] * 26 + $_columnLookup[$pString[2]];
return $_indexCache[$pString];
}
}
throw new PHPExcel_Exception("Column string index can not be " . ((isset($pString{0})) ? "longer than 3 characters" : "empty"));
throw new PHPExcel_Exception("Column string index can not be " . ((isset($pString[0])) ? "longer than 3 characters" : "empty"));
}
/**

View File

@ -79,15 +79,22 @@ class PHPExcel_Cell_DefaultValueBinder implements PHPExcel_Cell_IValueBinder
return PHPExcel_Cell_DataType::TYPE_STRING;
} elseif ($pValue instanceof PHPExcel_RichText) {
return PHPExcel_Cell_DataType::TYPE_INLINE;
} elseif ($pValue{0} === '=' && strlen($pValue) > 1) {
}
// CORRECTION ICI : On vérifie si c'est une string avant d'accéder à [0]
elseif (is_string($pValue) && strlen($pValue) > 1 && $pValue[0] === '=') {
return PHPExcel_Cell_DataType::TYPE_FORMULA;
} elseif (is_bool($pValue)) {
}
elseif (is_bool($pValue)) {
return PHPExcel_Cell_DataType::TYPE_BOOL;
} elseif (is_float($pValue) || is_int($pValue)) {
return PHPExcel_Cell_DataType::TYPE_NUMERIC;
} elseif (preg_match('/^[\+\-]?([0-9]+\\.?[0-9]*|[0-9]*\\.?[0-9]+)([Ee][\-\+]?[0-2]?\d{1,3})?$/', $pValue)) {
$tValue = ltrim($pValue, '+-');
if (is_string($pValue) && $tValue{0} === '0' && strlen($tValue) > 1 && $tValue{1} !== '.') {
// CORRECTION ICI AUSSI : On s'assure que $tValue est une string et n'est pas vide
if (is_string($tValue) && strlen($tValue) > 1 && $tValue[0] === '0' && $tValue[1] !== '.') {
return PHPExcel_Cell_DataType::TYPE_STRING;
} elseif ((strpos($pValue, '.') === false) && ($pValue > PHP_INT_MAX)) {
return PHPExcel_Cell_DataType::TYPE_STRING;
@ -100,3 +107,4 @@ class PHPExcel_Cell_DefaultValueBinder implements PHPExcel_Cell_IValueBinder
return PHPExcel_Cell_DataType::TYPE_STRING;
}
}

View File

@ -881,8 +881,8 @@ class PHPExcel_ReferenceHelper
list($newColumn, $newRow) = PHPExcel_Cell::coordinateFromString($pCellReference);
// Verify which parts should be updated
$updateColumn = (($newColumn{0} != '$') && ($beforeColumn{0} != '$') && (PHPExcel_Cell::columnIndexFromString($newColumn) >= PHPExcel_Cell::columnIndexFromString($beforeColumn)));
$updateRow = (($newRow{0} != '$') && ($beforeRow{0} != '$') && $newRow >= $beforeRow);
$updateColumn = (($newColumn[0] != '$') && ($beforeColumn[0] != '$') && (PHPExcel_Cell::columnIndexFromString($newColumn) >= PHPExcel_Cell::columnIndexFromString($beforeColumn)));
$updateRow = (($newRow[0] != '$') && ($beforeRow[0] != '$') && $newRow >= $beforeRow);
// Create new column reference
if ($updateColumn) {

View File

@ -717,7 +717,7 @@ class PHPExcel_Worksheet_AutoFilter
);
} else {
// Date based
if ($dynamicRuleType{0} == 'M' || $dynamicRuleType{0} == 'Q') {
if ($dynamicRuleType[0] == 'M' || $dynamicRuleType[0] == 'Q') {
// Month or Quarter
sscanf($dynamicRuleType, '%[A-Z]%d', $periodType, $period);
if ($periodType == 'M') {

View File

@ -60,9 +60,10 @@ class PHPExcel_WorksheetIterator implements Iterator
unset($this->subject);
}
/**
/**
* Rewind iterator
*/
#[\ReturnTypeWillChange]
public function rewind()
{
$this->position = 0;
@ -73,6 +74,7 @@ class PHPExcel_WorksheetIterator implements Iterator
*
* @return PHPExcel_Worksheet
*/
#[\ReturnTypeWillChange]
public function current()
{
return $this->subject->getSheet($this->position);
@ -83,6 +85,7 @@ class PHPExcel_WorksheetIterator implements Iterator
*
* @return int
*/
#[\ReturnTypeWillChange]
public function key()
{
return $this->position;
@ -91,6 +94,7 @@ class PHPExcel_WorksheetIterator implements Iterator
/**
* Next value
*/
#[\ReturnTypeWillChange]
public function next()
{
++$this->position;
@ -101,6 +105,7 @@ class PHPExcel_WorksheetIterator implements Iterator
*
* @return boolean
*/
#[\ReturnTypeWillChange]
public function valid()
{
return $this->position < $this->subject->getSheetCount();

View File

@ -30,10 +30,11 @@
<tr>
<td><?= $idQuittance ?></td>
<td class="text-center">
<button type="button" class="form-control btn btn-primary"
<!--<button type="button" class="form-control btn btn-primary"
onClick="javascript:afficher_emission(<?= $idEmission ?>);">
<?= $numeroEmission ?>
</button>
</button>-->
<?= $numeroEmission ?>
</td>
<td class="text-center small"><?= dateLang($this->nettoyer($quittance['dateEmission']), $_SESSION['lang']) ?></td>
<td class="text-center small"><?= dateLang($this->nettoyer($quittance['dateEffet']), $_SESSION['lang']) ?></td>

View File

@ -1,50 +1,54 @@
<div id="div_ged" class="card border-0 shadow-sm">
<?php if((isset($msgErreur)) && ($msgErreur > " ")) : ?>
<div class="alert alert-danger m-3 border-0 shadow-xs"><?= $msgErreur ?></div>
<?php endif; ?>
<div class="table-responsive">
<table id="table_ged_famille" class="table table-hover align-middle mb-0" style="font-size:8.5pt; width:100%;">
<thead class="table-dark text-nowrap">
<tr>
<th class="text-center">Date</th>
<th class="text-center">Src</th>
<th><?= _("Souscripteur / Police") ?></th>
<th><?= _("Bénéficiaire (Adhérent)") ?></th>
<th><?= _("Type du Document") ?></th>
<th><?= _("Nom du Document") ?></th>
<th class="text-center no-export"><?= _("Action") ?></th>
</tr>
</thead>
<tbody>
<?php foreach ($geds as $ged):
$idGed = $this->nettoyer($ged['idGed']);
$cheminFichier = $this->nettoyer($ged['cheminFichier']);
?>
<tr class="text-nowrap">
<td class="text-center small text-muted"><?= dateheureLang($this->nettoyer($ged['dateSysteme'])) ?></td>
<td class="text-center"><span class="badge bg-light text-dark border small fw-normal"><?= $this->nettoyer($ged['source']) ?></span></td>
<td>
<div class="fw-bold"><?= $this->nettoyer($ged['souscripteur']) ?></div>
<div class="small text-primary"> <?= $this->nettoyer($ged['numeroPolice']) ?></div>
</td>
<td>
<div class="fw-bold"><?= $this->nettoyer($ged['beneficiaire']) ?></div>
<div class="small text-muted italic"><?= $this->nettoyer($ged['adherent']) ?></div>
</td>
<td class="small"><?= $this->nettoyer($ged['libelleDocument']) ?></td>
<td class="small text-truncate" style="max-width: 200px;" title="<?= $this->nettoyer($ged['nomOrigine']) ?>">
<i class="far fa-file-alt me-1 text-secondary"></i> <?= $this->nettoyer($ged['nomOrigine']) ?>
</td>
<td class="text-center">
<a class="btn btn-xs btn-outline-danger shadow-sm fw-bold px-3" href="<?= $cheminFichier ?>" target="_blank">
<i class="fas fa-download me-1"></i> <?= _("Télécharger") ?>
</a>
</td>
</tr>
<?php endforeach; ?>
</tbody>
</table>
</div>
<div class="table-responsive">
<table id="table_ged_famille" class="table table-hover align-middle mb-0" style="font-size:8.5pt; width:100%;">
<thead class="table-dark text-nowrap">
<tr>
<th class="text-center">Date</th>
<th class="text-center">Src</th>
<th><?= _("Souscripteur / Police") ?></th>
<th><?= _("Bénéficiaire / Adhérent") ?></th>
<th><?= _("Type du Document") ?></th>
<th><?= _("Nom du Document") ?></th>
<th class="text-center no-export"><?= _("Action") ?></th>
</tr>
</thead>
<tbody>
<?php foreach ($geds as $ged):
$idGed = $this->nettoyer($ged['idGed']);
$cheminFichier = $this->nettoyer($ged['cheminFichier']);
if($ged['codeNaturePiece'] == "AUT")
{
$libelleType = $this->nettoyer($ged['libelleAutre']);
} else
{
$libelleType = $this->nettoyer($ged['libelleType']);
}
?>
<tr class="text-nowrap">
<td class="text-center small text-muted"><?= dateheureLang($this->nettoyer($ged['dateSysteme'])) ?></td>
<td class="text-center"><span class="badge bg-light text-dark border small fw-normal"><?= $this->nettoyer($ged['source']) ?></span></td>
<td>
<div class="fw-bold"><?= $this->nettoyer($ged['souscripteur']) ?></div>
<div class="small text-primary"> <?= $this->nettoyer($ged['numeroPolice']) ?></div>
</td>
<td>
<div class="fw-bold"><?= $this->nettoyer($ged['beneficiaire']) ?></div>
<div class="small text-muted italic"><?= $this->nettoyer($ged['adherent']) ?></div>
</td>
<td class="small text-uppercase"><?= $libelleType; ?></td>
<td class="small text-truncate" style="max-width: 200px;" title="<?= $this->nettoyer($ged['nomOrigine']) ?>">
<i class="far fa-file-alt me-1 text-secondary"></i> <?= $this->nettoyer($ged['nomOrigine']) ?>
</td>
<td class="text-center">
<a class="btn btn-xs btn-outline-danger shadow-sm fw-bold px-3" href="<?= $cheminFichier ?>" target="_blank" style="font-size:9pt;">
<i class="fas fa-download me-1"></i> <?= _("Télécharger") ?>
</a>
</td>
</tr>
<?php endforeach; ?>
</tbody>
</table>
</div>

View File

@ -1,58 +1,60 @@
<div id="div_ged" class="card border-0 shadow-sm overflow-hidden">
<?php if((isset($msgErreur)) && ($msgErreur > " ")) : ?>
<div class="alert alert-danger m-3 border-0 shadow-xs text-center fw-bold">
<i class="fas fa-exclamation-triangle me-2"></i> <?= $msgErreur ?>
</div>
<?php endif; ?>
<div class="table-responsive">
<table class="table table-hover align-middle mb-0" style="font-size:8.5pt;">
<thead class="table-dark text-nowrap">
<tr>
<th class="text-center px-3">Date</th>
<th class="text-center">Src</th>
<th><?= _("Souscripteur / Police") ?></th>
<th><?= _("Bénéficiaire / Adhérent") ?></th>
<th><?= _("Type du Document") ?></th>
<th><?= _("Nom du Document") ?></th>
<th class="text-center no-export"><?= _("Action") ?></th>
</tr>
</thead>
<tbody>
<?php foreach ($geds as $ged):
$idGed = $this->nettoyer($ged['idGed']);
$cheminFichier = $this->nettoyer($ged['cheminFichier']);
<div class="table-responsive">
<table class="table table-hover align-middle mb-0" style="font-size:8.5pt;">
<thead class="table-dark text-nowrap">
<tr>
<th class="text-center px-3">Date</th>
<th class="text-center">Src</th>
<th><?= _("Souscripteur / Police") ?></th>
<th><?= _("Prestataire") ?></th>
<th><?= _("Bénéficiaire (Adhérent)") ?></th>
<th><?= _("Document") ?></th>
<th class="text-center"><?= _("Action") ?></th>
</tr>
</thead>
<tbody>
<?php foreach ($geds as $ged):
$idGed = $this->nettoyer($ged['idGed']);
$cheminFichier = $this->nettoyer($ged['cheminFichier']);
?>
<tr class="text-nowrap">
<td class="text-center small text-muted"><?= dateheureLang($this->nettoyer($ged['dateSysteme'])) ?></td>
<td class="text-center">
<span class="badge bg-light text-dark border small fw-normal"><?= $this->nettoyer($ged['source']) ?></span>
</td>
<td>
<div class="fw-bold text-dark"><?= $this->nettoyer($ged['souscripteur']) ?></div>
<div class="small text-primary"> <?= $this->nettoyer($ged['numeroPolice']) ?></div>
</td>
<td class="small text-muted text-truncate" style="max-width: 150px;"><?= $this->nettoyer($ged['prestataire']) ?></td>
<td>
<div class="fw-bold"><?= $this->nettoyer($ged['beneficiaire']) ?></div>
<div class="small text-muted italic">
<?= $this->nettoyer($ged['adherent']) ?> (<?= $this->nettoyer($ged['numeroBeneficiaire']) ?>)
</div>
</td>
<td class="small">
<i class="far fa-file-pdf text-danger me-1"></i>
<span class="text-truncate d-inline-block" style="max-width: 180px;" title="<?= $this->nettoyer($ged['nomOrigine']) ?>">
<?= $this->nettoyer($ged['nomOrigine']) ?>
</span>
</td>
<td class="text-center">
<a href="<?= $cheminFichier ?>" target="_blank" class="btn btn-xs btn-outline-danger shadow-sm px-3 fw-bold border-2">
<i class="fas fa-download me-1"></i><?= _("TELECHARGER") ?>
</a>
</td>
</tr>
<?php endforeach; ?>
</tbody>
</table>
</div>
if($ged['codeNaturePiece'] == "AUT")
{
$libelleType = $this->nettoyer($ged['libelleAutre']);
} else
{
$libelleType = $this->nettoyer($ged['libelleType']);
}
?>
<tr class="text-nowrap">
<td class="text-center small text-muted"><?= dateheureLang($this->nettoyer($ged['dateSysteme'])) ?></td>
<td class="text-center">
<span class="badge bg-light text-dark border small fw-normal"><?= $this->nettoyer($ged['source']) ?></span>
</td>
<td>
<div class="fw-bold text-dark"><?= $this->nettoyer($ged['souscripteur']) ?></div>
<div class="small text-primary"> <?= $this->nettoyer($ged['numeroPolice']) ?></div>
</td>
<td>
<div class="fw-bold"><?= $this->nettoyer($ged['beneficiaire']) ?></div>
<div class="small text-muted italic">
<?= $this->nettoyer($ged['adherent']) ?> (<?= $this->nettoyer($ged['numeroBeneficiaire']) ?>)
</div>
</td>
<td class="small text-uppercase"><?= $libelleType; ?></td>
<td class="small">
<i class="far fa-file-pdf text-danger me-1"></i>
<span class="text-truncate d-inline-block" style="max-width: 180px;" title="<?= $this->nettoyer($ged['nomOrigine']) ?>">
<?= $this->nettoyer($ged['nomOrigine']) ?>
</span>
</td>
<td class="text-center">
<a href="<?= $cheminFichier ?>" target="_blank" class="btn btn-xs btn-outline-danger shadow-sm px-3 fw-bold border-2" style="font-size:9pt;">
<i class="fas fa-download me-1"></i><?= _("TELECHARGER") ?>
</a>
</td>
</tr>
<?php endforeach; ?>
</tbody>
</table>
</div>

View File

@ -1,6 +1,6 @@
<div class="table-responsive shadow-sm rounded border animate__animated animate__fadeIn">
<table class="table table-hover align-middle mb-0 tabliste compact" style="font-size: 0.85rem;">
<thead class="table-light text-secondary">
<table class="table table-hover align-middle mb-0 tabliste compact w-100" style="font-size: 0.85rem;">
<thead class="table-light text-secondary text-uppercase small">
<tr>
<th class="text-center border-0 py-3"><?= _("Date Effet") ?></th>
<th class="text-center border-0"><?= _("Mvt") ?></th>
@ -10,25 +10,24 @@
<th class="text-center border-0"><?= _("Saisie / Par") ?></th>
<th class="text-center border-0"><?= _("Statut") ?></th>
<th class="text-center border-0"><?= _("Validation") ?></th>
<th class="text-center border-0"><?= _("Saisie Client") ?></th>
<th class="text-center border-0"><?= _("Saisie Client") ?></th>
</tr>
</thead>
<tbody>
<?php foreach ($mouvementassures as $mvt):
$idMvt = $this->nettoyer($mvt['ajoutClient']);
$ajoutClient = $this->nettoyer($mvt['ajoutClient']);
$valide = $this->nettoyer($mvt['valide']);
$sensMvt = $mvt['sensMouvement']; // On suppose que '0' = Entrée, '1' = Sortie
$libelleSensMouvement = est_anglophone() ? $mvt['libelleSensMouvementEng'] : $mvt['libelleSensMouvement'];
$LibelleAjoutClient = _("Non");
if ($ajoutClient == "1")
{
$LibelleAjoutClient = _("Oui");
}
$valide = $this->nettoyer($mvt['valide']);
$rejet = $this->nettoyer($mvt['rejet']);
$motif = $this->nettoyer($mvt['motif']);
$aCorriger = $this->nettoyer($mvt['aCorriger']);
$sensMvt = $mvt['sensMouvement'];
$idBeneficiaire = $this->nettoyer($mvt['idBeneficiaire']);
$numeroBeneficiaire = $this->nettoyer($mvt['numeroBeneficiaire']);
?>
$libelleSensMouvement = est_anglophone() ? $mvt['libelleSensMouvementEng'] : $mvt['libelleSensMouvement'];
$idBeneficiaire = $this->nettoyer($mvt['idBeneficiaire']);
$idAvenant = $this->nettoyer($mvt['idAvenant']);
?>
<tr>
<td class="text-center fw-bold text-dark">
<?= dateLang($this->nettoyer($mvt['dateEffet']), $_SESSION['lang']) ?>
@ -47,7 +46,7 @@
</td>
<td>
<div class="fw-bold text-uppercase"><?= $this->nettoyer($mvt['beneficiaire']) ?></div>
<div class="fw-bold text-uppercase text-secondary"><?= $this->nettoyer($mvt['beneficiaire']) ?></div>
<div class="text-muted x-small"><i class="fas fa-id-card me-1"></i><?= $this->nettoyer($mvt['numeroBeneficiaire']) ?></div>
</td>
@ -60,38 +59,63 @@
</td>
<td class="text-center">
<div class="small"><?= dateheureLang($this->nettoyer($mvt['dateSysteme'])) ?></div>
<div class="x-small text-muted fw-bold"><?= $this->nettoyer($mvt['codeUtilisateur']) ?></div>
<div class="small fw-bold"><?= $this->nettoyer($mvt['codeUtilisateur']) ?></div>
<div class="x-small text-muted italic"><?= dateheureLang($this->nettoyer($mvt['dateSysteme']), $_SESSION['lang']) ?></div>
</td>
<td class="text-center">
<?php if ($valide == "1"): ?>
<span class="text-success shadow-sm" title="<?= _('Validé') ?>">
<i class="fas fa-check-circle fa-lg"></i>
</span>
<?php if ($rejet == "0"): ?>
<span class="text-success fw-bold small mb-1 italic">
<i class="fas fa-check-circle"></i> <?= _('Validé') ?>
</span>
<?php elseif ($aCorriger == "1"): ?>
<div class="d-flex flex-column align-items-center">
<span class="text-info fw-bold small mb-1 italic"><i class="fas fa-exclamation-triangle"></i> <?= _('A Corriger') ?></span>
<button class="btn btn-xs btn-outline-info py-0 px-2" onclick="motif_rejet('<?= $motif; ?>');">
<i class="fas fa-eye"></i> <?= _("Motif") ?>
</button>
</div>
<?php else: ?>
<div class="d-flex flex-column align-items-center">
<span class="text-danger fw-bold small mb-1 italic"><i class="fas fa-times-circle"></i> <?= _('Rejeté') ?></span>
<button class="btn btn-xs btn-outline-danger py-0 px-2" onclick="motif_rejet('<?= $motif; ?>');">
<i class="fas fa-eye"></i> <?= _("Motif") ?>
</button>
</div>
<?php endif; ?>
<?php else: ?>
<span class="text-warning opacity-50" title="<?= _('En attente') ?>">
<i class="fas fa-clock fa-lg"></i>
<span class="text-muted opacity-50 small mb-1 italic">
<i class="fas fa-clock fa-lg"></i> <?= _('En attente') ?>
</span>
<?php endif; ?>
</td>
<td class="text-center small">
<td class="text-center">
<?php if ($valide == "1"): ?>
<div class="fw-bold text-dark"><?= $this->nettoyer($mvt['userValidation']) ?></div>
<div class="x-small text-muted"><?= dateheureLang($this->nettoyer($mvt['dateValidation'])) ?></div>
<?php if ($aCorriger == "0"): ?>
<div class="small fw-bold text-dark"><?= $this->nettoyer($mvt['userValidation']) ?></div>
<div class="x-small text-muted"><?= dateheureLang($this->nettoyer($mvt['dateValidation']), $_SESSION['lang']) ?></div>
<?php else: ?>
<button class="btn btn-xs btn-info fw-bold shadow-sm rounded-pill px-3 transition-hover text-white"
onclick="corriger_mvt_beneficiaire(<?= $idBeneficiaire; ?>, <?= $idAvenant; ?>);">
<i class="fas fa-tools me-1"></i> <?= _("Corriger") ?>
</button>
<?php endif; ?>
<?php else: ?>
<span class="text-muted italic small"></span>
<button class="badge rounded-pill bg-warning text-dark border-0 shadow-sm transition-hover"
onclick="javascript:modifier_beneficiaire(<?= $idBeneficiaire; ?>);"
style="cursor: pointer; transition: all 0.2s ease-in-out;"
title="<?= est_anglophone() ? "Edit the beneficiary" : 'Modifier le bénéficiaire' ?>">
<i class="fas fa-edit me-1"></i> <?= _("En attente") ?>
<button class="btn btn-xs btn-warning fw-bold shadow-sm rounded-pill px-3 transition-hover text-white"
onclick="modifier_beneficiaire('<?= $idBeneficiaire; ?>');">
<i class="fas fa-edit me-1"></i> <?= _("Modifier") ?>
</button>
<?php endif; ?>
</td>
<td class="text-center">
<span class="badge bg-light text-secondary border"><?= $LibelleAjoutClient ?></span>
<?php if ($ajoutClient == "1"): ?>
<span class="badge bg-primary-subtle text-primary border border-primary-subtle"><?= _("Oui") ?></span>
<?php else: ?>
<span class="badge bg-light text-muted border"><?= _("Non") ?></span>
<?php endif; ?>
</td>
</tr>
<?php endforeach; ?>
@ -102,10 +126,10 @@
<style>
.x-small { font-size: 0.7rem; }
.italic { font-style: italic; }
.bg-success-subtle { background-color: #d1e7dd; }
.bg-danger-subtle { background-color: #f8d7da; }
.transition-hover:hover {
transform: scale(1.05);
background-color: #ffc107 !important; /* Un peu plus lumineux au survol */
}
</style>
.bg-success-subtle { background-color: #d1e7dd !important; }
.bg-danger-subtle { background-color: #f8d7da !important; }
.bg-primary-subtle { background-color: #cfe2ff !important; }
.btn-xs { padding: 0.1rem 0.3rem; font-size: 0.7rem; line-height: 1.5; border-radius: 0.2rem; }
.transition-hover { transition: all 0.2s ease-in-out; }
.transition-hover:hover { transform: translateY(-2px); box-shadow: 0 4px 8px rgba(0,0,0,0.1) !important; }
</style>

View File

@ -0,0 +1,102 @@
<?php $nbligne = 0; ?>
<div id="div_detail_requete" class="card border-0 shadow-sm animate__animated animate__fadeIn">
<div class="card-header bg-dark text-white p-4 border-0" style="border-radius: 12px 12px 0 0;">
<div class="row w-100 m-0 align-items-center">
<div class="col-md-6 border-end border-secondary text-center py-2">
<div class="text-uppercase opacity-75 mb-2" style="font-size: 9pt; letter-spacing: 1px;">
<i class="fas fa-layer-group me-2 text-primary"></i> <?= _("Volume Total") ?>
</div>
<div class="display-6 fw-bold">
<?= format_N($rpsinistres_total['nbLigne']) ?>
<small class="h5 opacity-50 fw-normal"><?= _("Lignes") ?></small>
</div>
</div>
<div class="col-md-6 text-center py-2">
<div class="text-uppercase opacity-75 mb-2" style="font-size: 9pt; letter-spacing: 1px;">
<i class="fas fa-money-bill-wave me-2 text-warning"></i> <?= _("Montant Total") ?>
</div>
<div class="display-6 fw-bold text-warning">
<?= format_N($rpsinistres_total['montant_total']) ?>
</div>
</div>
</div>
</div>
<div class="table-responsive">
<table class="table table-striped table-bordered table-hover tabliste compact w-100" id="table_sinistres_detail" style="font-size:0.85rem; white-space:nowrap;">
<thead class="table-light border-bottom text-uppercase small fw-bold">
<tr>
<th class="text-center"><?= _("N° Bénéficiaire") ?></th>
<th><?= _("Bénéficiaire") ?></th>
<th class="text-center"><?= _("Date") ?></th>
<th class="text-center"><?= _("Prestataire") ?></th>
<th class="text-center"><?= _("Catégorie") ?></th>
<th class="text-center"><?= _("N° Facture") ?></th>
<th class="text-center"><?= _("Garantie") ?></th>
<th class="text-end px-3"><?= _("Montant") ?></th>
</tr>
</thead>
<tbody>
<?php foreach ($rpsinistres as $rpsinistre):
$nbligne++;
$CategoriePrestataire = est_anglophone()
? $this->nettoyer($rpsinistre['CategoriePrestataireEng'])
: $this->nettoyer($rpsinistre['CategoriePrestataire']);
?>
<tr>
<td class="text-center fw-bold text-primary"><?= $this->nettoyer($rpsinistre['numeroBeneficiaire']) ?></td>
<td class="text-uppercase"><?= $this->nettoyer($rpsinistre['Beneficiaire']) ?></td>
<td class="text-center text-muted"><?= dateLang($this->nettoyer($rpsinistre['Date']), $_SESSION['lang']) ?></td>
<td><?= $this->nettoyer($rpsinistre['Prestataire']) ?></td>
<td class="text-center small"><?= $CategoriePrestataire ?></td>
<td class="text-center">#<?= $this->nettoyer($rpsinistre['idFacture']) ?></td>
<td class="text-center"><span class="badge bg-light text-dark border"><?= $this->nettoyer($rpsinistre['codeGarantie']) ?></span></td>
<td class="text-end fw-bold px-3"><?= format_N($this->nettoyer($rpsinistre['fraisReel'])); ?></td>
</tr>
<?php endforeach; ?>
</tbody>
<tfoot class="table-dark">
<tr>
<td colspan="7" class="text-center text-dark fw-bold text-uppercase"><?= _("Total Général") ?></td>
<td class="text-end fw-bold px-3 fs-6 text-dark"><?= format_N($rpsinistres_total['montant_total']) ?></td>
</tr>
</tfoot>
</table>
</div>
<div class="card-footer bg-white d-flex justify-content-between align-items-center py-2">
<span class="text-muted small italic">
<i class="fas fa-history me-1"></i><?= _("Généré le") ?> <?= dateheureLang(date('Y-m-d H:i:s'), $_SESSION['lang']) ?>
</span>
<span class="badge bg-secondary opacity-75"><?= $_SESSION['numeroPolice_C'] ?></span>
</div>
<input class="sr-only" type="text" id="nbligne_info" name="nbligne_info" value="<?= $nbligne ?>">
</div>
<script>
$(document).ready(function() {
const titreRapport = "<?= mb_strtoupper(_('RAPPORT DU DÉTAIL DES SINISTRES'), 'UTF-8'); ?>";
const infosPolice =
"\n<?= _('Souscripteur') ?> : <?= $_SESSION['nomClient_C'] ?>\n" +
"<?= _('Numéro Police') ?> : <?= $_SESSION['numeroPolice_C'] ?>\n" +
"<?= _('Période Couverte') ?> : <?= dateLang($_SESSION['dateEffet_C'], $_SESSION['lang']) ?> <?= _('au') ?> <?= dateLang($_SESSION['dateEcheance_C'], $_SESSION['lang']) ?>\n\n" +
"<?= _('Période Analyse') ?> : <?= $_SESSION['dateDebutRequete'] ?> <?= _('au') ?> <?= $_SESSION['dateFinRequete'] ?>\n";
appliquerDataTable('#table_sinistres_detail', {
pageLength: 50,
order: [[2, "desc"]], // Tri par date décroissante
buttons: [
{ extend: 'excel', title: titreRapport, messageTop: infosPolice, footer: true },
{ extend: 'pdf', title: titreRapport, messageTop: infosPolice, orientation: 'landscape', footer: true },
{ extend: 'print', title: titreRapport, messageTop: infosPolice, footer: true }
]
}, titreRapport, infosPolice);
$('#nbligne').val($('#nbligne_info').val());
});
</script>

View File

@ -0,0 +1,42 @@
<?php
// Sécurisation des dates par défaut
$_SESSION['dateDebutRequete'] = isset($_SESSION['dateDebutRequete'])
? dateLang($_SESSION['dateDebutRequete'], $_SESSION['lang'])
: dateLang($this->nettoyer($sppoliceentete['dateEffet']), $_SESSION['lang']);
$_SESSION['dateFinRequete'] = dateCouranteLang($_SESSION['lang']);
?>
<div id="div_ente_requete" class="card border-0 shadow-sm bg-light mb-2" style="border-radius: 12px;">
<div class="card-body p-3">
<div class="row g-3 align-items-end">
<div class="col-12 col-md-6">
<label class="form-label small fw-bold text-muted text-uppercase mb-1">
<i class="fas fa-calendar-alt me-1 text-primary"></i> <?= _("Période de recherche") ?>
</label>
<div class="input-group input-group-sm">
<input class="form-control datepicker text-center fw-bold" type="text" id="dateFacture1" name="dateFacture1"
value="<?= $_SESSION['dateDebutRequete']; ?>" required>
<span class="input-group-text bg-white fw-bold border-start-0 border-end-0"><?= _("au") ?></span>
<input class="form-control datepicker text-center fw-bold" type="text" id="dateFacture2" name="dateFacture2"
value="<?= $_SESSION['dateFinRequete'] ?>" required>
</div>
</div>
<div class="col-6 col-md-3">
<label class="form-label small fw-bold text-muted text-uppercase mb-1"><?= _("Lignes trouvées") ?></label>
<div class="input-group input-group-sm">
<span class="input-group-text bg-dark text-white border-dark"><i class="fas fa-list-ol"></i></span>
<input class="form-control text-center bg-white fw-bold" type="text" id="nbligne" name="nbligne" value="0" readonly>
</div>
</div>
<div class="col-6 col-md-3">
<button type="button" class="btn btn-primary btn-sm w-100 fw-bold shadow-sm py-2" onclick="requetes_sinistres_rh();">
<i class="fas fa-search me-2"></i><?= _("Afficher") ?>
</button>
</div>
</div>
</div>
</div>

View File

@ -0,0 +1,42 @@
<?php
// Sécurisation des dates par défaut
$_SESSION['dateDebutRequete'] = isset($_SESSION['dateDebutRequete'])
? dateLang($_SESSION['dateDebutRequete'], $_SESSION['lang'])
: dateLang($this->nettoyer($sppoliceentete['dateEffet']), $_SESSION['lang']);
$_SESSION['dateFinRequete'] = dateCouranteLang($_SESSION['lang']);
?>
<div id="div_ente_requete" class="card border-0 shadow-sm bg-light mb-2" style="border-radius: 12px;">
<div class="card-body p-3">
<div class="row g-3 align-items-end">
<div class="col-12 col-md-6">
<label class="form-label small fw-bold text-muted text-uppercase mb-1">
<i class="fas fa-calendar-alt me-1 text-primary"></i> <?= _("Période de recherche") ?>
</label>
<div class="input-group input-group-sm">
<input class="form-control datepicker text-center fw-bold" type="text" id="dateFacture1" name="dateFacture1"
value="<?= $_SESSION['dateDebutRequete']; ?>" required>
<span class="input-group-text bg-white fw-bold border-start-0 border-end-0"><?= _("au") ?></span>
<input class="form-control datepicker text-center fw-bold" type="text" id="dateFacture2" name="dateFacture2"
value="<?= $_SESSION['dateFinRequete'] ?>" required>
</div>
</div>
<div class="col-6 col-md-3">
<label class="form-label small fw-bold text-muted text-uppercase mb-1"><?= _("Lignes trouvées") ?></label>
<div class="input-group input-group-sm">
<span class="input-group-text bg-dark text-white border-dark"><i class="fas fa-list-ol"></i></span>
<input class="form-control text-center bg-white fw-bold" type="text" id="nbligne" name="nbligne" value="0" readonly>
</div>
</div>
<div class="col-6 col-md-3">
<button type="button" class="btn btn-primary btn-sm w-100 fw-bold shadow-sm py-2" onclick="requetes_sinistres_rh();">
<i class="fas fa-search me-2"></i><?= _("Afficher") ?>
</button>
</div>
</div>
</div>
</div>

View File

@ -0,0 +1,40 @@
<?php
// Sécurisation des dates par défaut
$dateEffetPolice = dateLang($this->nettoyer($sppoliceentete['dateEffet']), $_SESSION['lang']);
$_SESSION['dateFinRequete'] = dateCouranteLang($_SESSION['lang']);
?>
<div id="div_ente_requete" class="card border-0 shadow-sm bg-light mb-2" style="border-radius: 12px;">
<div class="card-body p-3">
<div class="row g-3 align-items-end">
<div class="col-12 col-md-6">
<label class="form-label small fw-bold text-muted text-uppercase mb-1">
<i class="fas fa-calendar-alt me-1 text-primary"></i> <?= _("Période de recherche") ?>
</label>
<div class="input-group input-group-sm shadow-xs">
<input class="form-control text-center fw-bold bg-white" type="text" id="dateFacture1" name="dateFacture1"
value="<?= $dateEffetPolice; ?>" readonly>
<span class="input-group-text bg-white fw-bold border-start-0 border-end-0 text-primary"><?= _("au") ?></span>
<input class="form-control datepicker text-center fw-bold" type="text" id="dateFacture2" name="dateFacture2"
value="<?= $_SESSION['dateFinRequete'] ?>" required>
</div>
</div>
<div class="col-6 col-md-3">
<label class="form-label small fw-bold text-muted text-uppercase mb-1"><?= _("Lignes trouvées") ?></label>
<div class="input-group input-group-sm shadow-xs">
<span class="input-group-text bg-dark text-white border-dark"><i class="fas fa-list-ol"></i></span>
<input class="form-control text-center bg-white fw-bold" type="text" id="nbligne" name="nbligne" value="0" readonly>
</div>
</div>
<div class="col-6 col-md-3">
<button type="button" class="btn btn-primary btn-sm w-100 fw-bold shadow-sm py-2" onclick="requetes_sinistres_rh();">
<i class="fas fa-search me-2"></i><?= _("Afficher les données") ?>
</button>
</div>
</div>
</div>
</div>

View File

@ -0,0 +1,121 @@
<?php $nbligne = 0; ?>
<div id="div_detail_requete" class="card border-0 shadow-sm animate__animated animate__fadeIn">
<div class="card-header bg-dark text-white p-4 border-0" style="border-radius: 12px 12px 0 0;">
<div class="row w-100 m-0 align-items-center">
<div class="col-md-3 border-end border-secondary text-center py-2">
<div class="text-uppercase opacity-75 mb-2" style="font-size: 8pt; letter-spacing: 1px;">
<i class="fas fa-layer-group me-2 text-primary"></i> <?= _("Volume Total") ?>
</div>
<div class="display-6 fw-bold" style="font-size: 1.8rem;">
<?= format_N($rpsinistres_total['nbLigne']) ?>
<small class="h6 opacity-50 fw-normal"><?= _("Lignes") ?></small>
</div>
</div>
<div class="col-md-3 border-end border-secondary text-center py-2">
<div class="text-uppercase opacity-75 mb-2" style="font-size: 8pt; letter-spacing: 1px;">
<i class="fas fa- hospital-user me-2 text-warning"></i> <?= _("Cumul Cas") ?>
</div>
<div class="display-6 fw-bold text-warning" style="font-size: 1.8rem;">
<?= format_N($rpsinistres_total['nbrCas_total']) ?>
</div>
</div>
<div class="col-md-3 border-end border-secondary text-center py-2">
<div class="text-uppercase opacity-75 mb-2" style="font-size: 8pt; letter-spacing: 1px;">
<i class="fas fa-file-invoice-dollar me-2 text-info"></i> <?= _("Montant Total") ?>
</div>
<div class="display-6 fw-bold text-info" style="font-size: 1.8rem;">
<?= format_N($rpsinistres_total['montant_total']) ?>
</div>
</div>
<div class="col-md-3 text-center py-2">
<div class="text-uppercase opacity-75 mb-2" style="font-size: 8pt; letter-spacing: 1px;">
<i class="fas fa-divide me-2 text-success"></i> <?= _("Montant / Cas") ?>
</div>
<div class="display-6 fw-bold text-success" style="font-size: 1.8rem;">
<?= format_N($rpsinistres_total['montantSurCas_total']) ?>
</div>
</div>
</div>
</div>
<div class="table-responsive">
<table class="table table-striped table-bordered table-hover tabliste compact w-100" id="table_frequence_sinistres" style="font-size:0.85rem; white-space:nowrap;">
<thead class="table-light border-bottom text-uppercase small fw-bold">
<tr>
<th><?= _("Catégories") ?></th>
<th class="text-center"><?= _("Nombre Cas") ?></th>
<th class="text-center"><?= est_anglophone() ? "% Case" : "% Cas" ?></th>
<th class="text-center"><?= _("Montant") ?></th>
<th class="text-center"><?= _("% Montant") ?></th>
<th class="text-center"><?= _("Montant / Cas") ?></th>
</tr>
</thead>
<tbody>
<?php foreach ($rpsinistres as $rpsinistre):
$nbligne++;
$categorie = est_anglophone()
? $this->nettoyer($rpsinistre['categorieEng'])
: $this->nettoyer($rpsinistre['categorie']);
?>
<tr>
<td class="fw-bold text-uppercase text-primary"><?= $categorie ?></td>
<td class="text-center"><?= format_N($this->nettoyer($rpsinistre['nbrCas'])); ?></td>
<td class="text-center text-muted"><?= number_format($this->nettoyer($rpsinistre['tauxCas']), 2, ',', ' ') ?> %</td>
<td class="text-end fw-bold px-3"><?= format_N($this->nettoyer($rpsinistre['montant'])); ?></td>
<td class="text-center text-muted"><?= number_format($this->nettoyer($rpsinistre['tauxMontant']), 2, ',', ' ') ?> %</td>
<td class="text-end fw-bold px-3 text-info"><?= format_N($this->nettoyer($rpsinistre['montantSurCas'])); ?></td>
</tr>
<?php endforeach; ?>
</tbody>
<tfoot class="table-dark">
<tr class="fw-bold">
<td class="text-center text-uppercase text-dark"><?= _("Total Général") ?></td>
<td class="text-center text-dark"><?= format_N($rpsinistres_total['nbrCas_total']); ?></td>
<td class="text-center text-dark">100 %</td>
<td class="text-end px-3 text-dark"><?= format_N($rpsinistres_total['montant_total']); ?></td>
<td class="text-center text-dark">100 %</td>
<td class="text-end px-3 text-dark"><?= format_N($rpsinistres_total['montantSurCas_total']); ?></td>
</tr>
</tfoot>
</table>
</div>
<div class="card-footer bg-white d-flex justify-content-between align-items-center py-2">
<span class="text-muted small italic">
<i class="fas fa-history me-1"></i><?= _("Généré le") ?> <?= dateheureLang(date('Y-m-d H:i:s'), $_SESSION['lang']) ?>
</span>
<span class="badge bg-secondary opacity-75"><?= $_SESSION['numeroPolice_C'] ?></span>
</div>
<input class="sr-only" type="text" id="nbligne_info" name="nbligne_info" value="<?= $nbligne ?>">
</div>
<script>
$(document).ready(function() {
const titreRapport = "<?= mb_strtoupper(_('RAPPORT DES FRÉQUENCES DE SINISTRES'), 'UTF-8'); ?>";
const infosPolice =
"\n<?= _('Souscripteur') ?> : <?= $_SESSION['nomClient_C'] ?>\n" +
"<?= _('Numéro Police') ?> : <?= $_SESSION['numeroPolice_C'] ?>\n" +
"<?= _('Période Couverte') ?> : <?= dateLang($_SESSION['dateEffet_C'], $_SESSION['lang']) ?> <?= _('au') ?> <?= dateLang($_SESSION['dateEcheance_C'], $_SESSION['lang']) ?>\n" +
"<?= _('Période Analyse') ?> : <?= $_SESSION['dateDebutRequete'] ?> <?= _('au') ?> <?= $_SESSION['dateFinRequete'] ?>\n";
// Utilisation de l'ID spécifique pour éviter les conflits
appliquerDataTable('#table_frequence_sinistres', {
pageLength: 50,
order: [[1, "desc"]], // Tri par nombre de cas décroissant
buttons: [
{ extend: 'excel', title: titreRapport, messageTop: infosPolice, footer: true },
{ extend: 'pdf', title: titreRapport, messageTop: infosPolice, orientation: 'landscape', footer: true },
{ extend: 'print', title: titreRapport, messageTop: infosPolice, footer: true }
]
}, titreRapport, infosPolice);
$('#nbligne').val($('#nbligne_info').val());
});
</script>

View File

@ -0,0 +1,114 @@
<?php $nbligne = 0; ?>
<div id="div_detail_requete" class="card border-0 shadow-sm animate__animated animate__fadeIn">
<div class="card-header bg-dark text-white p-4 border-0" style="border-radius: 12px 12px 0 0;">
<div class="row w-100 m-0 align-items-center"> <div class="col-md-4 border-end border-secondary text-center py-2">
<div class="text-uppercase opacity-75 mb-2" style="font-size: 9pt; letter-spacing: 1px;">
<i class="fas fa-layer-group me-2 text-primary"></i> <?= _("Volume Total") ?>
</div>
<div class="display-6 fw-bold">
<?= format_N($rpsinistres_total['nbLigne']) ?>
<small class="h5 opacity-50 fw-normal"><?= _("Lignes") ?></small>
</div>
</div>
<div class="col-md-4 border-end border-secondary text-center py-2">
<div class="text-uppercase opacity-75 mb-2" style="font-size: 9pt; letter-spacing: 1px;">
<i class="fas fa-hand-holding-usd me-2 text-warning"></i> <?= _("Cumul Sinistres") ?>
</div>
<div class="display-6 fw-bold text-warning">
<?= format_N($rpsinistres_total['sinistres_total']) ?>
</div>
</div>
<div class="col-md-4 text-center py-2">
<div class="text-uppercase opacity-75 mb-2" style="font-size: 9pt; letter-spacing: 1px;">
<i class="fas fa-chart-pie me-2 text-info"></i> <?= _("Ratio Moyen") ?>
</div>
<div class="display-6 fw-bold text-info">
<?= number_format((float)$rpsinistres_total['ratio_moyen'], 2, ',', ' ') ?> %
</div>
</div>
</div>
</div>
<div class="table-responsive">
<table id="table_resume_sinistres" class="table table-striped table-bordered table-hover tabliste compact w-100" style="font-size:0.85rem; white-space:nowrap;">
<thead class="table-light border-bottom text-uppercase small fw-bold">
<tr>
<th class="text-center"><?= _("N° Adhérent") ?></th>
<th><?= _("Adhérent Principal") ?></th>
<th class="text-center"><?= _("Date de début") ?></th>
<th class="text-center"><?= _("Période passée") ?></th>
<th class="text-center"><?= _("Sinistres") ?></th>
<th class="text-center"><?= _("Ratio (%)") ?></th>
<th class="text-center">Cat</th>
</tr>
</thead>
<tbody>
<?php foreach ($rpsinistres as $rpsinistre):
$nbligne++;
$ratio = (float)$rpsinistre['ratio'];
$ratioClass = ($ratio > 100) ? 'text-danger fw-bold' : (($ratio > 70) ? 'text-warning' : 'text-success');
?>
<tr>
<td class="text-center fw-bold text-primary"><?= $this->nettoyer($rpsinistre['numeroAdherent']) ?></td>
<td class="text-uppercase"><?= $this->nettoyer($rpsinistre['Adherent']) ?></td>
<td class="text-center text-muted"><?= dateLang($this->nettoyer($rpsinistre['dateEffetAdherent']), $_SESSION['lang']) ?></td>
<td class="text-center"><?= $this->nettoyer($rpsinistre['duree_acquise']) ?> <small><?= _("j") ?></small></td>
<td class="text-center fw-bold"><?= format_N($rpsinistre['sinistres']) ?></td>
<td class="text-center <?= $ratioClass ?>"><?= number_format($ratio, 2, ',', ' ') ?> %</td>
<td class="text-center">
<span class="badge bg-secondary-subtle text-secondary border border-secondary-subtle">
<?= $this->nettoyer($rpsinistre['codeProduit']) ?>
</span>
</td>
</tr>
<?php endforeach; ?>
</tbody>
<tfoot class="table-light border-top border-dark">
<tr>
<td colspan="4" class="text-center text-dark fw-bold text-uppercase"><?= _("Total Général") ?></td>
<td class="text-center fw-bold text-dark fs-6"><?= format_N($rpsinistres_total['sinistres_total']) ?></td>
<td class="text-center fw-bold text-info fs-6"><?= number_format((float)$rpsinistres_total['ratio_moyen'], 2, ',', ' ') ?> %</td>
<td class="bg-light"></td>
</tr>
</tfoot>
</table>
</div>
<div class="card-footer bg-white d-flex justify-content-between align-items-center py-2">
<span class="text-muted small italic"><i class="fas fa-clock me-1"></i><?= _("Généré le") ?> <?= dateheureLang(date('d/m/Y H:i'), $_SESSION['lang']) ?></span>
<span class="badge bg-dark px-3"><?= $_SESSION['numeroPolice_C'] ?></span>
</div>
<input class="sr-only" type="text" id="nbligne_info" name="nbligne_info" value="<?= $nbligne ?>">
</div>
<script>
$(document).ready(function() {
const titreRapport = <?= json_encode(mb_strtoupper(_('RAPPORT RECAPITULATIF DES SINISTRES'), 'UTF-8')) ?>;
const infosEntete =
"\n<?= _('Souscripteur') ?> : <?= $_SESSION['nomClient_C'] ?>\n" +
"<?= _('Numéro Police') ?> : <?= $_SESSION['numeroPolice_C'] ?>\n" +
"<?= _('Période couverte') ?> : <?= dateLang($_SESSION['dateEffet_C'], $_SESSION['lang']) ?> <?= _('au') ?> <?= dateLang($_SESSION['dateEcheance_C'], $_SESSION['lang']) ?>\n\n" +
"<?= _('Période Analyse') ?> : <?= $_SESSION['dateFinRequete'] ?>\n";
// INITIALISATION
appliquerDataTable('#table_resume_sinistres', {
pageLength: 50,
order: [[5, "desc"]],
// On définit la liste précise des boutons ici pour éviter les doublons
buttons: [
{ extend: 'excel', title: titreRapport, messageTop: infosEntete, footer: true, className: 'btn btn-sm btn-success' },
{ extend: 'pdf', title: titreRapport, messageTop: infosEntete, orientation: 'landscape', footer: true, className: 'btn btn-sm btn-danger' },
{ extend: 'print', title: titreRapport, messageTop: infosEntete, footer: true, className: 'btn btn-sm btn-dark' }
]
}, titreRapport, infosEntete);
$('#nbligne').val($('#nbligne_info').val());
});
</script>

View File

@ -1,3 +1,6 @@
<?php
$idPolice = isset($_SESSION['idPolice_C']) ? $_SESSION['idPolice_C'] : "";
?>
<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>
@ -16,7 +19,7 @@
required
onchange="javascript:ajax_contexter_police();"
style="font-size: 10pt; height: 45px;">
<?php liste_options($polices, "", false); ?>
<?php liste_options($polices, $idPolice, false); ?>
</select>
</div>
</div>

View File

@ -141,7 +141,7 @@
</div>
<div class="col-md-4">
<label class="form-label fw-bold small text-uppercase">
<?= (isset($_SESSION['affichagedynamique']['Commune'])) ? _($_SESSION['affichagedynamique']['Commune']) : _("Commune") ?><span class="required-star">*</span>
<?= (isset($_SESSION['affichagedynamique']['District'])) ? _($_SESSION['affichagedynamique']['District']) : _("District") ?><span class="required-star">*</span>
</label>
<div id="listelocalite">
<select class="form-select" id="codeLocalite" name="codeLocalite" required>

View File

@ -87,7 +87,7 @@
<label for="dateAvenant" class="form-label fw-bold text-uppercase"><?= _("Date d'Effet") ?></label>
<div class="input-group input-group-lg shadow-sm">
<span class="input-group-text bg-primary text-white"><i class="fas fa-calendar-alt"></i></span>
<input type="text" class="form-control datepicker fw-bold" id="dateAvenant" name="dateAvenant" Value="<?= dateCouranteLang($_SESSION['lang']) ?>" required onChange="verifier_Echeance_ren();">
<input type="text" class="form-control datepicker fw-bold" id="dateAvenant" name="dateAvenant" Value="" required onChange="verifier_Echeance_ren();">
</div>
</div>

View File

@ -134,9 +134,9 @@
</div>
<div class="col-md-3">
<label class="form-label small fw-bold text-uppercase">
<?= _("Portable") ?><span class="required-star">*</span>
<?= _("Portable") ?>
</label>
<input class="form-control form-control-sm" type="tel" id="telephonePortable" name="telephonePortable" required autocomplete="off">
<input class="form-control form-control-sm" type="tel" id="telephonePortable" name="telephonePortable">
</div>
</div>
</div>

View File

@ -23,18 +23,14 @@
$idApporteur = $this->nettoyer($adherent['idApporteur']);
$libelleApporteur = $this->nettoyer($adherent['libelleApporteur']);
$typeecheancier = $this->nettoyer($adherent['typeecheancier']);
if (est_anglophone())
{
$typeecheancier = $this->nettoyer($adherent['typeecheancierEng']);
}
$tauxInteretEcheancier = $this->nettoyer($adherent['tauxInteretEcheancier']);
/*
var_dump(
array(
"dateEffetAdherent_C"=> $_SESSION['dateEffetAdherent_C'],
)
);
*/
?>
<script type="text/javascript">
@ -109,6 +105,44 @@
<input type="text" class="form-control" value="<?= $this->nettoyer($adherent['pays']) ?> / <?= $this->nettoyer($adherent['ville']) ?> / <?= $this->nettoyer($adherent['localite']) ?>" readonly>
</div>
</div>
<div class="col-md-12 mt-3">
<?php if($nombreGed > 0): ?>
<div class="alert alert-success d-flex align-items-center shadow-sm border-0 py-3" style="border-radius: 10px;">
<i class="fas fa-check-double fa-2x me-3"></i>
<div class="flex-grow-1">
<h6 class="mb-1 fw-bold fs-5">
<?= est_anglophone() ? 'Identity Documents Verified' : 'Documents didentité vérifiés'; ?>
</h6>
<span class="small d-block opacity-75" style="font-size: 10.5pt;">
<?= est_anglophone()
? 'The members digital folder is up to date (ID card, Passport, Birth certificate...).'
: 'Le dossier numérique de ladhérent est à jour (CNI, Passeport, Acte de naissance...).'; ?>
</span>
</div>
<a href="Gedadherent/" class="btn btn-success btn-sm fw-bold ms-3 px-3">
<i class="fas fa-folder-open me-2"></i><?= _("Consulter la GED") ?>
</a>
</div>
<?php else: ?>
<div class="alert alert-danger d-flex align-items-center shadow-sm border-0 py-3 animate__animated animate__pulse animate__infinite" style="border-radius: 10px;">
<i class="fas fa-exclamation-triangle fa-2x me-3"></i>
<div class="flex-grow-1">
<h6 class="mb-1 fw-bold fs-5">
<?= est_anglophone() ? 'Missing Documents' : 'Documents manquants'; ?>
</h6>
<span class="small d-block fw-bold" style="font-size: 10.5pt;">
<?= est_anglophone()
? 'Action required: Please upload the identity documents to complete this members file.'
: 'Action requise : Veuillez joindre les pièces justificatives pour finaliser ce dossier.'; ?>
</span>
</div>
<a href="Gedadherent/" class="btn btn-danger btn-sm fw-bold ms-3 px-3 shadow-sm">
<i class="fas fa-upload me-2"></i><?= _("Ouvrir la GED") ?>
</a>
</div>
<?php endif; ?>
</div>
</div>
<?php if ($controlerPlafondAdherent): ?>

View File

@ -89,30 +89,88 @@
</div>
<form name="formfichebeneficiaire" id="formfichebeneficiaire" method="POST" class="container-fluid py-3">
<div class="d-flex justify-content-between align-items-center mb-4 bg-light p-3 rounded shadow-sm border-start border-primary border-4">
<div class="card">
<h4 class="h4 mb-0 text-secondary">
<?= _("Bénéficiaire") ?> : <span class="fw-bold"><?= $beneficiaire['numeroBeneficiaire'] ?></span>
</h4>
<small class="text-muted"><?= _("Date Effet") ?> : <?= dateLang($this->nettoyer($beneficiaire['dateEffet']), $_SESSION['lang']) ?></small>
<div class="d-flex flex-wrap justify-content-between align-items-center mb-4 bg-white p-4 rounded shadow-sm border-start border-primary border-5">
<div class="d-flex align-items-center mb-2 mb-lg-0">
<div class="bg-primary-subtle text-primary rounded-circle p-3 me-3 d-none d-md-flex">
<i class="fa-solid fa-user-gear fa-2x"></i>
</div>
<div>
<h4 class="h4 mb-1 text-dark fw-bold">
<?= _("Bénéficiaire") ?> : <span class="text-primary"><?= $beneficiaire['numeroBeneficiaire'] ?></span>
</h4>
<div class="d-flex align-items-center text-muted small">
<i class="fa-regular fa-calendar-check me-2"></i>
<?= _("Date Effet") ?> : <span class="fw-bold ms-1"><?= dateLang($this->nettoyer($beneficiaire['dateEffet']), $_SESSION['lang']) ?></span>
</div>
</div>
</div>
<div class="flex-grow-1 px-lg-4 my-3 my-lg-0" style="max-width: 600px;">
<?php if($nombreGed > 0): ?>
<div class="alert alert-success d-flex align-items-center m-0 py-2 px-3 border-0 shadow-sm" style="border-radius: 12px; background-color: #e8f5e9;">
<i class="fas fa-check-circle fa-2x text-success me-3"></i>
<div class="flex-grow-1">
<h6 class="mb-0 fw-bold small text-success">
<?= est_anglophone() ? 'Verified Folder' : 'Dossier Vérifié'; ?>
</h6>
<small class="d-block text-dark opacity-75" style="font-size: 8.5pt;">
<?= est_anglophone() ? 'Identity documents are up to date.' : 'Les documents didentité sont à jour.'; ?>
</small>
</div>
<a href="Gedbeneficiaireprod/" class="btn btn-success btn-sm rounded-pill px-3 ms-2">
<i class="fas fa-folder-open me-2"></i><?= _("Consulter la GED") ?>
</a>
</div>
<?php else: ?>
<div class="alert alert-danger d-flex align-items-center m-0 py-2 px-3 border-0 shadow-sm animate__animated animate__pulse animate__infinite" style="border-radius: 12px; background-color: #ffebee;">
<i class="fas fa-exclamation-circle fa-2x text-danger me-3"></i>
<div class="flex-grow-1">
<h6 class="mb-0 fw-bold small text-danger">
<?= est_anglophone() ? 'Incomplete File' : 'Dossier Incomplet'; ?>
</h6>
<small class="d-block text-dark fw-bold" style="font-size: 8.5pt;">
<?= est_anglophone() ? 'Missing ID documents.' : 'Pièces didentité manquantes.'; ?>
</small>
</div>
<a href="Gedbeneficiaireprod/" class="btn btn-danger btn-sm rounded-pill px-3 ms-2 shadow-sm">
<i class="fas fa-upload me-2"></i><?= _("Ouvrir la GED") ?>
</a>
</div>
<?php endif; ?>
</div>
<div class="text-end">
<?php
$statusClass = "bg-danger"; $statusText = _("Inconnu");
if ($dateEffetCouvert == "0") { $statusText = _("Non renouvelé"); }
$statusClass = "bg-danger"; $statusIcon = "fa-circle-xmark"; $statusText = _("Inconnu");
if ($dateEffetCouvert == "0") {
$statusText = _("Non renouvelé");
$statusIcon = "fa-calendar-minus";
}
elseif ($estcouvert) {
if ($beneficiaire['codeEtatBeneficiaire'] == "V") { $statusClass = "bg-success"; $statusText = $etatbeneficiaire; }
else { $statusText = $etatbeneficiaire; }
} elseif ($estsorti) { $statusText = _("Retiré"); }
else { $statusText = _("Expiré"); }
if ($beneficiaire['codeEtatBeneficiaire'] == "V") {
$statusClass = "bg-success";
$statusIcon = "fa-shield-check";
$statusText = $etatbeneficiaire;
}
else {
$statusText = $etatbeneficiaire;
$statusIcon = "fa-circle-exclamation";
}
} elseif ($estsorti) {
$statusText = _("Retiré");
$statusIcon = "fa-user-slash";
}
else {
$statusText = _("Expiré");
$statusIcon = "fa-clock-rotate-left";
}
?>
<span class="badge <?= $statusClass ?> fs-6 shadow-sm p-2 px-3">
<i class="fa-solid fa-circle-info me-1"></i> <?= $statusText ?>
<div class="small text-muted text-uppercase fw-bold mb-1" style="font-size: 7pt; letter-spacing: 1px;"><?= _("Statut Couverture") ?></div>
<span class="badge <?= $statusClass ?> fs-6 shadow-sm p-2 px-4 rounded-pill d-inline-flex align-items-center">
<i class="fa-solid <?= $statusIcon ?> me-2"></i> <?= $statusText ?>
</span>
</div>
</div>
<div class="row g-4">
<div class="col-lg-8">
<div class="card shadow-sm h-100">
@ -167,16 +225,10 @@
<div class="position-relative d-inline-block mb-3">
<?php if($faceRegistered == "1"): ?>
<img src="<?=$photoAssureCrypte?>" class="img-thumbnail rounded-circle shadow" style="width: 150px; height: 150px; object-fit: cover;">
<button type="button" onClick="ebene_init_confirm_photo_face();" class="btn btn-sm btn-success position-absolute bottom-0 end-0 rounded-circle">
<i class="fa-solid fa-check"></i>
</button>
<?php else: ?>
<div class="rounded-circle bg-secondary d-flex align-items-center justify-content-center shadow" style="width: 150px; height: 150px;">
<i class="fa-solid fa-user-slash fa-4x text-white-50"></i>
</div>
<button type="button" onClick="ebene_init_photo_face();" class="btn btn-sm btn-primary position-absolute bottom-0 end-0 rounded-circle">
<i class="fa-solid fa-camera"></i>
</button>
<?php endif; ?>
</div>
<h5 class="mb-1 fw-bold"><?= $beneficiaire['numeroAdherent'] ?></h5>
@ -295,38 +347,6 @@
</div>
</form>
<div class="container-fluid mt-1">
<div class="card border-0 shadow-sm">
<div class="card-body">
<form enctype="multipart/form-data" action="Fichebeneficiaire/<?= $_SESSION['idBeneficiaire_C'] ?>/" method="post" class="row align-items-center g-3">
<div class="col-md-5">
<label class="form-label fw-bold small text-uppercase">
<?= ($_SESSION['lienPhoto_C'] > " ") ? _("Remplacer la photo") : _("Nouvelle photo") ?>
</label>
<input type="hidden" name="MAX_FILE_SIZE" value="500000" /> <input class="form-control form-control-sm" name="fichier_image_a_uploader" type="file" id="fichier_image_a_uploader" />
</div>
<div class="col-md-3">
<button type="submit" name="submit" class="btn btn-primary btn-sm mt-4 w-100">
<i class="fa-solid fa-cloud-arrow-up me-1"></i> <?= _("Mettre à jour") ?>
</button>
</div>
<div class="col-md-4">
<?php if ($message > " "): ?>
<div class="alert <?= ($message == 'Chargement réussi !') ? 'alert-success' : 'alert-danger' ?> m-0 py-2 small">
<?= $message ?>
</div>
<?php else: ?>
<div class="text-muted small italic">
<i class="fa-solid fa-file-image me-1"></i>
<?= _("Fichier actuel") ?> : <?= $beneficiaire['lienPhoto'] ?>
</div>
<?php endif; ?>
</div>
</form>
</div>
</div>
</div>
<!-- Responsive Area Chart -->
<div class="row mt-4">
<div class="col-12 mb-4">
@ -369,7 +389,7 @@
</div>
</div>
</div>
<?php include 'faceebene/ebenetraitementimage.php'; ?>
<?php //include 'faceebene/ebenetraitementimage.php'; ?>
<script>
// Configuration commune

View File

@ -50,10 +50,6 @@
<?= _("POLICE") ?> : <span class="text-secondary"><?= $this->nettoyer($police['numeroPolice']) ?></span>
<span class="ms-3 badge bg-primary text-light small fw-normal">ID: <?= $this->nettoyer($police['idPolice']) ?></span>
</h5>
<div class="text-end">
<small class="d-block opacity-75"><?= _("Primes non facturées") ?></small>
<span class="fw-bold h5 mb-0 badge bg-warning"><?= format_N($nb_non_facturees) ?></span>
</div>
</div>
<div class="card-body p-2">
@ -70,14 +66,11 @@
<input type="text" class="form-control fw-bold" value="<?= $this->nettoyer($police['numeroPolice']) ?>" readonly>
</div>
<div class="col-lg-4 col-md-6">
<div class="col-lg-6 col-md-6">
<label class="form-label small fw-bold text-uppercase"><?= _("Courtier / Apporteur") ?></label>
<input type="text" class="form-control" value="<?= $this->nettoyer($police['apporteur']) ?>" readonly>
</div>
<div class="col-lg-2 col-md-6">
<label class="form-label small fw-bold text-uppercase"><?= _("Tx Comm %") ?></label>
<input type="text" class="form-control text-center" value="<?= $this->nettoyer($police['tauxCommission']) ?>" readonly>
</div>
<div class="col-lg-6 col-md-12">
<label class="form-label small fw-bold text-uppercase"><?= _("Type de Contrat") ?></label>
<input type="text" class="form-control" value="<?= $typeContrat ?>" readonly>
@ -121,23 +114,6 @@
</div>
</div>
</div>
<div class="card-footer p-0 border-top-0">
<div class="row g-0 text-center">
<div class="col-4 financial-item border-end py-3">
<small class="text-muted d-block"><?= _("Primes") ?></small>
<span class="h5 mb-0 text-secondary fw-bold"><?= format_N($this->nettoyer($totalquittance['primeTtc'])) ?></span>
</div>
<div class="col-4 financial-item border-end py-3">
<small class="text-muted d-block"><?= _("Encaissements") ?></small>
<span class="h5 mb-0 text-success fw-bold"><?= format_N($this->nettoyer($totalquittance['encaisse'])) ?></span>
</div>
<div class="col-4 financial-item py-3">
<small class="text-muted d-block"><?= _("Solde") ?></small>
<span class="h5 mb-0 text-primary fw-bold"><?= format_N($this->nettoyer($totalquittance['solde'])) ?></span>
</div>
</div>
</div>
</div>
<div class="card shadow-sm mb-4">
@ -147,21 +123,6 @@
</h6>
<form enctype="multipart/form-data" action="Fichepolice" method="post" class="row g-3">
<!-- Zone d'information sur les extensions
<div class="alert alert-info mt-2 py-2 small col-md-12">
<strong><?= _("Formats autorisés") ?>:</strong>
<div class="d-flex flex-wrap mt-2">
<?php foreach ($tabExt as $ext): ?>
<?php
$style = isset($extStyles[$ext]) ? $extStyles[$ext] : ["color" => "secondary", "icon" => "fas fa-file"];
?>
<span class="badge bg-<?= $style["color"] ?> me-2 mb-2">
<i class="<?= $style["icon"] ?> me-1"></i><?= strtoupper($ext) ?>
</span>
<?php endforeach; ?>
</div>
</div>
-->
<div class="col-md-9">
<input class="form-control custom-file-input" name="fichier_upload" type="file" id="fichier_upload">
</div>

View File

@ -1,5 +1,5 @@
<?php
$this->titre = "ISA WEB - Modifier Utilisateur";
$this->titre = "INTER SANTE - Modifier Utilisateur";
$idClient = $this->nettoyer($user_rh['idClient']);
$idUtilisateur = $user_rh['id'];

View File

@ -24,8 +24,19 @@
<div class="card-body">
<form id="form_ged_adherent" enctype="multipart/form-data" action="Gedadherent" method="post">
<div class="row g-3">
<div class="col-md-10">
<label class="form-label small fw-bold text-muted text-uppercase"><?= _("Joindre un nouveau document à archiver") ?></label>
<input class="form-control form-control-sm border-info" name="fichier_upload" type="file" id="fichier_upload">
</div>
<div class="col-md-2 d-flex align-items-end gap-1">
<button type="submit" name="submit" class="btn btn-success btn-sm flex-fill fw-bold">
<i class="fas fa-upload me-1"></i> <?= _("Envoyer") ?>
</button>
</div>
<div class="col-md-3">
<label class="form-label small fw-bold text-muted text-uppercase"><?= _("Période du") ?></label>
<label class="form-label small fw-bold text-muted text-uppercase"><?= _("Période de recherche du") ?></label>
<div class="input-group input-group-sm">
<span class="input-group-text bg-white"><i class="far fa-calendar-alt"></i></span>
<input class="form-control datepicker text-center" type="text" id="d1" name="d1"
@ -36,20 +47,26 @@
</div>
</div>
<div class="col-md-5">
<label class="form-label small fw-bold text-muted text-uppercase"><?= _("Nom du document") ?></label>
<input class="form-control form-control-sm" type="text" id="nomOrigine" name="nomOrigine" placeholder="<?= _("Rechercher un fichier...") ?>">
<div class="col-md-3">
<label class="form-label small fw-bold text-muted text-uppercase"><?= _("Nom du document recherché") ?></label>
<input class="form-control form-control-sm" type="text" id="nomOrigine" name="nomOrigine" placeholder="<?= _("Saisir partiellement ou complètement...") ?>">
</div>
<div class="col-md-4">
<label class="form-label fw-bold small text-muted text-uppercase">
<?= _("Type Document") ?><span class="text-danger"> *</span>
<?= _("Type du document recherché ou à archiver") ?><span class="text-danger"> *</span>
</label>
<select class="form-select" id="codeNaturePiece" name="codeNaturePiece">
<?php liste_options($naturepiece, ""); ?>
</select>
</div>
<div class="col-md-2 d-flex align-items-end gap-1">
<button type="button" class="btn btn-primary btn-sm flex-fill fw-bold" onclick="lister_ged_adherent();">
<i class="fas fa-sync-alt me-1"></i> <?= _("Filtrer") ?>
</button>
</div>
<div class="col-md-12" id="div_autre_type" style="display: none;">
<div class="alert alert-info py-2 shadow-sm border-start border-4 border-info mb-0">
<label class="form-label fw-bold small text-muted text-uppercase mb-1">
@ -58,20 +75,6 @@
<input type="text" class="form-control form-control-sm border-info" id="libelleAutre" name="libelleAutre" placeholder="<?= _("Saisissez le type de document...") ?>">
</div>
</div>
<div class="col-md-10">
<label class="form-label small fw-bold text-muted text-uppercase"><?= _("Nouveau Document") ?></label>
<input class="form-control form-control-sm border-info" name="fichier_upload" type="file" id="fichier_upload">
</div>
<div class="col-md-2 d-flex align-items-end gap-2">
<button type="button" class="btn btn-primary btn-sm flex-fill fw-bold" onclick="lister_ged_adherent();">
<i class="fas fa-sync-alt me-1"></i> <?= _("Filtrer") ?>
</button>
<button type="submit" name="submit" class="btn btn-success btn-sm flex-fill fw-bold">
<i class="fas fa-upload me-1"></i> <?= _("Envoyer") ?>
</button>
</div>
</div>
</form>
</div>
@ -91,7 +94,7 @@
<th class="text-center">Date</th>
<th class="text-center">Src</th>
<th><?= _("Souscripteur / Police") ?></th>
<th><?= _("Bénéficiaire (Adhérent)") ?></th>
<th><?= _("Bénéficiaire / Adhérent") ?></th>
<th><?= _("Type du Document") ?></th>
<th><?= _("Nom du Document") ?></th>
<th class="text-center no-export"><?= _("Action") ?></th>
@ -99,8 +102,17 @@
</thead>
<tbody>
<?php foreach ($geds as $ged):
$idGed = $this->nettoyer($ged['idGed']);
$idGed = $this->nettoyer($ged['idGed']);
$cheminFichier = $this->nettoyer($ged['cheminFichier']);
if($ged['codeNaturePiece'] == "AUT")
{
$libelleType = $this->nettoyer($ged['libelleAutre']);
} else
{
$libelleType = $this->nettoyer($ged['libelleType']);
}
?>
<tr class="text-nowrap">
<td class="text-center small text-muted"><?= dateheureLang($this->nettoyer($ged['dateSysteme'])) ?></td>
@ -113,13 +125,14 @@
<div class="fw-bold"><?= $this->nettoyer($ged['beneficiaire']) ?></div>
<div class="small text-muted italic"><?= $this->nettoyer($ged['adherent']) ?></div>
</td>
<td class="small"><?= $this->nettoyer($ged['libelleDocument']) ?></td>
<td class="small text-uppercase"><?= $libelleType; ?></td>
<td class="small text-truncate" style="max-width: 200px;" title="<?= $this->nettoyer($ged['nomOrigine']) ?>">
<i class="far fa-file-alt me-1 text-secondary"></i> <?= $this->nettoyer($ged['nomOrigine']) ?>
</td>
<td class="text-center">
<a class="btn btn-xs btn-outline-danger shadow-sm fw-bold px-3" href="<?= $cheminFichier ?>" target="_blank">
<a class="btn btn-xs btn-outline-danger shadow-sm fw-bold px-3" href="<?= $cheminFichier ?>" target="_blank" style="font-size:9pt;">
<i class="fas fa-download me-1"></i> <?= _("Télécharger") ?>
</a>
</td>

View File

@ -1,7 +1,7 @@
<?php $this->titre = "INTER-SANTE - GED Bénéficiaire"; ?>
<div id="div_adherent" class="container-fluid py-1 animate__animated animate__fadeIn">
<h1 class="text-primary"><i class="fas fa-file-user me-2"></i><?= _('G E D Bénéficiaire') ?></h1>
<h1 class="text-primary"><i class="bi bi-file-earmark-person me-2"></i><?= _('G E D Bénéficiaire') ?></h1>
<div class="card-header d-flex justify-content-between align-items-center py-1 mb-2">
<h5 class="mb-0 fw-bold">
@ -18,47 +18,69 @@
</div>
</div>
<div class="card border-0 shadow-sm mb-4">
<div class="card-body p-3">
<form enctype="multipart/form-data" action="Gedbeneficiaireprod" method="post">
<div class="row g-3 align-items-end">
<div class="col-xl-4 col-lg-6">
<label class="form-label small fw-bold text-muted text-uppercase"><?= _("Période de recherche") ?></label>
<div class="input-group input-group-sm">
<span class="input-group-text bg-white"><i class="fas fa-calendar-alt text-primary"></i></span>
<input class="form-control datepicker text-center fw-bold" type="text" id="d1" name="d1"
value="<?= dateLang($_SESSION['dUneSemaineAvant_C'], $_SESSION['lang']) ?>" required>
<span class="input-group-text bg-light fw-bold px-3"><?= _("au") ?></span>
<input class="form-control datepicker text-center fw-bold" type="text" id="d2" name="d2"
value="<?= dateCouranteLang($_SESSION['lang']) ?>" required>
</div>
</div>
<INPUT class="sr-only" id="idAvenant" NAME="idAvenant" TYPE="text" value="<?= $_SESSION['idAvenant']; ?>" >
<div class="col-xl-3 col-lg-6">
<label class="form-label small fw-bold text-muted text-uppercase"><?= _("Nom du document") ?></label>
<div class="input-group input-group-sm">
<span class="input-group-text bg-white"><i class="fas fa-search"></i></span>
<input class="form-control" type="text" id="nomOrigine" name="nomOrigine"
onkeypress="javascript:ctrlkeypress_lister_ged(event);" placeholder="<?= _("Contient...") ?>">
<button class="btn btn-primary fw-bold px-3" type="button" onclick="javascript:lister_ged_beneficiaire_prod();">
<i class="fas fa-sync-alt me-1"></i>
</button>
</div>
</div>
<div class="row g-4">
<div class="col-xl-12">
<div class="card border-0 shadow-sm">
<div class="card-body">
<form id="form_ged_beneficiaireprod" enctype="multipart/form-data" action="Gedbeneficiaireprod" method="post">
<div class="row g-3">
<div class="col-md-10">
<label class="form-label small fw-bold text-muted text-uppercase"><?= _("Joindre un nouveau document à archiver") ?></label>
<input class="form-control form-control-sm border-info" name="fichier_upload" type="file" id="fichier_upload">
</div>
<div class="col-xl-3 col-lg-8">
<label class="form-label small fw-bold text-muted text-uppercase"><?= _("Joindre un nouveau document") ?></label>
<input class="form-control form-control-sm border-info" name="fichier_upload" type="file" id="fichier_upload" />
</div>
<div class="col-md-2 d-flex align-items-end gap-1">
<button type="submit" name="submit" class="btn btn-success btn-sm flex-fill fw-bold">
<i class="fas fa-upload me-1"></i> <?= _("Envoyer") ?>
</button>
</div>
<div class="col-xl-2 col-lg-4 text-end">
<button type="submit" name="submit" class="btn btn-success btn-sm w-100 fw-bold py-2 shadow-sm">
<i class="fas fa-upload me-2"></i><?= _("ENVOYER") ?>
</button>
</div>
<div class="col-md-3">
<label class="form-label small fw-bold text-muted text-uppercase"><?= _("Période de recherche du") ?></label>
<div class="input-group input-group-sm">
<span class="input-group-text bg-white"><i class="far fa-calendar-alt"></i></span>
<input class="form-control datepicker text-center" type="text" id="d1" name="d1"
value="<?= dateLang($_SESSION['dUneSemaineAvant_C'], $_SESSION['lang']) ?>" required>
<span class="input-group-text bg-light fw-bold"><?= _("au") ?></span>
<input class="form-control datepicker text-center" type="text" id="d2" name="d2"
value="<?= dateCouranteLang($_SESSION['lang']) ?>" required>
</div>
</div>
<div class="col-md-3">
<label class="form-label small fw-bold text-muted text-uppercase"><?= _("Nom du document recherché") ?></label>
<input class="form-control form-control-sm" type="text" id="nomOrigine" name="nomOrigine" placeholder="<?= _("Saisir partiellement ou complètement...") ?>">
</div>
<div class="col-md-4">
<label class="form-label fw-bold small text-muted text-uppercase">
<?= _("Type du document recherché ou à archiver") ?><span class="text-danger"> *</span>
</label>
<select class="form-select" id="codeNaturePiece" name="codeNaturePiece">
<?php liste_options($naturepiece, ""); ?>
</select>
</div>
<div class="col-md-2 d-flex align-items-end gap-1">
<button type="button" class="btn btn-primary btn-sm flex-fill fw-bold" onclick="lister_ged_beneficiaire_prod();">
<i class="fas fa-sync-alt me-1"></i> <?= _("Filtrer") ?>
</button>
</div>
<div class="col-md-12" id="div_autre_type" style="display: none;">
<div class="alert alert-info py-2 shadow-sm border-start border-4 border-info mb-0">
<label class="form-label fw-bold small text-muted text-uppercase mb-1">
<?= _("Préciser si autre type") ?><span class="text-danger"> *</span>
</label>
<input type="text" class="form-control form-control-sm border-info" id="libelleAutre" name="libelleAutre" placeholder="<?= _("Saisissez le type de document...") ?>">
</div>
</div>
</div>
</form>
</div>
</form>
</div>
</div>
</div>
@ -76,16 +98,24 @@
<th class="text-center px-3">Date</th>
<th class="text-center">Src</th>
<th><?= _("Souscripteur / Police") ?></th>
<th><?= _("Prestataire") ?></th>
<th><?= _("Bénéficiaire (Adhérent)") ?></th>
<th><?= _("Document") ?></th>
<th class="text-center"><?= _("Action") ?></th>
<th><?= _("Bénéficiaire / Adhérent") ?></th>
<th><?= _("Type du Document") ?></th>
<th><?= _("Nom du Document") ?></th>
<th class="text-center no-export"><?= _("Action") ?></th>
</tr>
</thead>
<tbody>
<?php foreach ($geds as $ged):
$idGed = $this->nettoyer($ged['idGed']);
$cheminFichier = $this->nettoyer($ged['cheminFichier']);
if($ged['codeNaturePiece'] == "AUT")
{
$libelleType = $this->nettoyer($ged['libelleAutre']);
} else
{
$libelleType = $this->nettoyer($ged['libelleType']);
}
?>
<tr class="text-nowrap">
<td class="text-center small text-muted"><?= dateheureLang($this->nettoyer($ged['dateSysteme'])) ?></td>
@ -95,14 +125,16 @@
<td>
<div class="fw-bold text-dark"><?= $this->nettoyer($ged['souscripteur']) ?></div>
<div class="small text-primary"> <?= $this->nettoyer($ged['numeroPolice']) ?></div>
</td>
<td class="small text-muted text-truncate" style="max-width: 150px;"><?= $this->nettoyer($ged['prestataire']) ?></td>
</td>
<td>
<div class="fw-bold"><?= $this->nettoyer($ged['beneficiaire']) ?></div>
<div class="small text-muted italic">
<?= $this->nettoyer($ged['adherent']) ?> (<?= $this->nettoyer($ged['numeroBeneficiaire']) ?>)
</div>
</td>
<td class="small text-uppercase"><?= $libelleType; ?></td>
<td class="small">
<i class="far fa-file-pdf text-danger me-1"></i>
<span class="text-truncate d-inline-block" style="max-width: 180px;" title="<?= $this->nettoyer($ged['nomOrigine']) ?>">
@ -110,7 +142,7 @@
</span>
</td>
<td class="text-center">
<a href="<?= $cheminFichier ?>" target="_blank" class="btn btn-xs btn-outline-danger shadow-sm px-3 fw-bold border-2">
<a href="<?= $cheminFichier ?>" target="_blank" class="btn btn-xs btn-outline-danger shadow-sm px-3 fw-bold border-2" style="font-size:9pt;">
<i class="fas fa-download me-1"></i><?= _("TELECHARGER") ?>
</a>
</td>
@ -120,4 +152,56 @@
</table>
</div>
</div>
</div>
</div>
<script>
document.addEventListener('DOMContentLoaded', function() {
const selectNature = document.getElementById('codeNaturePiece');
const divAutre = document.getElementById('div_autre_type');
const inputAutre = document.getElementById('libelleAutre');
const formGed = document.getElementById('form_ged_beneficiaireprod');
// 1. Affichage dynamique du champ Libellé
selectNature.addEventListener('change', function() {
if (this.value === 'AUT') {
divAutre.style.display = 'block';
inputAutre.focus();
} else {
divAutre.style.display = 'none';
inputAutre.value = '';
}
});
// 2. Blocage du Submit si conditions non remplies
formGed.addEventListener('submit', async function(e) {
// On ne vérifie que si on tente de soumettre (clic sur Envoyer)
const isSubmit = e.submitter && e.submitter.name === 'submit';
if (isSubmit) {
const valNature = selectNature.value;
// Cas 1 : Type de document vide
if (valNature === "") {
e.preventDefault();
await alert_ebene(
"Veuillez sélectionner un type de document avant d'envoyer.",
"Please select a document type before sending."
);
selectNature.focus();
return false;
}
// Cas 2 : Type "Autre" mais libellé vide
if (valNature === 'AUT' && inputAutre.value.trim() === "") {
e.preventDefault();
await alert_ebene(
"Veuillez préciser le type de document (champ Libellé).",
"Please specify the document type (Label field)."
);
inputAutre.focus();
return false;
}
}
});
});
</script>

View File

@ -1,12 +1,16 @@
<div id="div_avenant" class="card shadow-sm border-0 mb-4 animate__animated animate__fadeIn">
<h1 class="text-primary"><i class="fas fa-list-ul me-2"></i><?= _('Historique des Avenants') ?></h1>
<?php
$titre = 'Historique des Avenants';
?>
<div class="card-header d-flex justify-content-between align-items-center py-3">
<div id="div_avenant" class="card shadow-sm border-0 mb-4 animate__animated animate__fadeIn">
<h1 class="text-primary"><i class="fas fa-list-ul me-2"></i><?= $titre ?></h1>
<div class="card-header d-flex justify-content-between align-items-center py-3">
<div class="text-muted">
<span class="badge bg-light text-dark border ps-2">
<?= $_SESSION['nomClient_C'] ?> | <?= $police['numeroPolice'] ?>
</span>
</div>
<span class="badge bg-light text-dark border ps-2">
<?= $_SESSION['nomClient_C'] ?> | <?= $police['numeroPolice'] ?>
</span>
</div>
</div>
<div class="card-body p-0 mt-2">
@ -21,6 +25,7 @@
<th width="15%"><?= _("Saisie par") ?></th>
<th class="text-center" width="10%"><?= _("Facturé") ?></th>
<th class="text-center" width="10%"><?= _("RH") ?></th>
<th class="text-center" width="10%"><?= _("Action") ?></th>
</tr>
</thead>
<tbody>
@ -28,6 +33,8 @@
$libelleAvenant = est_anglophone() ? $avenant['libelleAvenantEng'] : $avenant['libelleAvenant'];
$isFacture = ($avenant['facture'] == '1');
$isRH = ($avenant['ajoutClient'] == '1');
$idAvenant = $avenant['idAvenant'];
$isNotify = ($avenant['notificationRhEnvoye'] == '1');
?>
<tr>
<td class="text-center fw-bold ps-3 text-secondary">
@ -38,7 +45,7 @@
</td>
<td>
<div class="fw-bold"><?= $libelleAvenant ?></div>
<div class="x-small text-muted" style="font-size: 0.75rem;">
<div class="text-muted" style="font-size: 0.75rem;">
<?= dateheureLang($this->nettoyer($avenant['dateSysteme']), $_SESSION['lang']) ?>
</div>
</td>
@ -64,10 +71,44 @@
<span class="badge bg-light text-muted border px-3 py-2"><?= _("NON") ?></span>
<?php endif; ?>
</td>
<td class="text-center">
<?php if($isRH): ?>
<?php if($isNotify): ?>
<span class="text-success small fw-bold">
<i class="fas fa-check-double me-1"></i> <?= _("Déjà Notifié") ?>
</span>
<?php else: ?>
<button type="button"
class="btn btn-sm btn-outline-primary fw-bold shadow-sm px-3"
onclick="envoyer_notification_avenant('<?= $idAvenant ?>')">
<i class="fas fa-bell me-1"></i> <?= _("Notifier") ?>
</button>
<?php endif; ?>
<?php else: ?>
<span class="text-muted opacity-50 small">-</span>
<?php endif; ?>
</td>
</tr>
<?php endforeach; ?>
</tbody>
</table>
</div>
</div>
</div>
</div>
<script>
document.addEventListener("DOMContentLoaded", function() {
// Préparation du titre
const titre = "<?= mb_strtoupper($titre, 'UTF-8'); ?>";
// Préparation du bloc d'informations
const infosComplementaires =
"<?= _('Souscripteur').' : '.$_SESSION['nomClient_C'] ?>\n" +
"<?= _('Numéro Police').' : '.$_SESSION['numeroPolice_C'] ?>\n" +
"<?= _('Période couverte').' : '.dateLang($sppoliceentete['dateEffet'], $_SESSION['lang']) ?> <?= _('au') ?> <?= dateLang($sppoliceentete['dateEcheance'], $_SESSION['lang']) ?>";
// Appel de la fonction
appliquerDataTable('.tabliste', {}, titre, infosComplementaires);
});
</script>

View File

@ -1,112 +1,183 @@
<?php $this->titre = "INTER-SANTE - Modification Bénéficiaire"; ?>
<?php $this->titre = "INTER-SANTE - Modification Bénéficiaire";
$idMvt = $mouvementassure['id'];
$aCorriger = $mouvementassure['aCorriger'];
<div id="div_adherent" class="container-fluid py-1 animate__animated animate__fadeIn">
<h1 class="text-primary">
<i class="fas fa-user-edit me-2"></i>
<?= _('Modifier le bénéficiaire') ?>:
<span class="badge bg-white text-primary ms-1"><?= $beneficiaire['numeroBeneficiaire'] ?></span>
</h1>
$motif = $mouvementassure['motif'];
<div class="card-header d-flex justify-content-between align-items-center py-1">
<h5 class="mb-0 fw-bold">
<?= _("POLICE") ?> : <span class="text-secondary"><?= $this->nettoyer($_SESSION['numeroPolice_C']) ?></span>
<span class="ms-3 badge bg-primary text-light small fw-normal">ID: <?= $this->nettoyer($_SESSION['idPolice_C']) ?></span>
</h5>
$idBeneficiaire = $beneficiaire['idBeneficiaire'];
?>
<div id="div_adherent" class="container-fluid py-3 animate__animated animate__fadeIn">
<div class="d-flex justify-content-between align-items-center mb-2">
<h1 class="text-primary fw-bold mb-0">
<i class="fas fa-user-edit me-2 text-primary"></i><?= _("Modifier le bénéficiaire") ?>
<span class="badge bg-primary ms-2 small"><?= $beneficiaire['numeroBeneficiaire'] ?></span>
</h1>
<div class="text-end">
<small class="text-uppercase opacity-75 d-block" style="font-size: 10pt; letter-spacing: 1px;"><?= _("POLICE") ?></small>
<span class="fw-bold"><?= $this->nettoyer($_SESSION['numeroPolice_C']) ?></span>
</div>
</div>
<div class="row mb-2 justify-content-center">
<div class="col-md-8 col-lg-6">
<?php if($nombreGed > 0): ?>
<div class="alert alert-success d-flex align-items-center py-2 px-3 border-0 shadow-sm" style="border-radius: 12px; background-color: #e8f5e9;">
<i class="fas fa-check-circle fa-2x text-success me-3"></i>
<div class="flex-grow-1">
<h6 class="mb-0 fw-bold small text-success"><?= est_anglophone() ? 'Verified Folder' : 'Dossier Vérifié'; ?></h6>
<small class="text-dark opacity-75" style="font-size: 8.5pt;"><?= est_anglophone() ? 'Identity documents are up to date.' : 'Les documents didentité sont à jour.'; ?></small>
</div>
<a href="Gedbeneficiaireprod/" class="btn btn-success btn-sm rounded-pill px-3 ms-2">
<i class="fas fa-folder-open me-2"></i><?= _("GED") ?>
</a>
</div>
<?php else: ?>
<div class="alert alert-danger d-flex align-items-center py-2 px-3 border-0 shadow-sm animate__animated animate__pulse animate__infinite" style="border-radius: 12px; background-color: #ffebee;">
<i class="fas fa-exclamation-triangle fa-2x text-danger me-3"></i>
<div class="flex-grow-1">
<h6 class="mb-0 fw-bold small text-danger"><?= est_anglophone() ? 'Incomplete File' : 'Dossier Incomplet'; ?></h6>
<small class="text-dark fw-bold" style="font-size: 8.5pt;"><?= est_anglophone() ? 'Missing ID documents.' : 'Pièces didentité manquantes.'; ?></small>
</div>
<a href="Gedbeneficiaireprod/" class="btn btn-danger btn-sm rounded-pill px-3 ms-2 shadow-sm">
<i class="fas fa-upload me-2"></i><?= _("Ouvrir la GED") ?>
</a>
</div>
<?php endif; ?>
</div>
</div>
<form method="post" action="Modifierbeneficiaire/modifier/<?=$beneficiaire['id']?>/">
<input type="hidden" id="idPolice" name="idPolice" value="<?= $_SESSION['idPolice_C'] ?>">
<input type="hidden" id="numeroPolice" name="numeroPolice" value="<?= $_SESSION['numeroPolice_C'] ?>">
<input type="hidden" id="idAdherent" name="idAdherent" value="<?= $_SESSION['idAdherent_C'] ?>">
<input type="hidden" id="numeroAdherent" name="numeroAdherent" value="<?= $_SESSION['numeroAdherent_C'] ?>">
<input type="hidden" id="codeProduit" name="codeProduit" value="<?= $adherent['codeProduit'] ?>">
<input type="hidden" name="idPolice" value="<?= $_SESSION['idPolice_C'] ?>">
<input type="hidden" name="numeroPolice" value="<?= $_SESSION['numeroPolice_C'] ?>">
<input type="hidden" name="idAdherent" value="<?= $_SESSION['idAdherent_C'] ?>">
<input type="hidden" name="numeroAdherent" value="<?= $_SESSION['numeroAdherent_C'] ?>">
<input type="hidden" name="codeProduit" value="<?= $adherent['codeProduit'] ?>">
<div class="card shadow-sm border-0">
<div class="card shadow-sm border-0" style="border-radius: 15px;">
<div class="card-body p-4">
<h6 class="text-muted text-uppercase small fw-bold mb-3 border-bottom pb-2"><?= _("Référence Adhérent") ?></h6>
<div class="row g-3 mb-4 bg-light p-3 rounded">
<div class="row g-3 mb-4 bg-light p-3 rounded-3 border">
<div class="col-md-6">
<label class="form-label small text-muted mb-0"><?= _("Nom & Prénoms Adhérent") ?></label>
<div class="fw-bold"><?= $adherent['nom'] ?> <?= $adherent['prenoms'] ?></div>
<label class="form-label small text-muted text-uppercase fw-bold mb-1"><?= _("Adhérent Principal") ?></label>
<div class="h6 mb-0 text-primary fw-bold"><i class="fas fa-user-tie me-2"></i><?= $adherent['nom'] ?> <?= $adherent['prenoms'] ?></div>
</div>
<div class="col-md-6 border-start">
<label class="form-label small text-muted mb-0"><?= _("Collège / Produit") ?></label>
<div class="fw-bold"><?= $adherent['libelleCollege'] ?></div>
<div class="col-md-6 border-start ps-4">
<label class="form-label small text-muted text-uppercase fw-bold mb-1"><?= _("Collège / Produit") ?></label>
<div class="h6 mb-0 text-dark fw-bold"><i class="fas fa-shield-alt me-2 text-secondary"></i><?= $adherent['libelleCollege'] ?></div>
</div>
</div>
<h6 class="text-muted text-uppercase small fw-bold mb-3 border-bottom pb-2"><?= _("Données du Bénéficiaire") ?></h6>
<div class="row g-3">
<h6 class="text-primary text-uppercase small fw-bold mb-4 border-bottom pb-2">
<i class="fas fa-info-circle me-2"></i><?= _("Informations Personnelles") ?>
</h6>
<div class="row g-2">
<div class="col-md-6">
<label class="form-label fw-bold small"><?= _("Date d'Entrée") ?> <span class="text-danger">*</span></label>
<input class="form-control datepicker" type="text" id="dateEntree" name="dateEntree" value="<?= dateLang($this->nettoyer($beneficiaire['dateEntree'])) ?>" required>
<div class="input-group">
<span class="input-group-text bg-white"><i class="fas fa-calendar-check text-primary"></i></span>
<input class="form-control datepicker fw-bold" type="text" id="dateEntree" name="dateEntree" value="<?= dateLang($this->nettoyer($beneficiaire['dateEntree']), $_SESSION['lang']) ?>" required>
</div>
</div>
<div class="col-md-6">
<label class="form-label fw-bold small"><?= _("Date de Naissance") ?> <span class="text-danger">*</span></label>
<input class="form-control datepicker" type="text" id="dateNaissance" name="dateNaissance" value="<?= dateLang($this->nettoyer($beneficiaire['dateNaissance'])) ?>" required>
<div class="input-group">
<span class="input-group-text bg-white"><i class="fas fa-birthday-cake text-danger"></i></span>
<input class="form-control datepicker fw-bold" type="text" id="dateNaissance" name="dateNaissance" value="<?= dateLang($this->nettoyer($beneficiaire['dateNaissance']), $_SESSION['lang']) ?>" required>
</div>
</div>
<div class="col-md-6">
<label class="form-label fw-bold small"><?= _("Nom") ?> <span class="text-danger">*</span></label>
<input class="form-control text-uppercase" type="text" id="nomBeneficiaire" name="nomBeneficiaire" value="<?= $beneficiaire['nomBeneficiaire'] ?>" required>
<input class="form-control text-uppercase fw-bold border-primary" type="text" id="nomBeneficiaire" name="nomBeneficiaire" value="<?= $beneficiaire['nomBeneficiaire'] ?>" required>
</div>
<div class="col-md-6">
<label class="form-label fw-bold small"><?= _("Prénoms") ?> <span class="text-danger">*</span></label>
<input class="form-control" type="text" id="prenomsBeneficiaire" name="prenomsBeneficiaire" value="<?= $beneficiaire['prenomsBeneficiaire'] ?>" required autofocus>
<input class="form-control fw-bold border-primary" type="text" id="prenomsBeneficiaire" name="prenomsBeneficiaire" value="<?= $beneficiaire['prenomsBeneficiaire'] ?>" required autofocus>
</div>
<div class="col-md-4">
<label class="form-label fw-bold small"><?= _("Lien Parenté") ?></label>
<select class="form-select" id="codeLienParente" name="codeLienParente">
<select class="form-select bg-light fw-bold" id="codeLienParente" name="codeLienParente">
<?php liste_options($lienparente,$beneficiaire['codeLienParente'],true); ?>
</select>
</div>
<div class="col-md-4">
<label class="form-label fw-bold small"><?= _("Sexe") ?></label>
<select class="form-select" id="sexe" name="sexe">
<select class="form-select bg-light fw-bold" id="sexe" name="sexe">
<?php liste_options($sexe,$beneficiaire['sexe'],true); ?>
</select>
</div>
<div class="col-md-4">
<label class="form-label fw-bold small"><?= _("Groupe Sanguin") ?></label>
<select class="form-select" id="codeGroupeSanguin" name="codeGroupeSanguin">
<select class="form-select bg-light fw-bold" id="codeGroupeSanguin" name="codeGroupeSanguin">
<?php liste_options($groupesanguin,$beneficiaire['codeGroupeSanguin'],true); ?>
</select>
</div>
<h6 class="text-primary text-uppercase small fw-bold mt-5 mb-3 border-bottom pb-2">
<i class="fas fa-id-card me-2"></i><?= _("Documents & Contact") ?>
</h6>
<div class="col-md-4">
<label class="form-label fw-bold small"><?= _("Nature Pièce") ?></label>
<select class="form-select" id="codeNaturePiece" name="codeNaturePiece">
<select class="form-select border-info" id="codeNaturePiece" name="codeNaturePiece">
<?php liste_options($naturepiece,$beneficiaire['codeNaturePiece'],true); ?>
</select>
</div>
<div class="col-md-4">
<label class="form-label fw-bold small"><?= _("N° Pièce") ?></label>
<input class="form-control" type="text" id="numeroPiece" name="numeroPiece" value="<?=$beneficiaire['numeroPiece']?>">
<input class="form-control border-info" type="text" id="numeroPiece" name="numeroPiece" value="<?=$beneficiaire['numeroPiece']?>">
</div>
<div class="col-md-4">
<label class="form-label fw-bold small"><?= _("Téléphone Portable") ?></label>
<div class="input-group">
<span class="input-group-text"><i class="fas fa-phone"></i></span>
<input class="form-control" type="tel" id="telephonePortable" name="telephonePortable" value="<?= $beneficiaire['telephonePortable'] ?>">
<span class="input-group-text bg-info text-white"><i class="fas fa-phone"></i></span>
<input class="form-control fw-bold border-info" type="tel" id="telephonePortable" name="telephonePortable" value="<?= $beneficiaire['telephonePortable'] ?>" placeholder="00000000">
</div>
</div>
</div>
<?php if($aCorriger == "1"): ?>
<label class="control-label mt-3 fw-bold mb-1 text-danger"><?= _("Correction demandée");?></label>
<div class="well well-sm w-100" style="min-height: 120px; background-color: #f3f2f1; margin-bottom: 0;">
<?= nl2br($motif); ?>
</div>
<?php endif; ?>
<div class="row mt-5">
<div class="col-12 text-end">
<hr>
<a href="javascript:history.back()" class="btn btn-outline-secondary me-2">
<i class="fas fa-times me-2"></i><?= _("Annuler") ?>
</a>
<button type="submit" class="btn btn-primary px-5 shadow-sm">
<i class="fas fa-save me-2"></i><?= _("Enregistrer les modifications") ?>
</button>
<div class="col-12 d-flex justify-content-between align-items-center">
<div>
<a href="javascript:history.back()" class="btn btn-light border px-4">
<i class="fas fa-arrow-left me-2 text-muted"></i><?= _("Retour") ?>
</a>
</div>
<div class="d-flex gap-2">
<?php if($aCorriger == "1"): ?>
<button type="button" class="btn btn-info px-4 shadow-sm fw-bold animate__animated animate__pulse animate__infinite text-white" onclick="confirmer_correction(<?= $idMvt; ?>, <?= $idBeneficiaire; ?>)">
<i class="fas fa-check-double me-2"></i><?= _("Confirmer la Correction") ?>
</button>
<?php endif; ?>
<button type="submit" class="btn btn-primary px-4 shadow-sm fw-bold">
<i class="fas fa-save me-2"></i><?= _("Enregistrer les Modifications") ?>
</button>
</div>
</div>
</div>
</div>
</div>
</form>
</div>
</div>
<style>
.form-control:focus, .form-select:focus {
border-color: #0d6efd;
box-shadow: 0 0 0 0.25rem rgba(13, 110, 253, 0.1);
}
input.text-uppercase { text-transform: uppercase; }
</style>

View File

@ -1,5 +1,5 @@
<?php
$this->titre = "ISA WEB - Nouvel Utilisateur Portail RH";
$this->titre = "INTER SANTE - Nouvel Utilisateur Portail RH";
$idClient = $_SESSION['idClient_C'];
$nomClient = $_SESSION['nomClient_C'];

58
Vue/Requetes/index.php Normal file
View File

@ -0,0 +1,58 @@
<?php $this->titre = "INTER-SANTE - Requêtes & Statistiques"; ?>
<div id="div_adherent" class="container-fluid py-1 animate__animated animate__fadeIn">
<h1 class="text-primary"><i class="fas fa-database me-2"></i><?= _('Requêtes & Analyses') ?></h1>
<div class="card-header d-flex justify-content-between align-items-center py-1 mb-2">
<h5 class="mb-0 fw-bold">
<?= _("POLICE") ?> : <span class="text-secondary"><?= $this->nettoyer($_SESSION['numeroPolice_C']) ?></span>
<span class="ms-3 badge bg-primary text-light small fw-normal">ID: <?= $this->nettoyer($_SESSION['idPolice_C']) ?></span>
</h5>
<div class="fw-bold">
<?= _("Contrat du") ?> : <?= dateLang($this->nettoyer($sppoliceentete['dateEffet']), $_SESSION['lang']) ?>
<span class="ms-2"><?= _("au") ?> : <?= dateLang($this->nettoyer($sppoliceentete['dateEcheance']), $_SESSION['lang']) ?></span>
</div>
<div class="badge bg-dark px-3 py-2 fs-6">
<?= _("Durée Contrat") ?> : <?= $this->nettoyer($sppoliceentete['duree_acquise'])." / ".$this->nettoyer($sppoliceentete['dureePolice']) ?> <?= _("jours") ?>
</div>
</div>
<div class="card shadow-sm border-0 mb-2" style="border-radius: 12px;">
<div class="card-body p-3">
<div class="row align-items-center">
<div class="col-md-3 text-md-end">
<label class="form-label fw-bold small text-muted text-uppercase mb-md-0">
<i class="fas fa-filter me-2 text-primary"></i><?= _("Rapport") ?> :
</label>
</div>
<div class="col-md-6">
<div class="input-group">
<span class="input-group-text bg-white border-primary-subtle">
<i class="fas fa-list-ul"></i>
</span>
<select class="form-select border-primary-subtle fw-bold" id="codeRequete" name="codeRequete"
autofocus onchange="javascript:ajaxenteterequete();">
<?php liste_options($requetes, "", false); ?>
</select>
</div>
</div>
<div class="col-md-3">
<div id="loader_requete" class="spinner-border spinner-border-sm text-primary ms-2" role="status" style="display: none;">
<span class="visually-hidden">Loading...</span>
</div>
</div>
</div>
</div>
</div>
<div id="div_ente_requete" class="mb-2"></div>
<div id="div_detail_requete" class="card shadow-sm border-0 overflow-hidden" style="border-radius: 12px;">
<div class="card-body p-0">
<div class="text-center py-5 text-muted">
<i class="fas fa-chart-line fa-4x mb-3 opacity-25"></i>
<p class="h5">Aucune donnée affichée / No data displayed</p>
</div>
</div>
</div>
</div>

View File

@ -708,7 +708,7 @@ $photoAssureCrypte = $_SESSION['photoAssureCrypte'];
<script src="https://cdn.jsdelivr.net/npm/sweetalert2@11"></script>
<!-- Application Scripts -->
<script src="/Js/fonctions.js?ver=2026.03.24.00"></script>
<script src="/Js/fonctions.js?ver=2026.04.18.24"></script>
<script type="text/javascript">
raffraichier_gabarit();