Vue d'ensemble
La page /app/reglements liste les règlements mais ne propose pas d'export. Ce module ajoute un bouton 📥 Export CSV qui déclenche un téléchargement direct depuis l'API.
L'export respecte les filtres actifs de la page : période, mode de paiement. Encodage UTF-8 avec BOM pour compatibilité Excel directe (accents corrects sans manipulation).
Rapprochement bancaire
Export des règlements avec références, montants et modes de paiement pour croiser avec les relevés bancaires.
Rapports comptables
Filtrage par période (mois, trimestre, exercice) pour alimenter le comptable ou un outil externe.
Lien factures
Chaque ligne inclut le numéro et le montant de la facture associée, ainsi que le nom et l'email du client.
Route API
| Méthode | Route | Description |
|---|---|---|
| GET | /reglements/export-csv | Retourne un fichier CSV — Content-Disposition: attachment |
Paramètres de filtrage
| Paramètre | Type | Description |
|---|---|---|
| ?date_from= | YYYY-MM-DD | Date règlement ≥ |
| ?date_to= | YYYY-MM-DD | Date règlement ≤ |
| ?mode= | string | ESPECES · CB · VIREMENT · CHEQUE · PRELEVEMENT |
La route doit être déclarée avant la route générique
/reglements/:id dans custom-routes.ts pour éviter que "export-csv" soit interprété comme un ID.Format CSV produit
Exemple de sortieCSV
ID,Date,Montant TTC,Mode de paiement,Référence,N° Facture,Date Facture,Total Facture TTC,Client,Email,Téléphone,Notes
228,07/04/2026,150.00,CB,TXN-001,FAC-2026-001,01/04/2026,150.00,Dujardin Jean,jean@example.com,0612345678,
229,05/04/2026,89.50,ESPECES,,FAC-2026-002,04/04/2026,89.50,Deneuve Catherine,...- 🔤Encodage UTF-8 avec BOM (
) — accents corrects dans Excel sans manipulation - 📅Dates au format français JJ/MM/AAAA
- 💰Montants avec 2 décimales, point comme séparateur décimal
- 📝Valeurs contenant une virgule ou des guillemets : encadrées de
"avec guillemets internes doublés
Bouton UI
Bouton 📥 Export CSV ajouté dans le PageHeader de /app/reglements/page.tsx, à côté du bouton "+ Nouveau Règlement". Il respecte les filtres actifs de la page.
Pattern d'implémentationTSX
const exportCSV = () => {
const params = new URLSearchParams();
if (dateFrom) params.set('date_from', dateFrom);
if (dateTo) params.set('date_to', dateTo);
if (modeFilter) params.set('mode', modeFilter);
const a = document.createElement('a');
a.href = `/api/reglements/export-csv?${params.toString()}`;
a.download = `reglements_${new Date().toISOString().split('T')[0]}.csv`;
document.body.appendChild(a);
a.click();
document.body.removeChild(a);
};Déploiement
- 1️⃣Patch
custom-routes.ts— ajouter route/reglements/export-csvavant/reglements/:id - 2️⃣Rebuild API + restart nginx
- 3️⃣Patch
src/app/app/reglements/page.tsx— ajouter fonctionexportCSV()+ bouton dans PageHeader - 4️⃣Rebuild frontend
- 5️⃣Test : cliquer Export CSV → vérifier téléchargement + ouvrir dans Excel → accents OK