document.addEventListener("DOMContentLoaded", () => { // Éléments du DOM const invoicesList = document.getElementById("invoicesList"); const statusFilter = document.getElementById("statusFilter"); const dateFrom = document.getElementById("dateFrom"); const dateTo = document.getElementById("dateTo"); const applyFilters = document.getElementById("applyFilters"); const modal = document.getElementById("invoiceModal"); const modalTitle = document.getElementById("modalTitle"); const modalContent = document.getElementById("modalContent"); const closeModal = document.getElementById("closeModal"); // Charger les factures au démarrage loadInvoices(); // Gestionnaire d'événements pour les filtres applyFilters.addEventListener("click", () => { loadInvoices({ status: statusFilter.value, date_from: dateFrom.value, date_to: dateTo.value, }); }); // Gestionnaire d'événements pour fermer le modal closeModal.addEventListener("click", () => { modal.classList.add("hidden"); }); // Fonction pour charger les factures async function loadInvoices(filters = {}) { try { const response = await fetch( "/api/invoices?" + new URLSearchParams(filters) ); const data = await response.json(); // Mettre à jour les statistiques updateStatistics(data.statistics); // Mettre à jour la liste des factures displayInvoices(data.invoices); } catch (error) { console.error("Erreur lors du chargement des factures:", error); showMessage("Erreur lors du chargement des factures", "error"); } } // Fonction pour mettre à jour les statistiques function updateStatistics(stats) { document.getElementById("totalInvoices").textContent = stats.total_invoices; document.getElementById( "totalAmount" ).textContent = `${stats.total_amount.toFixed(2)} €`; document.getElementById( "totalPaid" ).textContent = `${stats.total_paid.toFixed(2)} €`; document.getElementById( "totalOverdue" ).textContent = `${stats.total_overdue.toFixed(2)} €`; } // Fonction pour afficher les factures function displayInvoices(invoices) { invoicesList.innerHTML = ""; invoices.forEach((invoice) => { const row = document.createElement("tr"); row.innerHTML = `
Client: ${invoice.client_name}
Date: ${new Date( invoice.issue_date ).toLocaleDateString()}
Montant: ${invoice.amount} ${ invoice.currency }
Statut: ${getStatusText( invoice.status )}
Adresse: ${invoice.address}
${invoice.postal_code} ${invoice.town}
${invoice.country}