> ## Documentation Index
> Fetch the complete documentation index at: https://help.agatabo.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Générateur d'Export de Rapports

> Exporter plusieurs rapports financiers par lot pour les réunions et audits

## Aperçu

Le **Générateur d'Export de Rapports** est une fonctionnalité de l'interface frontend qui vous permet de générer plusieurs rapports financiers à la fois avec des plages de dates cohérentes, ce qui facilite la création de dossiers complets pour les réunions du conseil, audits ou revues des parties prenantes.

<Note>
  **Autorisation requise** : `reports:read`

  Il s'agit d'une fonctionnalité pratique de l'interface qui appelle les points d'accès API de rapports individuels et combine les résultats pour l'export. Tous les rapports sous-jacents exigent l'autorisation `reports:read`.
</Note>

***

## Fonctionnement

Le Générateur d'Export de Rapports :

1. **Accepte les sélections** de l'utilisateur (rapports, plage de dates, format)
2. **Appelle les APIs de rapports individuelles** en parallèle :
   * `GET /reports/balance-sheet?asOfDate={date}`
   * `GET /reports/profit-loss?startDate={date}&endDate={date}`
   * `GET /reports/shares-report?asOfDate={date}`
   * `GET /reports/loans-outstanding?expectedDate={date}`
3. **Combine les résultats** dans le format demandé (PDF ou CSV)
4. **Télécharge** vers le navigateur de l'utilisateur

**Aucun point d'accès backend dédié** - cette fonctionnalité orchestre les APIs de rapports existantes.

***

## Rapports Disponibles

Vous pouvez exporter toute combinaison de ces rapports :

| Rapport                | Point d'Accès API            | Paramètre de Date                            |
| ---------------------- | ---------------------------- | -------------------------------------------- |
| **Bilan**              | `/reports/balance-sheet`     | `asOfDate` (date instantanée)                |
| **Compte de Résultat** | `/reports/profit-loss`       | `startDate` et `endDate` (période)           |
| **Rapport des Parts**  | `/reports/shares-report`     | `asOfDate` (date instantanée)                |
| **Prêts en Cours**     | `/reports/loans-outstanding` | `expectedDate` (date de calcul des arriérés) |

Voir la documentation de chaque rapport pour les détails API complets :

* [Bilan](/fr/tontines/reports/balance-sheet)
* [Compte de Résultat](/fr/tontines/reports/profit-and-loss)
* [Rapport des Parts](/fr/tontines/reports/shares-report)
* [Prêts en Cours](/fr/tontines/reports/loans-outstanding)

***

## Configuration de la Plage de Dates

**Comment les plages de dates correspondent aux paramètres de chaque rapport :**

| Rapport            | Date de Début              | Date de Fin                   |
| ------------------ | -------------------------- | ----------------------------- |
| Bilan              | Ignorée                    | Utilisée comme `asOfDate`     |
| Compte de Résultat | Utilisée comme `startDate` | Utilisée comme `endDate`      |
| Rapport des Parts  | Ignorée                    | Utilisée comme `asOfDate`     |
| Prêts en Cours     | Ignorée                    | Utilisée comme `expectedDate` |

**Exemple** :

* Plage sélectionnée : **1er juin - 30 juin 2026**
* Appel API Bilan : `GET /reports/balance-sheet?asOfDate=2026-06-30`
* Appel API Compte de Résultat : `GET /reports/profit-loss?startDate=2026-06-01&endDate=2026-06-30`
* Appel API Rapport des Parts : `GET /reports/shares-report?asOfDate=2026-06-30`
* Appel API Prêts en Cours : `GET /reports/loans-outstanding?expectedDate=2026-06-30`

***

## Scénarios d'Export Courants

### Dossier de Réunion Mensuelle du Conseil

**Rapports à inclure :**

* ✅ Bilan (situation financière à la fin du mois)
* ✅ Compte de Résultat (performance mensuelle)
* ✅ Prêts en Cours (santé du portefeuille)

**Appels API effectués :**

```http theme={null}
GET /reports/balance-sheet?asOfDate=2026-06-30
GET /reports/profit-loss?startDate=2026-06-01&endDate=2026-06-30
GET /reports/loans-outstanding?expectedDate=2026-06-30
```

**Plage de dates** : "Mois dernier" (ex. 1er juin - 30 juin)

**Résultat** : Rapport combiné montrant un instantané financier mensuel complet

***

### Réunion Trimestrielle des Membres

**Rapports à inclure :**

* ✅ Bilan (position des actifs et capitaux propres)
* ✅ Compte de Résultat (bénéfice/perte trimestriel)
* ✅ Rapport des Parts (répartition de la participation des membres)

**Appels API effectués :**

```http theme={null}
GET /reports/balance-sheet?asOfDate=2026-06-30
GET /reports/profit-loss?startDate=2026-04-01&endDate=2026-06-30
GET /reports/shares-report?asOfDate=2026-06-30
```

**Plage de dates** : "Ce trimestre" (ex. 1er avr. - 30 juin)

**Résultat** : Rapport trimestriel complet de performance et de participation

***

### Dossier d'Audit Annuel

**Rapports à inclure :**

* ✅ Bilan
* ✅ Compte de Résultat
* ✅ Rapport des Parts
* ✅ Prêts en Cours

**Appels API effectués :**

```http theme={null}
GET /reports/balance-sheet?asOfDate=2025-12-31
GET /reports/profit-loss?startDate=2025-01-01&endDate=2025-12-31
GET /reports/shares-report?asOfDate=2025-12-31
GET /reports/loans-outstanding?expectedDate=2025-12-31
```

**Plage de dates** : Personnalisée (1er janv. - 31 déc. 2025)

**Résultat** : Dossier complet d'états financiers annuels

***

### Revue du Comité de Crédit

**Rapports à inclure :**

* ✅ Prêts en Cours (statut actuel du portefeuille)

**Appels API effectués :**

```http theme={null}
GET /reports/loans-outstanding?expectedDate=2026-06-12
```

**Plage de dates** : "Courante" (aujourd'hui)

**Résultat** : Détails actuels du portefeuille de prêts pour la prise de décision

***

## Options de Format d'Export

### Export PDF

**Implémentation** : Le frontend génère le PDF à partir des données de réponse API

**Avantages :**

* Rapports au format professionnel
* Inclut la marque de l'organisation
* Facile à imprimer et distribuer
* Adapté aux présentations

**Options :**

* **PDF fusionné** : Tous les rapports dans un seul fichier (recommandé pour les réunions)
* **PDFs séparés** : Chaque rapport dans un fichier individuel (pour distribution sélective)

**Convention de nommage :**

* Fusionné : `agatabo-[organization]-reports-[date].pdf`
* Séparé : `agatabo-[organization]-[report-name]-[date].pdf`

***

### Export CSV

**Implémentation** : Le frontend convertit la réponse API au format CSV

**Avantages :**

* Import dans Excel pour analyse personnalisée
* Création de tableaux croisés dynamiques
* Génération de graphiques personnalisés
* Combinaison avec d'autres sources de données

**Format** : Toujours des fichiers séparés (un CSV par rapport)

**Convention de nommage :**

* `agatabo-[organization]-[report-name]-[date].csv`

***

## Utiliser le Générateur d'Export

**Flux de travail typique :**

1. **Aller à la section Rapports** dans l'interface
2. **Sélectionner les rapports** à inclure (cases à cocher)
3. **Choisir la plage de dates** :
   * Période courante
   * Mois dernier
   * Ce trimestre
   * Cette année
   * Personnalisée (préciser les dates exactes)
4. **Sélectionner le format** : PDF ou CSV
5. **Configurer les options PDF** (si PDF sélectionné) :
   * Fusionné (fichier unique)
   * Séparé (fichiers individuels)
6. **Cliquer sur Générer/Télécharger**
7. **Attendre la fin des appels API**
8. **Télécharger** le(s) fichier(s) généré(s)

**Comportement du navigateur :**

* Les fichiers se téléchargent dans le dossier de téléchargement par défaut
* Les fichiers multiples (PDFs/CSVs séparés) se téléchargent successivement
* Les grands rapports peuvent prendre plusieurs secondes à générer

***

## Implémentation API

Si vous construisez une fonctionnalité d'export personnalisée, appelez directement les points d'accès de rapports :

```typescript theme={null}
// Example: Monthly board package
const organizationId = 'org-abc123';
const asOfDate = '2026-06-30';
const startDate = '2026-06-01';
const endDate = '2026-06-30';

// Parallel API calls
const [balanceSheet, profitLoss, loansOutstanding] = await Promise.all([
  fetch(`/reports/balance-sheet?asOfDate=${asOfDate}`, {
    headers: { 'x-organization-id': organizationId }
  }),
  fetch(`/reports/profit-loss?startDate=${startDate}&endDate=${endDate}`, {
    headers: { 'x-organization-id': organizationId }
  }),
  fetch(`/reports/loans-outstanding?expectedDate=${asOfDate}`, {
    headers: { 'x-organization-id': organizationId }
  })
]);

// Process responses
const balanceSheetData = await balanceSheet.json();
const profitLossData = await profitLoss.json();
const loansOutstandingData = await loansOutstanding.json();

// Generate PDF or CSV from combined data
// (implementation depends on PDF/CSV library used)
```

***

## Préréglages de Plage de Dates

**Correspondances courantes des préréglages :**

| Préréglage           | Date de Début                       | Date de Fin                    |
| -------------------- | ----------------------------------- | ------------------------------ |
| **Période courante** | Dernière date de clôture de période | Aujourd'hui                    |
| **Mois dernier**     | Premier jour du mois précédent      | Dernier jour du mois précédent |
| **Ce trimestre**     | Premier jour du trimestre courant   | Aujourd'hui                    |
| **Cette année**      | 1er janvier de l'année courante     | Aujourd'hui                    |
| **Personnalisé**     | Spécifiée par l'utilisateur         | Spécifiée par l'utilisateur    |

**Exemple (aujourd'hui = 12 juin 2026) :**

* Mois dernier : 1er juin 2026 → 30 juin 2026
* Ce trimestre : 1er avril 2026 → 12 juin 2026
* Cette année : 1er janvier 2026 → 12 juin 2026

***

## Bonnes Pratiques

<Note>
  **Utiliser efficacement le générateur d'export :**

  **Sélection des rapports :**

  * ✅ Inclure Bilan + Compte de Résultat pour une image financière complète
  * ✅ Ajouter le Rapport des Parts pour les communications destinées aux membres
  * ✅ Inclure les Prêts en Cours pour la gestion du portefeuille
  * ✅ Éviter d'exporter des rapports inutiles (perte de temps)

  **Plages de dates :**

  * ✅ Utiliser des périodes cohérentes pour l'analyse comparative
  * ✅ Choisir "Mois dernier" après la clôture de fin de mois
  * ✅ Utiliser "Cette année" pour l'analyse cumulée annuelle
  * ✅ Vérifier la plage de dates avant génération (revérifier début/fin)

  **Formats d'export :**

  * ✅ Utiliser PDF pour les présentations et distributions officielles
  * ✅ Utiliser CSV pour l'analyse personnalisée dans Excel
  * ✅ Exporter les deux formats pour les dossiers d'audit (PDF pour revue, CSV pour analyse)
  * ✅ Utiliser le PDF fusionné pour une distribution à un seul destinataire (plus simple)

  **Gestion des fichiers :**

  * ✅ Enregistrer les exports dans des dossiers organisés (ex. `Financial Reports/2026/Q2/`)
  * ✅ Conserver les noms de fichiers exportés (les noms auto-générés incluent les métadonnées clés)
  * ✅ Archiver les exports pour référence historique
  * ✅ Ne pas modifier les fichiers exportés (régénérer si les données changent)

  **Performance :**

  * ✅ Prévoir 3-10 secondes pour les exports multi-rapports
  * ✅ Être patient - les appels API sont parallèles mais prennent quand même du temps
  * ✅ Ne pas cliquer plusieurs fois sur générer (crée des requêtes en double)
</Note>

***

## Dépannage

**Q : L'export prend beaucoup de temps**

R : Plusieurs appels API sont effectués. Le temps dépend de :

* Nombre de rapports sélectionnés (1-4)
* Quantité de données dans chaque rapport
* Charge du serveur
* Vitesse du réseau

Temps typique : 3-10 secondes pour les 4 rapports.

**Q : L'export échoue ou affiche des erreurs**

R : Vérifiez :

* Avez-vous l'autorisation `reports:read` ?
* L'organisation est-elle sélectionnée (si accès multi-organisations) ?
* La plage de dates est-elle valide (début \< fin) ?
* Y a-t-il des transactions dans la période sélectionnée ?
* Consultez la console du navigateur pour les messages d'erreur API

**Q : Le format PDF/CSV ne semble pas correct**

R : Cela dépend de la bibliothèque frontend de génération PDF/CSV. Vérifiez :

* Compatibilité du navigateur (navigateurs modernes recommandés)
* Visionneuse PDF (Adobe Reader, visionneuse PDF Chrome)
* Paramètres d'import CSV dans Excel (délimiteur, encodage)

**Q : Puis-je exporter avec des plages de dates différentes par rapport ?**

R : Pas avec le générateur d'interface. Pour différentes plages de dates :

* Exécutez le générateur plusieurs fois avec des dates différentes
* Appelez directement les APIs de rapports individuels avec des paramètres personnalisés
* Allez à chaque page de rapport et exportez individuellement

**Q : Où les fichiers sont-ils téléchargés ?**

R : Dans le dossier de téléchargement par défaut du navigateur :

* Windows : `C:\Users\[YourName]\Downloads\`
* Mac : `~/Downloads/`
* Linux : `~/Downloads/`

Vérifiez les paramètres de téléchargement du navigateur pour changer l'emplacement.

**Q : Puis-je planifier des exports automatiques ?**

R : Le générateur d'export est uniquement une fonctionnalité manuelle de l'interface. Pour les exports automatisés :

* Construire un script personnalisé appelant les APIs de rapports
* Utiliser une tâche cron ou planifiée
* Générer et envoyer automatiquement les rapports par email

***

## Alternative : Exports de Rapports Individuels

Si vous avez besoin de **plages de dates différentes** pour chaque rapport :

**Option 1 : Appeler directement les APIs**

```bash theme={null}
# Balance Sheet (as of month-end)
curl -X GET "/reports/balance-sheet?asOfDate=2026-06-30" \
  -H "x-organization-id: org-abc123"

# Profit & Loss (for quarter)
curl -X GET "/reports/profit-loss?startDate=2026-04-01&endDate=2026-06-30" \
  -H "x-organization-id: org-abc123"

# Shares Report (as of today)
curl -X GET "/reports/shares-report?asOfDate=2026-06-12" \
  -H "x-organization-id: org-abc123"
```

**Option 2 : Aller aux pages de rapports individuelles**

1. Rapports → Bilan
2. Sélectionner une date personnalisée
3. Exporter ce rapport
4. Répéter pour les autres rapports

***

## Autorisations

**Autorisation requise** : `reports:read` (portée au niveau organisation)

**Utilisateurs qui peuvent utiliser le générateur d'export :**

* Administrateurs (accès complet)
* Comptables (accès complet)
* Trésoriers (accès complet)
* Membres du Conseil (si `reports:read` est accordé)

**Utilisateurs qui ne peuvent pas :**

* Membres ordinaires (sauf autorisation spécifique)
* Utilisateurs avec seulement `ledger:read` (autorisation différente)

***

## Sujets Connexes

<CardGroup cols={2}>
  <Card title="Bilan" icon="scale-balanced" href="/fr/tontines/reports/balance-sheet">
    Rapport de situation financière
  </Card>

  <Card title="Compte de Résultat" icon="chart-line" href="/fr/tontines/reports/profit-and-loss">
    État des revenus
  </Card>

  <Card title="Rapport des Parts" icon="users" href="/fr/tontines/reports/shares-report">
    Répartition de la participation des membres
  </Card>

  <Card title="Prêts en Cours" icon="money-bill-trend-up" href="/fr/tontines/reports/loans-outstanding">
    Résumé du portefeuille
  </Card>
</CardGroup>
