This commit is contained in:
KONE SOREL 2026-04-08 10:31:09 +00:00
parent 2250450de1
commit 7fb3ee332a
3 changed files with 297 additions and 293 deletions

View File

@ -62448,146 +62448,147 @@ function intit_saisie_garantiebareme()
// 23-02-20233
function actualiser_bareme_garantie_lienparente()
{
codeGarantie = $("#codeGarantie").val();
idBaremePriseEnCharge = $("#idBaremePriseEnCharge").val();
donnees = 'codeGarantie='+codeGarantie;
donnees += '&idBaremePriseEnCharge='+idBaremePriseEnCharge;
$.ajax({
url: $("#racineWeb").val()+"Ajaxinsererbaremegarantielienparente/",
type : 'post',
data: donnees,
error: function(errorData){
//alert("Erreur : "+errorData);
},
success: function(data) {
//alert("Success : "+data);
$('#div_garanties_bareme_lienparente').html(data);
},
complete: function() {
}
});
/**
* Actualise la liste de l'historique des liens de parenté pour la garantie sélectionnée
*/
function actualiser_bareme_garantie_lienparente() {
// 1. Récupération des paramètres
const racineWeb = $("#racineWeb").val();
const codeLangue = $("#codeLangue").val();
const $conteneurHistorique = $('#div_garanties_bareme_lienparente');
const donnees = {
codeGarantie: $("#codeGarantie").val(),
idBaremePriseEnCharge: $("#idBaremePriseEnCharge").val()
};
// 2. Feedback visuel avant l'appel (SaaS UX)
$conteneurHistorique.html(`
<div class="text-center py-4">
<div class="spinner-border spinner-border-sm text-primary" role="status"></div>
<span class="ms-2 small text-muted text-uppercase fw-bold">
${(codeLangue === "en_US") ? "Updating history..." : "Mise à jour de l'historique..."}
</span>
</div>
`);
// 3. Appel AJAX
$.ajax({
url: racineWeb + "Ajaxinsererbaremegarantielienparente/",
type: 'post',
data: donnees,
success: function(data) {
// Injection du tableau HTML retourné par le contrôleur
$conteneurHistorique.hide().html(data).fadeIn(300);
},
error: function(xhr, status, error) {
$conteneurHistorique.html(`
<div class="alert alert-warning border-0 small">
<i class="fas fa-exclamation-triangle me-2"></i>
${(codeLangue === "en_US") ? "Unable to refresh history." : "Impossible d'actualiser l'historique."}
</div>
`);
}
});
}
function inserer_bareme_garantie_lienparente()
{
codeGarantie = $("#codeGarantie").val();
idBaremePriseEnCharge = $("#idBaremePriseEnCharge").val();
dateEffetGarantieLienParente = $("#dateEffetGarantieLienParente").val();
codeLienParente = $("#codeLienParente").val();
forfaitPlafondGarantieLienParente = $("#forfaitPlafondGarantieLienParente").val();
codePeriodicitePlafondGarantieLienParente = $("#codePeriodicitePlafondGarantieLienParente").val();
nbreTransactionGarantieLienParente = $("#nbreTransactionGarantieLienParente").val();
codePeriodiciteGarantieLienParente = $("#codePeriodiciteGarantieLienParente").val();
//codeObservationFamilleActeLienParente = $("#codeObservationFamilleActeLienParente").val();
codeTypeRemboursementLienParente = $("#codeTypeRemboursementLienParente").val();
delaiCarenceFamilleActeLienParente = $("#delaiCarenceFamilleActeLienParente").val();
ticketModerateurFamilleActeLienParente = $("#ticketModerateurFamilleActeLienParente").val();
forfaitTmGarantieLienParente = $("#forfaitTmGarantieLienParente").val();
ageMinimumFamilleActeLienParente = $("#ageMinimumFamilleActeLienParente").val();
ageMaximumFamilleActeLienParente = $("#ageMaximumFamilleActeLienParente").val();
actifFamilleActeLienParente = $("#actifFamilleActeLienParente").val();
forfaitPlafondGarantieLienParente = forfaitPlafondGarantieLienParente.replace(/ /g,"");
forfaitTmGarantieLienParente = forfaitTmGarantieLienParente.replace(/ /g,"");
if(dateEffetGarantieLienParente <= " "){
v_msg="Veuillez entrer une date d'effet!";
v_msgEng="Please enter an effective date!";
alert_ebene(v_msg, v_msgEng);
/**
* Insertion d'une règle spécifique par Lien de Parenté
*/
function inserer_bareme_garantie_lienparente() {
// 1. Récupération des constantes et éléments UI
const racineWeb = $("#racineWeb").val();
const codeLangue = $("#codeLangue").val();
const $divHistorique = $("#div_garanties_bareme_lienparente");
$("#dateEffetGarantieLienParente").focus();
return;
}
if(codeLienParente <= " "){
v_msg="Veuillez entrer le lien de parenté!";
v_msgEng="Please enter the relationship!";
alert_ebene(v_msg, v_msgEng);
// 2. Collecte et nettoyage des données
const donnees = {
codeGarantie: $("#codeGarantie").val(),
idBaremePriseEnCharge: $("#idBaremePriseEnCharge").val(),
dateEffetGarantieLienParente: $("#dateEffetGarantieLienParente").val(),
codeLienParente: $("#codeLienParente").val(),
// Plafonds (Nettoyage des espaces pour les montants)
forfaitPlafondGarantieLienParente: $("#forfaitPlafondGarantieLienParente").val().replace(/\s/g, ""),
codePeriodicitePlafondGarantieLienParente: $("#codePeriodicitePlafondGarantieLienParente").val(),
nbreTransactionGarantieLienParente: $("#nbreTransactionGarantieLienParente").val(),
codePeriodiciteGarantieLienParente: $("#codePeriodiciteGarantieLienParente").val(),
// Remboursement & Calculs
codeTypeRemboursementLienParente: $("#codeTypeRemboursementLienParente").val(),
delaiCarenceFamilleActeLienParente: $("#delaiCarenceFamilleActeLienParente").val(),
ticketModerateurFamilleActeLienParente: $("#ticketModerateurFamilleActeLienParente").val(),
forfaitTmGarantieLienParente: $("#forfaitTmGarantieLienParente").val().replace(/\s/g, ""),
// Éligibilité
ageMinimumFamilleActeLienParente: $("#ageMinimumFamilleActeLienParente").val(),
ageMaximumFamilleActeLienParente: $("#ageMaximumFamilleActeLienParente").val(),
actifFamilleActeLienParente: $("#actifFamilleActeLienParente").val()
};
$("#codeLienParente").focus();
return;
}
if(actifFamilleActeLienParente <= " "){
v_msg="Veuillez indiquer le statut de cet barème!";
v_msgEng="Please indicate the status of this scale!";
alert_ebene(v_msg, v_msgEng);
// 3. Validations de sécurité avec alertes bilingues
if (!donnees.dateEffetGarantieLienParente || donnees.dateEffetGarantieLienParente.trim() === "") {
alert_ebene("Veuillez entrer une date d'effet !", "Please enter an effective date!");
$("#dateEffetGarantieLienParente").focus();
return;
}
$("#actifFamilleActeLienParente").focus();
return;
}
$("#div_garanties_bareme_lienparente").html('<div style="padding-top:80px; text-align:center; font-size:14px; color: #0088cf; "><span><i class="fa fa-spinner fa-spin fa-5x" >' + '</span></div>');
donnees = 'codeGarantie='+codeGarantie;
donnees += '&idBaremePriseEnCharge='+idBaremePriseEnCharge;
donnees += '&dateEffetGarantieLienParente='+dateEffetGarantieLienParente;
donnees += '&codeLienParente='+codeLienParente;
donnees += '&forfaitPlafondGarantieLienParente='+forfaitPlafondGarantieLienParente;
donnees += '&codePeriodicitePlafondGarantieLienParente='+codePeriodicitePlafondGarantieLienParente;
donnees += '&nbreTransactionGarantieLienParente='+nbreTransactionGarantieLienParente;
donnees += '&codePeriodiciteGarantieLienParente='+codePeriodiciteGarantieLienParente;
//donnees += '&codeObservationFamilleActeLienParente='+codeObservationFamilleActeLienParente;
donnees += '&codeTypeRemboursementLienParente='+codeTypeRemboursementLienParente;
donnees += '&delaiCarenceFamilleActeLienParente='+delaiCarenceFamilleActeLienParente;
donnees += '&ticketModerateurFamilleActeLienParente='+ticketModerateurFamilleActeLienParente;
donnees += '&ageMinimumFamilleActeLienParente='+ageMinimumFamilleActeLienParente;
donnees += '&ageMaximumFamilleActeLienParente='+ageMaximumFamilleActeLienParente;
donnees += '&actifFamilleActeLienParente='+actifFamilleActeLienParente;
donnees += '&forfaitTmGarantieLienParente='+forfaitTmGarantieLienParente;
$.ajax({
url: $("#racineWeb").val()+"Ajaxinsererbaremegarantielienparente/ajouter/",
type : 'post',
data: donnees,
error: function(errorData){
//alert("Erreur : "+errorData);
},
success: function(data) {
//alert("Success : "+data);
intit_saisie_garantiebareme_lienparente();
actualiser_bareme_garantie_lienparente();
},
complete: function() {
afficheNombreLigneBareme('garantiesbaremepriseenchargelienparente');
}
});
if (!donnees.codeLienParente || donnees.codeLienParente.trim() === "") {
alert_ebene("Veuillez choisir le lien de parenté !", "Please select the relationship!");
$("#codeLienParente").focus();
return;
}
if (!donnees.actifFamilleActeLienParente || donnees.actifFamilleActeLienParente.trim() === "") {
alert_ebene("Veuillez indiquer le statut !", "Please indicate the status!");
$("#actifFamilleActeLienParente").focus();
return;
}
// 4. Feedback visuel (Loader moderne)
const loadingMsg = (codeLangue === "en_US") ? "Saving relationship rule..." : "Enregistrement de la règle parenté...";
$divHistorique.html(`
<div class="d-flex flex-column align-items-center justify-content-center p-5">
<div class="spinner-border text-primary" role="status" style="width: 3rem; height: 3rem;"></div>
<div class="mt-3 text-primary fw-bold text-uppercase small animate__animated animate__pulse animate__infinite">
${loadingMsg}
</div>
</div>
`);
// 5. Exécution AJAX
$.ajax({
url: racineWeb + "Ajaxinsererbaremegarantielienparente/ajouter/",
type: 'post',
data: donnees,
success: function(response) {
// Réinitialisation du formulaire spécifique
if (typeof intit_saisie_garantiebareme_lienparente === 'function') {
intit_saisie_garantiebareme_lienparente();
}
// Rafraîchissement de la liste sous le formulaire
if (typeof actualiser_bareme_garantie_lienparente === 'function') {
actualiser_bareme_garantie_lienparente();
}
},
error: function(xhr) {
$divHistorique.html(`
<div class="alert alert-danger shadow-sm border-0 small">
<i class="fas fa-exclamation-circle me-2"></i>
${(codeLangue === "en_US") ? "Error during save process." : "Erreur lors de l'enregistrement."}
</div>
`);
},
complete: function() {
// Mise à jour du badge de comptage global
if (typeof afficheNombreLigneBareme === 'function') {
afficheNombreLigneBareme('garantiesbaremepriseenchargelienparente');
}
}
});
}
function intit_saisie_garantiebareme_lienparente()
{
$("#dateEffetGarantieLienParente").val("");
@ -62997,74 +62998,73 @@ function controleDateEffetGarantieBareme(){
//24-02-2023
function validiteDateEffetGarantieLienParente(){
var codeGarantie = $("#codeGarantie").val();
var idBaremePriseEnCharge = $("#idBaremePriseEnCharge").val();
var dateEffetGarantieLienParente = $("#dateEffetGarantieLienParente").val();
var codeLienParente = $("#codeLienParente").val();
var datejour = $("#datejour_C").val();
var str = dateEffetGarantieLienParente.split('/');
var effet = str[2]+'-'+str[1]+'-'+str[0];
donnees = 'codeGarantie='+codeGarantie;
donnees += '&idBaremePriseEnCharge='+idBaremePriseEnCharge;
donnees += '&codeLienParente='+codeLienParente;
//alert(donnees);
//return;
$.ajax({
url: $("#racineWeb").val()+"Ajaxinsererbaremegarantielienparente/controle/",
type : 'post',
data: donnees,
error: function(errorData){
//alert("Erreur : "+errorData);
},
success: function(data) {
//alert("Success : "+data);
$('#div_maxdateeffetGarantieLienParente').html(data);
var tdj = new Date(datejour);
var tde = new Date(effet);
maxDateEffetGarantieLienParente = $("#maxDateEffetGarantieLienParente").val();
dte=Math.round(Date.parse(tde)/(1000*3600*24));
dtj=Math.round(Date.parse(tdj)/(1000*3600*24));
if((dte < dtj) && (maxDateEffetGarantieLienParente!=undefined || maxDateEffetGarantieLienParente!='')){
var tdm = new Date(maxDateEffetGarantieLienParente);
dtm = Math.round(Date.parse(tdm)/(1000*3600*24));
if(dte < dtm){
v_msg="Date d'effet invalide!";
v_msgEng="Invalid effective date!";
alert_ebene(v_msg, v_msgEng);
$("#dateEffetGarantieLienParente").val('');
$("#dateEffetGarantieLienParente").focus();
return;
}else{
inserer_bareme_garantie_lienparente();
}
}else{
inserer_bareme_garantie_lienparente();
}
},
complete: function() {
}
});
/**
* Contrôle la validité de la date d'effet avant l'insertion par Lien de Parenté
*/
function validiteDateEffetGarantieLienParente() {
// 1. Récupération des données
const racineWeb = $("#racineWeb").val();
const dateEffetStr = $("#dateEffetGarantieLienParente").val();
const dateJourStr = $("#datejour_C").val(); // Format YYYY-MM-DD attendu
const donnees = {
codeGarantie: $("#codeGarantie").val(),
idBaremePriseEnCharge: $("#idBaremePriseEnCharge").val(),
codeLienParente: $("#codeLienParente").val()
};
// Validation immédiate si vide
if (!dateEffetStr || dateEffetStr.trim() === "") {
alert_ebene("Veuillez entrer une date d'effet !", "Please enter an effective date !");
$("#dateEffetGarantieLienParente").focus();
return;
}
// Conversion de la date saisie (DD/MM/YYYY) en objet Date
const parts = dateEffetStr.split('/');
const dateEffetSaisie = new Date(parts[2], parts[1] - 1, parts[0]);
const dateJour = new Date(dateJourStr);
// 2. Appel AJAX de contrôle (Récupération de la dernière date en base)
$.ajax({
url: racineWeb + "Ajaxinsererbaremegarantielienparente/controle/",
type: 'post',
data: donnees,
success: function(data) {
// Injection du champ hidden maxDateEffetGarantieLienParente retourné par le serveur
$('#div_maxdateeffetGarantieLienParente').html(data);
const maxDateBaseStr = $("#maxDateEffetGarantieLienParente").val();
// Calcul des timestamps en jours (pour comparaison simplifiée)
const dte = Math.round(dateEffetSaisie.getTime() / (1000 * 3600 * 24));
const dtj = Math.round(dateJour.getTime() / (1000 * 3600 * 24));
// 3. Logique de validation chronologique
if (dte < dtj && maxDateBaseStr) {
const maxDateBase = new Date(maxDateBaseStr);
const dtm = Math.round(maxDateBase.getTime() / (1000 * 3600 * 24));
if (dte < dtm) {
// Échec : La date est antérieure à la dernière date enregistrée
alert_ebene(
"Date d'effet invalide ! Elle ne peut être antérieure à la dernière modification.",
"Invalid effective date ! It cannot be earlier than the last modification."
);
$("#dateEffetGarantieLienParente").val('').focus();
return;
}
}
// Si tous les contrôles passent : Appel de la fonction d'insertion
if (typeof inserer_bareme_garantie_lienparente === 'function') {
inserer_bareme_garantie_lienparente();
}
},
error: function() {
alert_ebene("Erreur lors du contrôle de validité.", "Error during validity check.");
}
});
}

View File

@ -353,7 +353,7 @@
</div>
</div>
<div id="div_garanties_bareme_lienparente" class="mt-4">
<div id="div_garanties_bareme_lienparente" class="mt-2">
</div>
</div>
</div>

View File

@ -1,95 +1,99 @@
<?php
$adminProd = $_SESSION['adminProd'];
<?php
$adminProd = $_SESSION['adminProd'];
?>
<?php if(count($garantielienparente) > "0"): ?>
<table class="table table-striped table-bordered table-hover table-condensed table-responsive " style="font-size:9pt; " >
<thead>
<!--
<tr >
<th colspan="14" style='text-align:center; font-size:10pt; font-weight: bold; border: 2px solid #939597;'> <?= _("LIGNES PARAMETREES SUR GARANTIE LIEN PARENTE") ?> </th>
</tr>
-->
<tr>
<th rowspan="2" style='text-align:center; border: 2px solid #939597;'> <?= _("Effet") ?> </th>
<th rowspan="2" style='text-align:center; border: 2px solid #939597;'> <?= _("Lien Parenté") ?> </th>
<th rowspan="2" style='text-align:center; border: 2px solid #939597;'> <?= _("Plafond") ?> </th>
<th rowspan="2" style='text-align:center; border: 2px solid #939597;'> <?= _("Périodicité") ?> </th>
<th rowspan="2" style='text-align:center; border: 2px solid #939597;'> <?= _("Nb Transac") ?> </th>
<th rowspan="2" style='text-align:center; border: 2px solid #939597;'> <?= _("Périodicité") ?> </th>
<th rowspan="2" style='text-align:center; border: 2px solid #939597;'> <?= _("Remboursement") ?> </th>
<th rowspan="2" style='text-align:center; border: 2px solid #939597;'> <?= _("Carence") ?> </th>
<th colspan="2" style='text-align:center; border: 2px solid #939597;'> <?= _("TM") ?> </th>
<th colspan="2" style='text-align:center; border: 2px solid #939597;'> <?= _("Age") ?> </th>
<th rowspan="2" style='text-align:center; border: 2px solid #939597;'> <?= _("Actif") ?> </th>
<th rowspan="2" style='text-align:center; border: 2px solid #fff;'> <?= _("Suppr") ?> </th>
</tr>
<tr>
<th style='text-align:center; border: 2px solid #939597;'> <?= _("Taux") ?> </th>
<th style='text-align:center; border: 2px solid #939597;'> <?= _("Forfait") ?> </th>
<th style='text-align:center; border: 2px solid #939597;'> <?= _("Min") ?> </th>
<th style='text-align:center; border: 2px solid #939597;'> <?= _("Max") ?> </th>
</tr>
</thead>
<tbody>
<tbody>
<?php foreach ($garantielienparente as $v):
$idGarantie = $v['id'];
$supprime = $v['supprime'];
if($this->nettoyer($v['codeObservation'])=="VD"){
$codeObservation = "";
}else{
$codeObservation = $this->nettoyer($v['codeObservation']);
}
if($this->nettoyer($v['actif'])=="1"){
$actif = "Oui";
}else{
$actif = "Non";
}
?>
<?php if($supprime=='1'): ?>
<tr valign="top" style="text-decoration: line-through red;">
<?php else: ?>
<tr valign="top">
<?php endif; ?>
<td style='text-align:center; border: 2px solid #939597;'><?= datefr($this->nettoyer($v['dateEffet'])); ?></td>
<td style='text-align:center; border: 2px solid #939597;'><?= $this->nettoyer($v['codeLienParente']);?></td>
<td style='text-align:center; border: 2px solid #939597;'><?= format_N($this->nettoyer($v['forfaitPlafond']));?></td>
<td style='text-align:center; border: 2px solid #939597;'><?= $this->nettoyer($v['codePeriodicitePlafond']);?></td>
<td style='text-align:center; border: 2px solid #939597;'><?= $this->nettoyer($v['nbreTransaction']);?></td>
<td style='text-align:center; border: 2px solid #939597;'><?= $this->nettoyer($v['codePeriodicite']); ?></td>
<td style='text-align:center; border: 2px solid #939597;'> <?= $this->nettoyer($v['codeTypeRemboursement']); ?></td>
<td style='text-align:center; border: 2px solid #939597;'><?= $this->nettoyer($v['delaiCarenceFamilleActe']);?></td>
<td style='text-align:center; border: 2px solid #939597;'><?= $this->nettoyer($v['ticketModerateur']);?></td>
<td style='text-align:center; border: 2px solid #939597;'><?= format_N($this->nettoyer($v['forfaitTm']));?></td>
<td style='text-align:center; border: 2px solid #939597;'><?= $this->nettoyer($v['ageMinimum']);?></td>
<td style='text-align:center; border: 2px solid #939597;'><?= $this->nettoyer($v['ageMaximum']);?></td>
<td style='text-align:center; border: 2px solid #939597;'><?= $actif;?></td>
<?php if($supprime=='0'): ?>
<td style='text-align:center; border: 2px solid #939597;'>
<button type="button" class="form-control btn btn-danger" onClick="javascript:supprimer_baremegarantielienparente('<?= $adminProd?>',<?= $idGarantie ?>);">
<i class="fa fa-times" aria-hidden="true"></i>
</button>
</td>
<?php else: ?>
<td style='text-align:center; border: 2px solid #939597;'> </td>
<?php endif; ?>
</tr>
<?php endforeach; ?>
</tbody>
</table>
<?php else: ?>
<div class="col-12 alert alert-danger text-center">
<?= _("Aucune ligne insérée dans BAREME GARANTIE LIEN PARENTE") ?>
<?php if(count($garantielienparente) > 0): ?>
<div class="table-responsive shadow-sm rounded border">
<table class="table table-sm table-hover align-middle mb-0" style="font-size: 0.8rem;">
<thead class="table-light">
<tr class="text-center text-uppercase small fw-bold">
<th rowspan="2" class="border-end"><?= _("Effet") ?></th>
<th rowspan="2" class="border-end"><?= _("Lien Parenté") ?></th>
<th colspan="4" class="bg-primary bg-opacity-10 text-primary border-bottom border-primary"><?= _("Plafonds & Quotas") ?></th>
<th rowspan="2" class="border-end"><?= _("Remboursement") ?></th>
<th rowspan="2"><?= _("Carence") ?></th>
<th colspan="2" class="bg-secondary bg-opacity-10 border-bottom border-secondary"><?= _("TM / Forfait") ?></th>
<th colspan="2" class="bg-light border-bottom"><?= _("Âges") ?></th>
<th rowspan="2"><?= _("Actif") ?></th>
<th rowspan="2"><?= _("Action") ?></th>
</tr>
<tr class="text-center small bg-light-subtle">
<th class="border-start"><?= _("Montant") ?></th>
<th><?= _("Pér. M") ?></th>
<th><?= _("Nb Trans") ?></th>
<th class="border-end"><?= _("Pér. T") ?></th>
<th class="border-start"><?= _("Taux %") ?></th>
<th class="border-end"><?= _("Montant") ?></th>
<th class="border-start"><?= _("Min") ?></th>
<th class="border-end"><?= _("Max") ?></th>
</tr>
</thead>
<tbody>
<?php foreach ($garantielienparente as $v):
$idGarantie = $v['id'];
$supprime = $v['supprime'];
$isActif = ($this->nettoyer($v['actif']) == "1");
?>
<tr class="text-center <?= ($supprime == '1') ? 'table-danger opacity-50' : ''; ?>">
<td class="fw-bold text-nowrap"><?= datefr($this->nettoyer($v['dateEffet'])); ?></td>
<td>
<span class="badge bg-info bg-opacity-10 text-info border border-info-subtle px-2">
<?= $this->nettoyer($v['codeLienParente']);?>
</span>
</td>
<td class="fw-bold"><?= format_N($this->nettoyer($v['forfaitPlafond']));?></td>
<td class="text-muted"><?= $this->nettoyer($v['codePeriodicitePlafond']);?></td>
<td><?= $this->nettoyer($v['nbreTransaction']);?></td>
<td class="text-muted border-end"><?= $this->nettoyer($v['codePeriodicite']); ?></td>
<td class="fw-bold text-primary"><?= $this->nettoyer($v['codeTypeRemboursement']); ?></td>
<td><?= $this->nettoyer($v['delaiCarenceFamilleActe']);?> m</td>
<td class="fw-bold"><?= $this->nettoyer($v['ticketModerateur']);?> %</td>
<td class="border-end"><?= format_N($this->nettoyer($v['forfaitTm']));?></td>
<td><?= $this->nettoyer($v['ageMinimum']);?></td>
<td class="border-end"><?= $this->nettoyer($v['ageMaximum']);?></td>
<td>
<?php if($isActif): ?>
<span class="text-success"><i class="fas fa-check-circle"></i></span>
<?php else: ?>
<span class="text-muted"><i class="fas fa-times-circle"></i></span>
<?php endif; ?>
</td>
<td class="px-2">
<?php if($supprime == '0'): ?>
<button type="button" class="btn btn-link text-danger p-0"
onclick="javascript:supprimer_baremegarantielienparente('<?= $adminProd?>', <?= $idGarantie ?>);"
title="<?= _("Supprimer") ?>">
<i class="fas fa-trash-alt"></i>
</button>
<?php else: ?>
<span class="badge bg-secondary text-uppercase" style="font-size: 0.6rem;"><?= _("Supprimé") ?></span>
<?php endif; ?>
</td>
</tr>
<?php endforeach; ?>
</tbody>
</table>
</div>
<?php endif; ?>
<?php else: ?>
<div class="alert alert-warning border-dashed text-center p-4">
<i class="fas fa-info-circle fa-2x mb-2 opacity-50"></i>
<p class="mb-0 fw-bold text-uppercase small"><?= _("Aucune ligne d'historique (Lien de Parenté sur Garantie)") ?></p>
</div>
<?php endif; ?>
<style>
.border-dashed { border: 2px dashed #dee2e6 !important; background: none; }
.table-hover tbody tr:hover { background-color: rgba(0, 136, 207, 0.05); }
.opacity-50 { text-decoration: line-through rgba(255, 0, 0, 0.4); }
</style>