g
This commit is contained in:
parent
305558c43e
commit
a7710bcab0
156
Js/fonctions.js
156
Js/fonctions.js
|
|
@ -2502,102 +2502,96 @@ $( ".datepicker" ).datepicker({
|
||||||
|
|
||||||
});
|
});
|
||||||
|
|
||||||
function charger_fichier_modele_assure()
|
/**
|
||||||
{
|
* ETAPE 2 : Affichage du formulaire d'upload
|
||||||
$('#div_exporter_liste_assures').html("");
|
*/
|
||||||
|
function charger_fichier_modele_assure() {
|
||||||
|
// Nettoie la zone de prévisualisation avant un nouvel upload
|
||||||
|
$('#div_exporter_liste_assures').empty();
|
||||||
|
|
||||||
$('#div_form_upload').show();
|
// Animation fluide pour afficher le formulaire
|
||||||
|
$('#div_form_upload').slideDown();
|
||||||
|
|
||||||
|
// Scroll automatique vers le formulaire pour l'utilisateur
|
||||||
|
$('html, body').animate({
|
||||||
|
scrollTop: $("#div_form_upload").offset().top - 100
|
||||||
|
}, 500);
|
||||||
}
|
}
|
||||||
|
|
||||||
function init_importer_modele_assure()
|
/**
|
||||||
{
|
* ETAPE 3 (Init) : Chargement de la liste des avenants
|
||||||
etape2=$("#etape2").val();
|
*/
|
||||||
|
function init_importer_modele_assure() {
|
||||||
|
// Vérification stricte de l'étape précédente
|
||||||
|
var etape2 = $("#etape2").val();
|
||||||
|
|
||||||
if (etape2 != "1")
|
if (etape2 !== "1") {
|
||||||
{
|
alert_ebene("Veuillez d'abord charger un fichier Excel (Étape 2) !", "Please upload an Excel file first (Step 2)!");
|
||||||
v_msg="Etape 2 incomplète!";
|
return;
|
||||||
v_msgEng="Incomplete step 2!";
|
}
|
||||||
alert_ebene(v_msg, v_msgEng);
|
|
||||||
|
|
||||||
return;
|
$('#div_form_upload').slideUp();
|
||||||
}
|
var div_export = $('#div_exporter_liste_assures');
|
||||||
|
|
||||||
$('#div_form_upload').hide();
|
// Spinner moderne
|
||||||
|
div_export.html('<div class="text-center py-5"><div class="spinner-border text-primary" role="status"></div><p class="mt-2">Récupération des avenants...</p></div>');
|
||||||
|
|
||||||
var div_export = $('#div_exporter_liste_assures');
|
$.ajax({
|
||||||
|
url: $("#racineWeb").val() + "Ajaximporterlisteassure/initimportermodele/",
|
||||||
div_export.html('<div style="padding-top:80px;"><img src="Bootstrap/images/loading.gif"/> <span style="font-size:15pt;">' + 'Veuillez patienter... / Please wait...' + '</span></div>');
|
type: 'POST',
|
||||||
|
success: function(data) {
|
||||||
$.ajax({
|
div_export.html(data);
|
||||||
url: $("#racineWeb").val()+"Ajaximporterlisteassure/initimportermodele/",
|
},
|
||||||
type: 'POST',
|
error: function() {
|
||||||
// data: donnees,
|
div_export.html('<div class="alert alert-danger">Erreur de connexion au serveur.</div>');
|
||||||
success: function(data)
|
}
|
||||||
{
|
});
|
||||||
div_export.html(data);
|
|
||||||
},
|
|
||||||
error : function(resultat, statut, erreur)
|
|
||||||
{
|
|
||||||
},
|
|
||||||
complete: function(data)
|
|
||||||
{
|
|
||||||
}
|
|
||||||
});
|
|
||||||
}
|
}
|
||||||
|
|
||||||
function importer_modele_assure(idAvenant)
|
/**
|
||||||
{
|
* ETAPE 3 (Action) : Liaison du fichier à l'avenant choisi
|
||||||
etape2=$("#etape2").val();
|
*/
|
||||||
|
function importer_modele_assure(idAvenant) {
|
||||||
|
// On re-vérifie la présence du fichier par sécurité
|
||||||
|
var cheminFichier = $("#cheminFichier").val();
|
||||||
|
if (!cheminFichier || cheminFichier === "") {
|
||||||
|
alert_ebene("Erreur: Aucun fichier trouvé.", "Error: No file found.");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
if (etape2 != "1")
|
var div_export = $('#div_exporter_liste_assures');
|
||||||
{
|
div_export.html('<div class="text-center py-5"><div class="spinner-border text-info" role="status"></div><p class="mt-2">Analyse du fichier et liaison à l\'avenant...</p></div>');
|
||||||
v_msg="Etape 2 incomplète!";
|
|
||||||
v_msgEng="Incomplete step 2!";
|
|
||||||
alert_ebene(v_msg, v_msgEng);
|
|
||||||
|
|
||||||
return;
|
var donnees = {
|
||||||
}
|
idAvenant: idAvenant,
|
||||||
|
cheminFichier: cheminFichier
|
||||||
|
};
|
||||||
|
|
||||||
$('#div_form_upload').hide();
|
$("#div_erreur_excel").empty();
|
||||||
|
|
||||||
var div_export = $('#div_exporter_liste_assures');
|
$.ajax({
|
||||||
|
url: $("#racineWeb").val() + "Ajaximporterlisteassure/importermodele/",
|
||||||
|
type: 'POST',
|
||||||
|
data: donnees,
|
||||||
|
success: function(data) {
|
||||||
|
// Le serveur doit retourner un flag de succès dans le HTML
|
||||||
|
// ex: <input type="hidden" id="succes_impot_execl" value="1">
|
||||||
|
$("#div_erreur_excel").html(data);
|
||||||
|
|
||||||
div_export.html('<div style="padding-top:80px;"><img src="Bootstrap/images/loading.gif"/> <span style="font-size:15pt;">' + 'Chargement en cours! Veuillez patienter...' + '</span></div>');
|
var isSuccess = $("#succes_impot_execl").val();
|
||||||
|
|
||||||
cheminFichier=$("#cheminFichier").val();
|
if (isSuccess === "1") {
|
||||||
|
alert_ebene("Liaison réussie ! Passage au traitement...", "Link successful! Moving to processing...");
|
||||||
donnees = 'idAvenant='+idAvenant+'&cheminFichier='+cheminFichier;
|
maj_etape_3_import_assures();
|
||||||
|
} else {
|
||||||
$("#div_erreur_excel").html("");
|
div_export.empty(); // On vide le spinner pour laisser voir l'erreur
|
||||||
|
alert_ebene("Le fichier contient des erreurs de format.", "The file contains formatting errors.");
|
||||||
$.ajax({
|
}
|
||||||
url: $("#racineWeb").val()+"Ajaximporterlisteassure/importermodele/",
|
},
|
||||||
type: 'POST',
|
error: function() {
|
||||||
data: donnees,
|
alert_ebene("Erreur technique lors de l'importation.", "Technical error during import.");
|
||||||
success: function(data)
|
}
|
||||||
{
|
});
|
||||||
div_export.html('');
|
|
||||||
$("#div_erreur_excel").html(data);
|
|
||||||
|
|
||||||
v_msg="Opération terminée avec succès!";
|
|
||||||
v_msgEng="Operation completed successfully!";
|
|
||||||
alert_ebene(v_msg, v_msgEng);
|
|
||||||
},
|
|
||||||
error : function(resultat, statut, erreur)
|
|
||||||
{
|
|
||||||
},
|
|
||||||
complete: function(data)
|
|
||||||
{
|
|
||||||
div_export.html('');
|
|
||||||
|
|
||||||
succes_impot_execl=$("#succes_impot_execl").val();
|
|
||||||
|
|
||||||
if (succes_impot_execl == "1")
|
|
||||||
{
|
|
||||||
maj_etape_3_import_assures();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
});
|
|
||||||
}
|
}
|
||||||
|
|
||||||
function maj_etape_3_import_assures()
|
function maj_etape_3_import_assures()
|
||||||
|
|
|
||||||
|
|
@ -1,79 +1,126 @@
|
||||||
<div class="card mb-4">
|
<div id="div_liste_adherent" class="container-fluid py-1 animate__animated animate__fadeIn">
|
||||||
<div class="card-header fw-bold text-secondary">
|
|
||||||
<i class="fas fa-tasks me-2"></i><?= _("Processus d'importation des assurés") ?>
|
|
||||||
</div>
|
|
||||||
<div class="card-body">
|
|
||||||
|
|
||||||
<!-- Progress bar -->
|
<h1 class="text-primary"><i class="fas fa-file-import me-2"></i></i> <?= _("Importer les assurés") ?></h1>
|
||||||
<div class="progress mb-4" style="height: 25px;">
|
|
||||||
<div class="progress-bar bg-primary fw-bold" role="progressbar"
|
<div class="card shadow-sm border-0 mb-0 bg-light">
|
||||||
style="width: <?= ($fichierimport['etape3']=='1') ? '100%' : (($fichierimport['etape2']=='1') ? '50%' : '25%') ?>;"
|
<div class="card-body">
|
||||||
aria-valuenow="50" aria-valuemin="0" aria-valuemax="100">
|
<div class="row g-3 align-items-center">
|
||||||
<?= _("Progression") ?>
|
<div class="col-md-4">
|
||||||
</div>
|
<h6 class="text-muted small fw-bold mb-1 text-uppercase"><?= _("Client / Souscripteur") ?></h6>
|
||||||
|
<div class="h5 mb-0 fw-bold text-primary"><?= $_SESSION['nomClient_C'] ?></div>
|
||||||
|
</div>
|
||||||
|
<div class="col-md-3">
|
||||||
|
<h6 class="text-muted small fw-bold mb-1 text-uppercase"><?= _("Police N°") ?></h6>
|
||||||
|
<div class="h5 mb-0 fw-bold"><?= $this->nettoyer($police['numeroPolice']) ?></div>
|
||||||
|
</div>
|
||||||
|
<div class="col-md-2 text-center border-start">
|
||||||
|
<h6 class="text-muted small fw-bold mb-1 text-uppercase"><?= _("État") ?></h6>
|
||||||
|
<span class="badge bg-success px-3"><?= $this->nettoyer($police['etatPolice']) ?></span>
|
||||||
|
</div>
|
||||||
|
<div class="col-md-3 text-end border-start">
|
||||||
|
<h6 class="text-muted small fw-bold mb-1 text-uppercase"><?= _("Période") ?></h6>
|
||||||
|
<div class="small fw-bold">Du <?= dateLang($this->nettoyer($police['dateEffet'])) ?></div>
|
||||||
|
<div class="small fw-bold">Au <?= dateLang($this->nettoyer($police['dateEcheance'])) ?></div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<!-- Timeline steps -->
|
|
||||||
<div class="row g-4 text-center">
|
|
||||||
|
|
||||||
<!-- Étape 1 -->
|
<div class="card shadow-sm border-0 mb-4">
|
||||||
<div class="col-md-3">
|
<div class="card-header bg-white py-1">
|
||||||
<div class="card h-100 <?= ($fichierimport['etape1']=='1') ? 'border-success' : 'border-secondary' ?>">
|
<h5 class="card-title mb-0 fw-bold"><i class="fas fa-file-import me-2 text-info"></i><?= _("Processus d'importation des assurés") ?></h5>
|
||||||
<div class="card-body">
|
|
||||||
<h6 class="fw-bold">1️⃣ <?= _("Obtenir Fichier Modèle") ?></h6>
|
|
||||||
<button type="button" class="btn btn-primary w-100 mt-2" onclick="exporter_modele_assure();">
|
|
||||||
<?= _("Télécharger") ?>
|
|
||||||
</button>
|
|
||||||
<span class="badge mt-2 <?= ($fichierimport['etape1']=='1') ? 'bg-success' : 'bg-secondary' ?>">
|
|
||||||
<?= ($fichierimport['etape1']=='1') ? _("Validée") : _("En attente") ?>
|
|
||||||
</span>
|
|
||||||
</div>
|
|
||||||
</div>
|
</div>
|
||||||
</div>
|
<div class="card-body">
|
||||||
|
<div class="row g-4 text-center">
|
||||||
|
<div class="col-md-3">
|
||||||
|
<div class="p-3 border rounded h-100 bg-white shadow-sm hover-elevate">
|
||||||
|
<div class="badge bg-primary rounded-circle mb-3 fs-5" style="width:40px; height:40px; line-height:28px;">1</div>
|
||||||
|
<p class="small fw-bold mb-3"><?= _("Modèle Excel") ?></p>
|
||||||
|
<button class="btn btn-outline-primary btn-sm w-100" onclick="javascript:exporter_modele_assure();">
|
||||||
|
<i class="fas fa-download me-1"></i> <?= _("Télécharger") ?>
|
||||||
|
</button>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
<!-- Étape 2 -->
|
<div class="col-md-3">
|
||||||
<div class="col-md-3">
|
<div class="p-3 border rounded h-100 <?= ($fichierimport['etape2']=='1') ? 'bg-success-subtle border-success' : 'bg-white shadow-sm' ?>">
|
||||||
<div class="card h-100 <?= ($fichierimport['etape2']=='1') ? 'border-success' : 'border-secondary' ?>">
|
<div class="badge <?= ($fichierimport['etape2']=='1') ? 'bg-success' : 'bg-secondary' ?> rounded-circle mb-3 fs-5" style="width:40px; height:40px; line-height:28px;">
|
||||||
<div class="card-body">
|
<?= ($fichierimport['etape2']=='1') ? '<i class="fas fa-check"></i>' : '2' ?>
|
||||||
<h6 class="fw-bold">2️⃣ <?= _("Charger Fichier Renseigné") ?></h6>
|
</div>
|
||||||
<button type="button" class="btn btn-primary w-100 mt-2" onclick="charger_fichier_modele_assure();">
|
<p class="small fw-bold mb-3"><?= _("Charger le fichier") ?></p>
|
||||||
<?= _("Uploader") ?>
|
<button class="btn <?= ($fichierimport['etape2']=='1') ? 'btn-success' : 'btn-primary' ?> btn-sm w-100" onclick="javascript:charger_fichier_modele_assure();">
|
||||||
</button>
|
<i class="fas fa-upload me-1"></i> <?= _("Choisir fichier") ?>
|
||||||
<span class="badge mt-2 <?= ($fichierimport['etape2']=='1') ? 'bg-success' : 'bg-secondary' ?>">
|
</button>
|
||||||
<?= ($fichierimport['etape2']=='1') ? _("Validée") : _("En attente") ?>
|
</div>
|
||||||
</span>
|
</div>
|
||||||
</div>
|
|
||||||
|
<div class="col-md-3">
|
||||||
|
<div class="p-3 border rounded h-100 <?= ($fichierimport['etape3']=='1') ? 'bg-success-subtle border-success' : 'bg-white shadow-sm' ?>">
|
||||||
|
<div class="badge <?= ($fichierimport['etape3']=='1') ? 'bg-success' : 'bg-secondary' ?> rounded-circle mb-3 fs-5" style="width:40px; height:40px; line-height:28px;">
|
||||||
|
<?= ($fichierimport['etape3']=='1') ? '<i class="fas fa-check"></i>' : '3' ?>
|
||||||
|
</div>
|
||||||
|
<p class="small fw-bold mb-3"><?= _("Avenant lié") ?></p>
|
||||||
|
<button class="btn btn-primary btn-sm w-100" onclick="javascript:init_importer_modele_assure();" <?= ($fichierimport['etape2']!='1') ? 'disabled' : '' ?>>
|
||||||
|
<i class="fas fa-list-alt me-1"></i> <?= _("Lier Avenant") ?>
|
||||||
|
</button>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="col-md-3">
|
||||||
|
<div class="p-3 border rounded h-100 bg-white shadow-sm">
|
||||||
|
<div class="badge bg-secondary rounded-circle mb-3 fs-5" style="width:40px; height:40px; line-height:28px;">4</div>
|
||||||
|
<p class="small fw-bold mb-3"><?= _("Traitement final") ?></p>
|
||||||
|
<button class="btn btn-warning btn-sm w-100 fw-bold" onclick="javascript:traiter_lignes_importees();" <?= ($fichierimport['etape3']!='1') ? 'disabled' : '' ?>>
|
||||||
|
<i class="fas fa-cogs me-1"></i> <?= _("Lancer l'import") ?>
|
||||||
|
</button>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
|
||||||
|
|
||||||
<!-- Étape 3 -->
|
|
||||||
<div class="col-md-3">
|
|
||||||
<div class="card h-100 <?= ($fichierimport['etape3']=='1') ? 'border-success' : 'border-secondary' ?>">
|
|
||||||
<div class="card-body">
|
|
||||||
<h6 class="fw-bold">3️⃣ <?= _("Choisir Avenant") ?></h6>
|
|
||||||
<button type="button" class="btn btn-primary w-100 mt-2" onclick="init_importer_modele_assure();">
|
|
||||||
<?= _("Sélectionner") ?>
|
|
||||||
</button>
|
|
||||||
<span class="badge mt-2 <?= ($fichierimport['etape3']=='1') ? 'bg-success' : 'bg-secondary' ?>">
|
|
||||||
<?= ($fichierimport['etape3']=='1') ? _("Validée") : _("En attente") ?>
|
|
||||||
</span>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<!-- Étape 4 -->
|
|
||||||
<div class="col-md-3">
|
|
||||||
<div class="card h-100 border-secondary">
|
|
||||||
<div class="card-body">
|
|
||||||
<h6 class="fw-bold">4️⃣ <?= _("Traiter Importations") ?></h6>
|
|
||||||
<button type="button" class="btn btn-primary w-100 mt-2" onclick="traiter_lignes_importees();">
|
|
||||||
<?= _("Lancer") ?>
|
|
||||||
</button>
|
|
||||||
<span class="badge mt-2 bg-secondary"><?= _("En attente") ?></span>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
</div>
|
</div>
|
||||||
</div>
|
|
||||||
|
<?php if($fichierimport['nomOrigine'] > ""): ?>
|
||||||
|
<div class="alert alert-info d-flex align-items-center shadow-sm" role="alert">
|
||||||
|
<i class="fas fa-file-excel fa-2x me-3"></i>
|
||||||
|
<div>
|
||||||
|
<div class="small text-muted"><?= _("Fichier actuellement chargé :") ?></div>
|
||||||
|
<strong class="text-uppercase"><?= $this->nettoyer($fichierimport['nomOrigine']) ?></strong>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<?php endif; ?>
|
||||||
|
|
||||||
|
<div id="div_form_upload" class="card shadow-sm border-0 mb-4 animate__animated animate__fadeInUp" style="display: none">
|
||||||
|
<div class="card-body bg-light">
|
||||||
|
<form enctype="multipart/form-data" action="Importassure" method="post">
|
||||||
|
<div class="row align-items-end g-3">
|
||||||
|
<div class="col-md-8">
|
||||||
|
<label class="form-label fw-bold small text-muted"><?= _("Sélectionnez le document Excel (.xlsx, .xls)") ?></label>
|
||||||
|
<input class="form-control" name="fichier_upload" type="file" id="fichier_upload" required />
|
||||||
|
</div>
|
||||||
|
<div class="col-md-4">
|
||||||
|
<button type="submit" name="submit" class="btn btn-primary w-100">
|
||||||
|
<i class="fas fa-cloud-upload-alt me-2"></i><?= _("Envoyer sur le serveur") ?>
|
||||||
|
</button>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</form>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<?php if((isset($msgErreur)) && ($msgErreur > " ")) : ?>
|
||||||
|
<div class="alert alert-warning border-0 shadow-sm text-center fw-bold fs-5 py-3">
|
||||||
|
<i class="fas fa-exclamation-circle me-2"></i> <?= $msgErreur ?>
|
||||||
|
</div>
|
||||||
|
<?php endif; ?>
|
||||||
|
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
<input type="hidden" id="cheminFichier" name="cheminFichier" value="<?= $this->nettoyer($fichierimport['cheminFichier']) ?>">
|
||||||
|
<div id="div_exporter_liste_assures" class="d-none"></div>
|
||||||
|
|
||||||
|
<style>
|
||||||
|
.hover-elevate:hover { transform: translateY(-3px); transition: 0.3s; }
|
||||||
|
.bg-success-subtle { background-color: #d1e7dd !important; }
|
||||||
|
.badge { display: inline-flex; align-items: center; justify-content: center; }
|
||||||
|
</style>
|
||||||
Loading…
Reference in New Issue
Block a user