445 lines
19 KiB
HTML

<!DOCTYPE html>
<html lang="fr">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Suivi des Paiements</title>
<link rel="stylesheet" href="https://www.w3schools.com/w3css/4/w3.css">
<link rel="icon" href="../../media/img/logoIcon.ico" type="image/x-icon" />
<script src="https://cdn.jsdelivr.net/npm/chart.js"></script>
<link rel="stylesheet" href="../../css/PROF/paiements.css">
</head>
<body>
<!-- Header -->
<div class="header w3-bar w3-card-4 w3-dark-blue">
<!-- Logo pour retourner à l'accueil -->
<div class="logo-container w3-bar-item">
<img src="../../media/img/logoWhite.png" alt="Logo Accueil" class="w3-image" style="width:150px; height:40px;">
</div>
<!-- Bouton burger pour petit écran -->
<a href="javascript:void(0)" class="w3-bar-item w3-button w3-hide-large w3-right w3-padding-16" onclick="toggleMenu()"></a>
<!-- Catégories dans le header -->
<div id="menu" class="categories w3-hide-small w3-hide-medium w3-bar-item">
<a href="./enseignant_permanent.html" class="w3-bar-item w3-button">Accueil</a>
<a href="./mes-heures.html" class="w3-bar-item w3-button">Heures</a>
<a href="./paiements.html" class="w3-bar-item w3-button">Paiements</a>
<a href="./mes-informations.html" class="w3-bar-item w3-button">Mes informations et documents</a>
</div>
<!-- Section utilisateur avec déconnexion -->
<div class="user-section w3-right w3-hide-small w3-hide-medium">
<div class="user-name">
Denis MONNERAT
</div>
<div class="logout-container w3-bar-item">
<a href="./notifications.html" title="Notifications">
<img src="../../media/img/notifs.png" alt="Logo notification" style="width:24px; height:24px;">
</a>
<a href="./settings.html" title="Paramètres">
<img src="../../media/img/settings.png" alt="Logo paramètres" style="width:24px; height:24px;">
</a>
<a href="../../index.html" title="Se déconnecter">
<img src="../../media/img/LogOutWhite.png" alt="Logo Déconnexion" style="width:24px; height:24px;">
</a>
</div>
</div>
<!-- Menu mobile caché au départ -->
<div id="mobileMenu" class="w3-bar-block w3-hide w3-hide-large w3-dark-blue">
<a href="./enseignant_permanent.html" class="w3-bar-item w3-button">Accueil</a>
<a href="./mes-heures.html" class="w3-bar-item w3-button">Heures</a>
<a href="./paiements.html" class="w3-bar-item w3-button">Paiements</a>
<a href="./mes-informations.html" class="w3-bar-item w3-button">Mes informations et documents</a>
<!-- Section utilisateur pour mobile -->
<div class="w3-bar-item w3-border-top w3-margin-top">
<div class="user-name">Denis MONNERAT</div>
<a href="./notifications.html" title="Notifications">
<img src="../../media/img/notifs.png" alt="Logo notification" style="width:24px; height:24px;">
</a>
<a href="./settings.html" title="Paramètres">
<img src="../../media/img/settings.png" alt="Logo paramètres" style="width:24px; height:24px;">
</a>
<a href="../../index.html" title="Se déconnecter">
<img src="../../media/img/LogOutWhite.png" alt="Logo Déconnexion" style="width:24px; height:24px;">
</a>
</div>
</div>
</div>
<div class="dashboard-container">
<!-- Historique des paiements -->
<div class="section-header">
<h2>Historique des Paiements</h2>
</div>
<div class="card">
<div class="table-container">
<table>
<thead>
<tr>
<th data-sort="periode">Période</th>
<th data-sort="heuresPayees">Heures Payées</th>
<th data-sort="montantBrut">Montant Brut (€)</th>
<th data-sort="montantNet">Montant Net (€)</th>
<th data-sort="datePaiement">Date de Paiement</th>
<th data-sort="modePaiement">Mode de Paiement</th>
<th data-sort="compteBancaire">Compte Bancaire</th>
<th data-sort="statut">Statut</th>
<th>Bulletin de Paie</th>
</tr>
</thead>
<tbody>
<tr>
<td>Février 2024</td>
<td>35h</td>
<td>3500,00</td>
<td>2722,00</td>
<td>01/03/2024</td>
<td>Virement Bancaire</td>
<td>Compte XXXXXX1234</td>
<td class="status-valide">Validé</td>
<td><a href="https://ensap.gouv.fr" target="_blank" class="btn">Voir Bulletin</a></td>
</tr>
<tr>
<td>Mars 2024</td>
<td>35h</td>
<td>3500,00</td>
<td>2722,00</td>
<td>01/04/2024</td>
<td>Virement Bancaire</td>
<td>Compte XXXXXX1234</td>
<td class="status-valide">Validé</td>
<td><a href="https://ensap.gouv.fr" target="_blank" class="btn">Voir Bulletin</a></td>
</tr>
<tr>
<td>Avril 2024</td>
<td>35h</td>
<td>3500,00</td>
<td>2722,00</td>
<td>01/05/2024</td>
<td>Virement Bancaire</td>
<td>Compte XXXXXX1234</td>
<td class="status-valide">Validé</td>
<td><a href="https://ensap.gouv.fr" target="_blank" class="btn">Voir Bulletin</a></td>
</tr>
<tr>
<td>Mai 2024</td>
<td>35h</td>
<td>3500,00</td>
<td>2722,00</td>
<td>01/06/2024</td>
<td>Virement Bancaire</td>
<td>Compte XXXXXX1234</td>
<td class="status-valide">Validé</td>
<td><a href="https://ensap.gouv.fr" target="_blank" class="btn">Voir Bulletin</a></td>
</tr>
<tr>
<td>Juin 2024</td>
<td>35h</td>
<td>3500,00</td>
<td>2722,00</td>
<td>01/07/2024</td>
<td>Virement Bancaire</td>
<td>Compte XXXXXX1234</td>
<td class="status-valide">Validé</td>
<td><a href="https://ensap.gouv.fr" target="_blank" class="btn">Voir Bulletin</a></td>
</tr>
<tr>
<td>Septembre 2024</td>
<td>35h</td>
<td>3500,00</td>
<td>2722,00</td>
<td>01/10/2024</td>
<td>Virement Bancaire</td>
<td>Compte XXXXXX1234</td>
<td class="status-valide">Validé</td>
<td><a href="https://ensap.gouv.fr" target="_blank" class="btn">Voir Bulletin</a></td>
</tr>
<tr>
<td>Octobre 2024</td>
<td>35h</td>
<td>3500,00</td>
<td>2722,00</td>
<td>01/11/2024</td>
<td>Virement Bancaire</td>
<td>Compte XXXXXX1234</td>
<td class="status-attente">En attente</td>
<td><a href="https://ensap.gouv.fr" target="_blank" class="btn">Voir Bulletin</a></td>
</tr>
</tbody>
</table>
</div>
<p><strong>Prochain paiement prévu :</strong> Novembre 2024 (35h restantes)</p>
</div>
<!-- Graphique des paiements (brut) -->
<div class="section-header">
<h2>Évolution de vos Paiements</h2>
</div>
<div class="card">
<div class="chart-container">
<canvas id="paymentChart"></canvas>
</div>
</div>
<!-- Formulaire pour signaler un problème -->
<!-- Formulaire pour signaler un problème -->
<div class="section-header">
<h2>Signaler un problème de paye</h2>
</div>
<div class="card contact-form">
<h3>Formulaire de signalement</h3>
<form id="contactForm">
<label for="probleme">Sélectionnez un problème :</label>
<select id="probleme" required>
<option value="">-- Sélectionner un problème --</option>
<option value="noPayment">Je n'ai pas reçu de paiement</option>
<option value="wrongAmount">Le montant de mon salaire est inférieur à ce qui était prévu.</option>
<option value="duplicatePayment">J'ai reçu un paiement en double</option>
<option value="latePayment">Mon paiement est en retard</option>
<option value="unjustifiedWithholding">Il y a une retenue sur mon paiement que je ne comprends pas</option>
<option value="technicalIssue">J'ai des difficultés à accéder à mes bulletins de salaire en ligne</option>
</select>
<!-- Champs supplémentaires qui s'affichent selon le problème -->
<div id="detailsSupplementaires" style="display: none;">
<!-- Champ pour sélectionner le mois -->
<div id="moisEnQuestion" style="display:none;">
<label for="mois">Sélectionner le mois :</label>
<select id="mois">
<option value="">-- Sélectionner le mois --</option>
<option value="fevrier">Février 2024</option>
<option value="mars">Mars 2024</option>
<option value="avril">Avril 2024</option>
<option value="mai">Mai 2024</option>
<option value="juin">Juin 2024</option>
<option value="septembre">Septembre 2024</option>
<option value="octobre">Octobre 2024</option>
</select>
</div>
<!-- Champ pour indiquer le montant reçu -->
<div id="montantRecuSupplementaire" style="display:none;">
<label for="montantRecu">Montant reçu (€) :</label>
<input type="number" id="montantRecu" placeholder="Montant reçu" />
</div>
<!-- Champ pour indiquer le montant attendu -->
<div id="montantAttendu" style="display:none;">
<label for="montantAttenduInput">Montant attendu (€) :</label>
<input type="number" id="montantAttenduInput" placeholder="Montant attendu" />
</div>
</div>
<button type="submit">Envoyer</button>
</form>
</div>
</div>
<div class="footer">
<p>&copy; 2024 IUT de Fontainebleau. Tous droits réservés |
<a href="html/mentions_legales.html">Mentions légales</a>
</p>
</div>
<!-- Popup de confirmation -->
<div class="popup" id="popup">
<img src="https://img.icons8.com/ios-filled/50/155724/checkmark.png" alt="Coche">
<h4>Message envoyé</h4>
<p>Votre message a été transmis à la direction. Un email de confirmation vous a été envoyé.</p>
<button onclick="fermerPopup()">Fermer</button>
</div>
<!-- Script pour gérer le formulaire et le popup -->
<script>
document.getElementById('probleme').addEventListener('change', function() {
var detailsSupplementaires = document.getElementById('detailsSupplementaires');
var montantRecuSupplementaire = document.getElementById('montantRecuSupplementaire');
var moisEnQuestion = document.getElementById('moisEnQuestion'); // Champ pour sélectionner le mois
var montantAttendu = document.getElementById('montantAttendu'); // Champ pour indiquer le montant attendu
// Masquer tous les champs au départ
detailsSupplementaires.style.display = 'none';
montantRecuSupplementaire.style.display = 'none';
moisEnQuestion.style.display = 'none';
montantAttendu.style.display = 'none';
// Afficher les champs en fonction du problème sélectionné
switch (this.value) {
case 'noPayment':
detailsSupplementaires.style.display = 'block';
moisEnQuestion.style.display = 'block'; // Afficher le champ pour sélectionner le mois
break;
case 'wrongAmount':
detailsSupplementaires.style.display = 'block';
montantRecuSupplementaire.style.display = 'block'; // Afficher le montant
moisEnQuestion.style.display = 'block'; // Afficher le champ pour sélectionner le mois
break;
case 'duplicatePayment':
detailsSupplementaires.style.display = 'block';
moisEnQuestion.style.display = 'block'; // Afficher le champ pour sélectionner le mois
montantAttendu.style.display = 'block'; // Afficher le champ pour le montant attendu
break;
case 'latePayment':
detailsSupplementaires.style.display = 'block';
moisEnQuestion.style.display = 'block'; // Afficher le champ pour sélectionner le mois
break;
case 'unjustifiedWithholding':
detailsSupplementaires.style.display = 'block';
break;
case 'technicalIssue':
detailsSupplementaires.style.display = 'block';
break;
default:
// Aucune action si aucune valeur valide n'est sélectionnée
break;
}
});
document.getElementById('contactForm').addEventListener('submit', function(event) {
event.preventDefault();
// Afficher le popup de confirmation
document.getElementById('popup').style.display = 'block';
});
function fermerPopup() {
document.getElementById('popup').style.display = 'none';
// Réinitialiser le formulaire après soumission
document.getElementById('contactForm').reset();
document.getElementById('detailsSupplementaires').style.display = 'none';
}
// Configuration du graphique Chart.js
const ctx = document.getElementById('paymentChart').getContext('2d');
const paymentChart = new Chart(ctx, {
type: 'line',
data: {
labels: ['Février', 'Mars', 'Avril', 'Mai', 'Juin', 'Septembre', 'Octobre'],
datasets: [{
label: 'Montant Brut (€)',
data: [3500, 3500, 3500, 3500, 3500, 3500, 3500],
backgroundColor: 'rgba(204, 153, 0, 0.60)', // Jaune très sombre, pas transparent
borderColor: 'rgba(178, 128, 0, 1)', // Jaune plus foncé pour la bordure
fill: true,
tension: 0.3,
}]
},
options: {
responsive: true,
scales: {
y: {
beginAtZero: true
}
},
plugins: {
legend: {
display: true,
position: 'top',
}
}
}
});
document.querySelectorAll('th[data-sort]').forEach(function (header) {
header.addEventListener('click', function () {
const table = header.closest('table');
const tbody = table.querySelector('tbody');
const rowsArray = Array.from(tbody.querySelectorAll('tr'));
const index = Array.from(header.parentElement.children).indexOf(header);
let order = header.dataset.order || 1;
// Retirer les classes de tri des autres colonnes
document.querySelectorAll('th[data-sort]').forEach(function (th) {
th.classList.remove('ascending', 'descending');
});
// Appliquer la classe de tri
if (order == 1) {
header.classList.add('ascending');
header.dataset.order = -1; // Inverser l'ordre pour la prochaine fois
} else {
header.classList.add('descending');
header.dataset.order = 1; // Réinitialiser pour la prochaine fois
}
// Trier les lignes du tableau
rowsArray.sort(function (rowA, rowB) {
let cellA = rowA.children[index].innerText.trim();
let cellB = rowB.children[index].innerText.trim();
// Gérer les périodes (mois)
if (header.dataset.sort === 'periode') {
cellA = moisToNumero(cellA);
cellB = moisToNumero(cellB);
}
// Gérer les montants numériques avec des virgules
else if (!isNaN(cellA.replace(',', '.')) && !isNaN(cellB.replace(',', '.'))) {
return (parseFloat(cellA.replace(',', '.')) - parseFloat(cellB.replace(',', '.'))) * order;
}
// Gérer les dates
else if (isDate(cellA) && isDate(cellB)) {
return (new Date(cellA) - new Date(cellB)) * order;
}
// Gérer les textes (par défaut)
else {
return cellA.localeCompare(cellB) * order;
}
return (cellA - cellB) * order;
});
// Réorganiser les lignes dans le tableau
rowsArray.forEach(function (row) {
tbody.appendChild(row);
});
});
});
// Fonction pour convertir les mois en numéros pour faciliter le tri
function moisToNumero(mois) {
const moisIndex = {
"Janvier": 1,
"Février": 2,
"Mars": 3,
"Avril": 4,
"Mai": 5,
"Juin": 6,
"Juillet": 7,
"Août": 8,
"Septembre": 9,
"Octobre": 10,
"Novembre": 11,
"Décembre": 12
};
// Extraire le mois et l'année du texte (ex: "Février 2024")
const [moisNom, annee] = mois.split(' ');
return new Date(annee, moisIndex[moisNom] - 1); // Créer un objet Date
}
// Fonction pour vérifier si un texte est une date valide
function isDate(dateString) {
return !isNaN(Date.parse(dateString));
}
function toggleMenu() {
var x = document.getElementById("mobileMenu");
if (x.className.indexOf("w3-show") == -1) {
x.className += " w3-show";
} else {
x.className = x.className.replace(" w3-show", "");
}
}
</script>
</body>
</html>