445 lines
		
	
	
		
			19 KiB
		
	
	
	
		
			HTML
		
	
	
	
	
	
			
		
		
	
	
			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>© 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>
 |