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

This commit is contained in:
KONE SOREL 2026-03-26 12:02:57 +00:00
commit 9399637daf
16 changed files with 320 additions and 64 deletions

13
.gitignore vendored Normal file
View File

@ -0,0 +1,13 @@
Config/
Config
Config/dev.ini
vendor/
vendor
logs/
logs
Cron/prod.ini
Temp/
Temp
*.ssh
.ssh/

View File

@ -3,11 +3,13 @@ require_once 'Framework/Controleur.php';
require_once 'Modele/Remboursement.php';
require_once 'Modele/Ged.php';
require_once 'Modele/Menuvueutilisateur.php';
require_once 'Modele/Banque.php';
class ControleurRemboursement extends Controleur {
private $menuvue;
private $remboursement;
private $ged;
private $banque;
public function __construct() {
$this->menuvue = new Menuvueutilisateur();
@ -15,6 +17,7 @@ class ControleurRemboursement extends Controleur {
$this->remboursement = new Remboursement();
$this->ged = new Ged();
$this->banque = new Banque();
}
public function index($msgErreur=null)
@ -169,8 +172,20 @@ class ControleurRemboursement extends Controleur {
unset($_FILES['fichier_upload']);
$banque = $this->remboursement->getBanqueAssure();
$banques = $this->banque->getListe();
$this->genererVue(array('benficiaires' => $benficiaires, 'msgErreurGed' => $msgErreurGed,
'demande' => $demande, 'geds' => $geds));
'demande' => $demande, 'geds' => $geds, 'banque' => $banque, 'banques' => $banques));
}
public function enregistrercptbancaire()
{
$codeBanque = $this->requete->getParametreFormulaire("codeBanque");
$numeroCompteBancaire = $this->requete->getParametreFormulaire("numeroCompteBancaire");
$intituleCompteBancaire = $this->requete->getParametreFormulaire("intituleCompteBancaire");
$this->remboursement->enregistrercptbancaire($codeBanque, $numeroCompteBancaire, $intituleCompteBancaire);
}
}

View File

@ -30,23 +30,22 @@ class ControleurRendezvous extends Controleur {
$prestataires = $this->prestataire->getprestatairerdvmobile();
/*
var_dump
(
array
(
"idDemandeRdv" => $idDemandeRdv,
"benficiaires" => $benficiaires,
"demande" => $demande,
"specialites" => $specialites,
"prestataires" => $prestataires,
)
);
exit();
*/
$this->genererVue(array('benficiaires' => $benficiaires, 'demande' => $demande,
'specialites' => $specialites, 'prestataires' => $prestataires));
}
public function rdvpossible()
{
$codePrestataire= $this->requete->getParametreFormulaire("codePrestataire");
$rdvPossible = $this->prestataire->rdvPossible($codePrestataire);
$this->genererVueAjax
(
array
(
'rdvPossible' => $rdvPossible
)
);
}
}

42
Controleur/Ebenegmail.php Executable file → Normal file
View File

@ -1,30 +1,25 @@
<?php
// date_default_timezone_set('Etc/UTC');
// date_default_timezone_set("Africa/Kigali");
require 'PHPMailer/PHPMailerAutoload.php';
use PHPMailer\PHPMailer\PHPMailer;
use PHPMailer\PHPMailer\Exception;
$mail = new PHPMailer;
// Inclusion des fichiers
require 'PHPMailer/Exception.php';
require 'PHPMailer/PHPMailer.php';
require 'PHPMailer/SMTP.php';
$mail = new PHPMailer(true);
$mail->CharSet = 'UTF-8'; // Utiliser UTF-8
$mail->Encoding = 'base64'; // Encodage du contenu
$mail->isSMTP();
//Enable SMTP debugging
// 0 = off (for production use)
// 1 = client messages
// 2 = // dev => client and server messages
// $mail->SMTPDebug = 2; // dev => client and server messages
// 2 = client and server messages
$mail->SMTPDebug = 0;
// $mail->SMTPDebug = 1;
// $mail->SMTPDebug = 2;
// $mail->Debugoutput = 'html';
$mail->Host = 'smtp.gmail.com';
// $mail->Host = gethostbyname('smtp.gmail.com');
// if your network does not support SMTP over IPv6
// $mail->Host = 'smtp.gmail.com';
$mail->Host = 'smtp.office365.com';
$mail->Port = 587;
@ -32,10 +27,19 @@ $mail->SMTPSecure = 'tls';
$mail->SMTPAuth = true;
$mail->Username = "intersantesaas@gmail.com";
// $mail->Username = "intersanteebene@gmail.com";
// $mail->Username = "intersante@radiant.rw";
$mail->Username = "bkwitonda@radiant.rw";
// $mail->Password = "Moritio1973";
$mail->Password = "qvix febq ylkp enks";
// $mail->Password = "radiant@123?";
// $mail->Password = "ybad kjir ghck aokr";
$mail->Password = "office@2650000";
$mail->setFrom('intersantesaas@gmail.com', 'INTER-SANTE : EBENE');
// $mail->setFrom('intersanteebene@gmail.com', 'RADIANT INSURANCE COMPANY');
$mail->setFrom('intersante@radiant.rw', 'RADIANT INSURANCE COMPANY');
$mail->addReplyTo('verification@radiant.rw', 'RADIANT INSURANCE COMPANY');
// à activer en cas de besoin
// $mail->msgHTML(file_get_contents('contents.html'), dirname(__FILE__));
$_SESSION['c_mail'] = $mail;

26
Cron/Ebenegmail.php Executable file → Normal file
View File

@ -3,22 +3,23 @@
// date_default_timezone_set("Africa/Kigali");
require 'PHPMailer/PHPMailerAutoload.php';
$mail = new PHPMailer(true);
$mail->CharSet = 'UTF-8'; // Utiliser UTF-8
$mail->Encoding = 'base64'; // Encodage du contenu
$mail = new PHPMailer;
$mail->isSMTP();
//Enable SMTP debugging
// 0 = off (for production use)
// 1 = client messages
// 2 = client and server messages
$mail->SMTPDebug = 0;
// $mail->SMTPDebug = 1;
// $mail->SMTPDebug = 2;
// $mail->Debugoutput = 'html';
$mail->Host = 'smtp.gmail.com';
// $mail->Host = gethostbyname('smtp.gmail.com');
// if your network does not support SMTP over IPv6
// $mail->Host = 'smtp.gmail.com';
$mail->Host = 'smtp.office365.com';
$mail->Port = 587;
@ -26,11 +27,18 @@ $mail->SMTPSecure = 'tls';
$mail->SMTPAuth = true;
$mail->Username = "intersanteebene@gmail.com";
// $mail->Username = "intersanteebene@gmail.com";
// $mail->Username = "intersante@radiant.rw";
$mail->Username = "bkwitonda@radiant.rw";
$mail->Password = "Moritio1973";
// $mail->Password = "Moritio1973";
// $mail->Password = "radiant@123?";
// $mail->Password = "ybad kjir ghck aokr";
$mail->Password = "office@2650000";
$mail->setFrom('intersanteebene@gmail.com', 'INTER-SANTE');
// $mail->setFrom('intersanteebene@gmail.com', 'RADIANT INSURANCE COMPANY');
$mail->setFrom('intersante@radiant.rw', 'RADIANT INSURANCE COMPANY');
$mail->addReplyTo('verification@radiant.rw', 'RADIANT INSURANCE COMPANY');
// à activer en cas de besoin
// $mail->msgHTML(file_get_contents('contents.html'), dirname(__FILE__));

View File

@ -161,7 +161,7 @@ function dateFr($d)
function dateEng($d)
{
if ($d<="0000-00-00") return "";
return date("m/j/Y", strtotime($d));
return date("m/d/Y", strtotime($d));
}
function dateLang($d, $lang=null)

View File

@ -17986,12 +17986,24 @@ function affichelisteprestataires(libelle)
}
}
function selectPrestataire(code, libelle){
function selectPrestataire(code, libelle, rdvPossible){
nomForm = $("#nomForm").val();
$("#searchInputPrestataire").val(libelle);
$("#div_selection_prestataire").hide();
$("#codePrestataire").val(code);
$("#rdvPossible").val(rdvPossible);
// alert("rdvPossible selectPrestataire Desktop => "+rdvPossible);
if(rdvPossible == "1")
{
$("#div_message_rdv").hide();
}
else
{
$("#div_message_rdv").show();
marquee_rdv.stop();
marquee_rdv.start();
}
}
function estDateAnncienne(date) {
@ -18479,7 +18491,6 @@ function enregistrer_rdv()
return;
}
v_msg="Confirmez-vous l'enregistrement de votre demande?";
v_msgEng="Do you confirm the registration of your request?";
@ -18490,7 +18501,7 @@ function enregistrer_rdv()
donnees = 'numeroBeneficiaire='+ numeroBeneficiaire+'&debutRdv='+debutRdv;
donnees += '&finRdv='+finRdv+'&codePrestataire='+codePrestataire;
donnees += '&codeSpecialite='+codeSpecialite+'&motifRdv='+motifRdv;
vLink = "Ajaxdemanderdv/enregistrer/";
$.ajax({
@ -18500,18 +18511,13 @@ function enregistrer_rdv()
error: function(errorData) {
},
success: function(data) {
// alert(data);
// $('#div_test_gabarit').html(data);
},
complete: function() {
ouvrir_rdv();
historique_rdv();
}
});
} else {
// L'utilisateur a annulé
console.log("Confirmation refusée");
}
});
@ -18846,3 +18852,94 @@ function afficherhistoriquefactures()
});
}
function selectPrestataireMobile(){
codePrestataire=$("#codePrestataireMobile").val();
$("#codePrestataire").val(codePrestataire);
donnees = 'codePrestataire='+codePrestataire;
$("#div_rdvPossible").html('<div class="spinner-responsive">' + '<span><i class="fa fa-spinner"></i></span>' + '</div>');
$.ajax({
url: $("#racineWeb").val()+"Rendezvous/rdvpossible/",
type : 'post',
data: donnees,
error: function(errorData) {
},
success: function(data) {
// $('#div_test_gabarit').html(data);
$("#div_rdvPossible").html(data);
},
complete: function() {
rdvPossible=$("#rdvPossibleAjax").val();
// alert("rdvPossible selectPrestataire Mobile => "+rdvPossible);
if(rdvPossible == "1")
{
$("#div_message_rdv").hide();
}
else
{
$("#div_message_rdv").show();
marquee_rdv.stop();
marquee_rdv.start();
}
}
});
}
// enregistrer_compte_bancaire_assure()
function enregistrer_compte_bancaire_assure(){
codeBanque =$("#codeBanque").val();
if (codeBanque<=" ")
{
$("#codeBanque").focus();
v_msg="Veuillez sélectionner une banque!";
v_msgEng="Please select a banq!";
alert_ebene(v_msg, v_msgEng);
return;
}
numeroCompteBancaire=$("#numeroCompteBancaire").val();
if (numeroCompteBancaire<=" ")
{
$("#numeroCompteBancaire").focus();
v_msg="Veuillez saisir le No de compte!";
v_msgEng="Please enter the account number!";
alert_ebene(v_msg, v_msgEng);
return;
}
intituleCompteBancaire=$("#intituleCompteBancaire").val();
if (intituleCompteBancaire<=" ")
{
$("#intituleCompteBancaire").focus();
v_msg="Veuillez saisir le nom du compte!";
v_msgEng="Please enter the account name!";
alert_ebene(v_msg, v_msgEng);
return;
}
donnees = 'codeBanque='+codeBanque;
donnees += '&numeroCompteBancaire='+numeroCompteBancaire;
donnees += '&intituleCompteBancaire='+intituleCompteBancaire;
$("#div_cpt_bancaire").html('<div class="spinner-responsive">' + '<span><i class="fa fa-spinner"></i></span>' + '</div>');
$.ajax({
url: $("#racineWeb").val()+"Remboursement/enregistrercptbancaire/",
type : 'post',
data: donnees,
error: function(errorData) {
// $('#div_test_gabarit').html(errorData);
// $('#div_cpt_bancaire').html(errorData);
},
success: function(data) {
// $('#div_test_gabarit').html(data);
// $('#div_cpt_bancaire').html(data);
},
complete: function() {
actualiser_remboursement();
}
});
}

View File

@ -49,4 +49,12 @@ class Banque extends Modele {
$resultat = $this->executerRequete($sql, array($_SESSION['codeSociete'],$codebanque));
return ($resultat->rowCount() > 0);
}
public function getListe() {
$sql = 'SELECT codeBanque as `code`, libelle FROM banque order by 2';
$liste = $this->executerRequete($sql);
return $liste->fetchAll(PDO::FETCH_ASSOC);
}
}

View File

@ -400,5 +400,12 @@ class Prestataire extends Modele {
return $resultat->fetchAll(PDO::FETCH_ASSOC);
}
public function rdvPossible($codePrestataire)
{
$sql = 'SELECT fn_rdv_possible(?) AS rdvPossible;';
$resultat = $this->executerRequete($sql, array($codePrestataire));
$ligne = $resultat->fetch(PDO::FETCH_ASSOC);
return $ligne['rdvPossible'];
}
}

View File

@ -80,4 +80,24 @@ class Remboursement extends Modele {
}
public function getBanqueAssure()
{
$idAdherent = $_SESSION['idAdherent_C'];
$sql = 'Call sp_a_get_banque_assure(?)';
$liste = $this->executerRequete($sql,array($idAdherent));
return $liste->fetch(PDO::FETCH_ASSOC);
}
public function enregistrercptbancaire($codeBanque, $numeroCompteBancaire, $intituleCompteBancaire)
{
$idAdherent = $_SESSION['idAdherent_C'];
$sql = 'Call sp_a_enregistrer_cpt_bancaire(?, ?, ?, ?);';
// var_dump(array($idAdherent, $codeBanque, $numeroCompteBancaire, $intituleCompteBancaire));
// exit;
$this->executerRequete($sql,array($idAdherent, $codeBanque, $numeroCompteBancaire, $intituleCompteBancaire));
}
}

View File

@ -49,7 +49,7 @@ class Rendezvous extends Modele {
public function getSpecialiteRdv()
{
if(est_anglophone()){
$sql = 'CALL sp_a_get_specialites_rdv_eng();';
$sql = 'CALL sp_a_get_specialites_rdv_eng(?);';
}else{
$sql = 'CALL sp_a_get_specialites_rdv(?)';
}

View File

@ -6,7 +6,7 @@ if(!empty($prestataires)) {
<?php
foreach($prestataires as $v) {
?>
<li onClick="selectPrestataire('<?=$v["code"];?>', '<?=$v["libelle"];?>')"><?= $v["libelle"]; ?></li>
<li onClick="selectPrestataire('<?=$v["code"];?>', '<?=$v["libelle"];?>', '<?=$v["rdvPossible"];?>')"><?= $v["libelle"]; ?></li>
<?php } ?>
</ul>
<?php } ?>

View File

@ -20,7 +20,15 @@
$numeroBeneficiaire = "";
$observation = "";
}
/*
var_dump
(
array(
"banque" => $banque,
)
);
*/
?>
<div class="card shadow-lg border-0 mb-4" style="border-radius: 15px;">
@ -144,7 +152,57 @@
</div>
</div>
<?php endif; ?>
<!-- div compte bancaire assuré -->
<div id="div_cpt_bancaire">
<?php if($banque['numeroCompteBancaire']>' ' && $banque['intituleCompteBancaire']>' '): ?>
<table class="table table-responsive table-condensed" style='font-size:10pt;' readonly >
<tbody>
<tr>
<td > <?= _("Banque") ?> </td>
<td><INPUT style='font-size:10pt;' class="form-control" TYPE="text" id="banque" NAME="banque" value="<?=$this->nettoyer($banque['banque'])?>" readonly></td>
<td align="center" > <?= _("Cpte bancaire") ?> </td>
<td><INPUT style='font-size:10pt;' class="form-control" TYPE="text" id="numeroCompteBancaire" NAME="numeroCompteBancaire" value="<?=$this->nettoyer($banque['numeroCompteBancaire'])?>" readonly ></td>
</tr>
<tr>
<td> <?= _("Intititulé Cpte") ?> </td>
<td colspan="3"> <INPUT style='font-size:10pt;' class="form-control" TYPE="text" id="intituleCompteBancaire" NAME="intituleCompteBancaire" value="<?=$this->nettoyer($banque['intituleCompteBancaire'])?>" readonly ></td>
</tr>
</tbody>
</table>
<?php else: ?>
<table class="table table-responsive table-condensed" style='font-size:10pt;' >
<tbody>
<tr>
<td > <?= _("Banque") ?> </td>
<td>
<SELECT style='font-size:10pt;' class="form-control" id="codeBanque" NAME="codeBanque" required>
<?php liste_options($banques, $banque["codeBanque"]); ?>
</SELECT>
</td>
<td align="center" > <?= _("Cpte bancaire") ?> </td>
<td><INPUT style='font-size:10pt;' class="form-control" TYPE="text" id="numeroCompteBancaire" NAME="numeroCompteBancaire" value="<?=$this->nettoyer($banque['numeroCompteBancaire'])?>" ></td>
</tr>
<tr>
<td> <?= _("Intititulé Cpte") ?> </td>
<td> <INPUT style='font-size:10pt;' class="form-control" TYPE="text" id="intituleCompteBancaire" NAME="intituleCompteBancaire" value="<?=$this->nettoyer($banque['intituleCompteBancaire'])?>" ></td>
<td> </td>
<td>
<input class = "form-control btn btn-primary" type="button" value="<?= _("Enregister Compte bancaire") ?>" onClick="javascript:enregistrer_compte_bancaire_assure();" style='font-size:10pt;' >
</td>
</tr>
</tbody>
</table>
<?php endif; ?>
</div>
<!-- Bouton Enregistrer -->
<?php if($idDemandeRemboursement == "0" && $codeEtatDemandeRemboursement == "0"): ?>
<div class="col-12">
@ -205,7 +263,7 @@
<?php endif; ?>
<?php if((isset($msgErreurGed)) && ($msgErreurGed>" ")) : ?>
<div class="alert alert-danger mt-3" role="alert">
<div class="alert alert-success mt-3" role="alert">
<i class="fas fa-exclamation-triangle me-2"></i>
<?= $msgErreurGed ?>
</div>

View File

@ -12,6 +12,7 @@
$debutRdv = $this->nettoyer($demande['debutRdv']);
$finRdv = $this->nettoyer($demande['finRdv']);
$codePrestataire = $this->nettoyer($demande['codePrestataire']);
$rdvPossible = $this->nettoyer($demande['rdvPossible']);
$prestataire = $this->nettoyer($demande['prestataire']);
$codeSpecialite = $this->nettoyer($demande['codeSpecialite']);
$etatRdv = $this->nettoyer($demande['etatRdv']);
@ -34,6 +35,7 @@
$debutRdv = date('Y-m-d');
$finRdv = date('Y-m-d');
$codePrestataire = "";
$rdvPossible = "0";
$prestataire = "";
$codeSpecialite = "";
$etatRdv = "";
@ -43,8 +45,12 @@
$heureRdvAccordee = "";
}
$messageRdv = _("Attention! Ce prestataire ne prend pas de Rendez-vous en ligne.");
?>
<input class="sr-only" type="text" id="codePrestataire" name="codePrestataire" value="<?= $codePrestataire; ?>">
<input class="sr-only" type="text" id="rdvPossible" name="rdvPossible" value="<?= $rdvPossible; ?>">
<div class="card shadow-lg border-0 mb-4" style="border-radius: 15px;">
<div class="card-header bg-primary text-white py-3" style="border-radius: 15px 15px 0 0;">
<div class="row align-items-center">
@ -76,6 +82,12 @@
<strong style="font-size: 1.1rem;"><?= _("RDV No").": ".$numeroDemandeRdv ?></strong>
</div>
<?php endif; ?>
<div id="div_info_rdv" name="div_messdiv_info_rdvage_rdv" >
<marquee behavior="scroll" direction="left" scrollamount="15" style="background-color:red;color:white; font-weight:bold; font-size:14pt">
<?= _("Toute la responsabilité liée à ce rendez-vous incombe au prestataire.") ?>
</marquee>
</div>
<!-- Carte principale du formulaire -->
<div class="card shadow-sm mb-4">
@ -176,13 +188,21 @@
onkeyup="javascript:affichelisteprestataires(this.value);"
value="<?= $prestataire; ?>"
placeholder="<?= _('Rechercher un prestataire') ?>">
<input class="sr-only" type="text" id="codePrestataire" name="codePrestataire" value="<?= $codePrestataire; ?>">
<div id="div_selection_prestataire" class="mt-2"></div>
</div>
<!-- Affichage mobile (cartes) -->
<div class="d-md-none">
<div id="div_rdvPossible"> </div>
<!--
<select class="form-select mobile-select" id="codePrestataire" name="codePrestataire"
<?= ($codeEtatRdv != "0") ? 'disabled' : 'required' ?>>
<?= ($codeEtatRdv != "0") ? 'disabled' : 'required' ?> onChange="javascript:selectPrestataireMobile();" >
<?php liste_options($prestataires, $codePrestataire); ?>
</select>
-->
<select class="form-select mobile-select" id="codePrestataireMobile" name="codePrestataireMobile"
<?= ($codeEtatRdv != "0") ? 'disabled' : 'required' ?> onChange="javascript:selectPrestataireMobile();" >
<?php liste_options($prestataires, $codePrestataire); ?>
</select>
</div>
@ -205,6 +225,12 @@
</div>
</div>
</div>
<div id="div_message_rdv" name="div_message_rdv" style="display:none;" >
<marquee id="marquee_rdv" name="marquee_rdv" behavior="scroll" direction="left" scrollamount="15" style="background-color:red;color:white; font-weight:bold; font-size:14pt">
<?= $messageRdv; ?>
</marquee>
</div>
<!-- Carte Motif du RDV -->
<div class="card shadow-sm mb-4">

1
Vue/Rendezvous/rdvpossible.php Executable file
View File

@ -0,0 +1 @@
<input class="sr-only" type="text" id="rdvPossibleAjax" name="rdvPossibleAjax" value="<?= $rdvPossible; ?>">

View File

@ -548,7 +548,7 @@
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/toastr.js/latest/toastr.css" integrity="sha512-3pIirOrwegjM6erE5gPSwkUzO+3cTjpnV9lexlNZqvupR64iZBnOOTiiLPb9M36zpMScbmUNIcHUqKD47M719g==" crossorigin="anonymous" referrerpolicy="no-referrer" />
<script src="https://cdnjs.cloudflare.com/ajax/libs/toastr.js/latest/toastr.min.js" integrity="sha512-VEd+nq25CkR676O+pLBnDW09R7VQX9Mdiij052gVCp5yVH3jGtH70Ho/UUv4mJDsEdTvqRCFZg0NKGiojGnUCw==" crossorigin="anonymous" referrerpolicy="no-referrer"></script>
<script src="Js/fonctions.js?ver=2025.12.22.01"></script>
<script src="Js/fonctions.js?ver=2026.03.05.25"></script>
<script src="Bootstrap/js/bootstrap.min.js"></script>
<script src="https://unpkg.com/vue@3/dist/vue.global.prod.js"></script>
<script src="https://cdn.jsdelivr.net/npm/chart.js"></script>