Spaces:
Running
SYSTÈME DE REMBOURSEMENTS - DOCUMENTATION COMPLÈTE
STRUCTURE DES TABLES
1. Table Remboursements (MODIFIÉE)
Nouvelles colonnes à ajouter dans Google Sheets :
| Colonne | Type | Description |
|------------------------|---------|---------------------------------------------------|
| ID_Transaction | Texte | TRX-2026-0001 |
| ID_Pret | Texte | PRT-2026-0002 |
| ID_Client | Texte | CLI-2026-0003 (nouveau) |
| Date_Paiement | Date | 2026-01-15 |
| Montant_Verse | Nombre | Montant total payé par le client |
| Montant_Principal | Nombre | Part du capital remboursé (nouveau) |
| Montant_Interets | Nombre | Part des intérêts (nouveau) |
| Penalites_Retard | Nombre | Montant des pénalités (nouveau) |
| Solde_Avant | Nombre | Dette totale avant ce paiement (nouveau) |
| Solde_Apres | Nombre | Dette restante après ce paiement (nouveau) |
| Numero_Echeance | Texte | Format "3/10" (nouveau) |
| Date_Echeance_Prevue | Date | Date attendue pour ce paiement (nouveau) |
| Jours_Retard | Nombre | Peut être négatif si anticipé (nouveau) |
| Statut_Paiement | Texte | PONCTUEL/EN_RETARD/ANTICIPE/PARTIEL (nouveau) |
| Moyen_Paiement | Texte | Wave, Espèces, etc. |
| Reference_Externe | Texte | N° transaction Wave/OM (nouveau) |
| Commentaire | Texte | Notes complémentaires |
| Recu_Emis | Texte | OUI/NON (nouveau) |
| Numero_Recu | Texte | REC-2026-0042 (nouveau) |
| Timestamp | Texte | 2026-01-15 14:23:10 |
2. Table Ajustements_Echeances (NOUVELLE)
À créer dans Google Sheets :
| Colonne | Type | Description |
|---------------------|---------|------------------------------------------------|
| ID_Ajustement | Texte | ADJ-2026-0001 |
| ID_Pret | Texte | PRT-2026-0002 |
| Numero_Echeance | Nombre | 4 (numéro de l'échéance ajustée) |
| Montant_Additionnel | Nombre | 3600 (montant à ajouter) |
| Raison | Texte | PAIEMENT_PARTIEL |
| Date_Creation | Date | 2026-01-18 |
| Timestamp | Texte | 2026-01-18 14:23:10 |
Cette table est automatiquement créée par le code si elle n'existe pas.
INSTALLATION
1. Dépendances Python
Ajouter à votre requirements.txt :
reportlab>=4.0.0
Installer :
pip install reportlab
2. Structure des Dossiers
Vérifier que vous avez cette structure :
project/
├── src/
│ ├── streamlit_app.py
│ ├── modules/
│ │ └── repayments.py # Interface utilisateur
│ ├── Analytics/
│ │ └── AnalyseRepayment.py # Logique métier
│ └── DocumentGen/
│ └── InvoiceRepayment.py # Génération PDF
3. Configuration Google Sheets
- Ouvrir votre Google Sheet
- Créer une nouvelle feuille
Ajustements_Echeancesavec les colonnes listées ci-dessus - Modifier la feuille
Remboursementspour ajouter les nouvelles colonnes
UTILISATION
Workflow Standard
Sélection du prêt
- Rechercher le client par nom ou ID
- Sélectionner le prêt actif
Analyse automatique
- Le système détecte l'échéance en cours
- Calcule automatiquement les retards éventuels
Choix du scénario (si retard)
- Option 1 : Pénalités réglementaires (5%)
- Option 2 : Geste commercial (0%)
- Option 3 : Taux personnalisé (slider)
Validation du paiement
- Saisir le montant versé
- Choisir le moyen de paiement
- Ajouter une référence externe
- Valider
Génération du reçu (optionnel)
- Cliquer sur "Générer le Reçu"
- Télécharger le PDF
LOGIQUE MÉTIER
Calcul des Pénalités
Formule : Montant_Echéance × Taux_Hebdo × Semaines_Entamées
Exemple :
- Échéance : 10 600 XOF
- Retard : 7 jours = 1 semaine entamée
- Taux : 5%
- Pénalités = 10 600 × 0.05 × 1 = 530 XOF
Ordre de Priorité des Paiements
1. Pénalités (prélevées en priorité)
2. Intérêts
3. Principal
Exemple :
Montant versé : 12 000 XOF
- Pénalités : 530 XOF
- Reste : 11 470 XOF
├─ Intérêts : 600 XOF
└─ Principal : 10 870 XOF
Gestion des Paiements Partiels
Si le montant versé < montant échéance (avec tolérance de 1%) :
- Le statut devient
PARTIEL - Le montant manquant est calculé
- Une ligne est ajoutée dans
Ajustements_Echeances - L'échéance suivante est automatiquement ajustée
Exemple :
Échéance 3 : 10 600 XOF
Client paie : 7 000 XOF
Manque : 3 600 XOF
→ Échéance 4 devient : 10 600 + 3 600 = 14 200 XOF
Détermination du Statut
# Tolérance de 1%
montant_min_accepte = montant_echeance × 0.99
if jours_retard > 0:
statut = "EN_RETARD"
elif montant_verse < montant_min_accepte:
statut = "PARTIEL"
elif jours_retard < 0:
statut = "ANTICIPE"
else:
statut = "PONCTUEL"
EXEMPLES CONCRETS
Exemple 1 : Paiement Ponctuel
Contexte :
- Prêt : PRT-2026-0002 (100 000 XOF capital, 106 000 XOF total)
- Échéance 3/10 attendue le 15/01/2026
- Client paie 10 600 XOF le 15/01/2026
Résultat :
- Statut : PONCTUEL
- Pénalités : 0 XOF
- Principal : 10 000 XOF
- Intérêts : 600 XOF
- Solde après : 84 800 XOF
Exemple 2 : Paiement en Retard avec Pénalités
Contexte :
- Même prêt
- Échéance 3/10 attendue le 15/01/2026
- Client paie 11 130 XOF le 22/01/2026 (7 jours de retard)
Calculs :
- Retard : 7 jours = 1 semaine
- Pénalités : 10 600 × 5% × 1 = 530 XOF
- Montant pour dette : 11 130 - 530 = 10 600 XOF
├─ Intérêts : 600 XOF
└─ Principal : 10 000 XOF
Résultat :
- Statut : EN_RETARD
- Pénalités : 530 XOF
- Principal : 10 000 XOF
- Intérêts : 600 XOF
- Solde après : 84 800 XOF
Exemple 3 : Paiement Partiel
Contexte :
- Même prêt
- Échéance 3/10 attendue le 15/01/2026
- Client paie 7 000 XOF le 15/01/2026
Calculs :
- Manque : 10 600 - 7 000 = 3 600 XOF
- Décomposition :
├─ Intérêts : 600 XOF (priorité)
└─ Principal : 6 400 XOF
Résultat :
- Statut : PARTIEL
- Pénalités : 0 XOF
- Principal : 6 400 XOF
- Intérêts : 600 XOF
- Solde après : 92 000 XOF
Action :
- Ajout dans Ajustements_Echeances :
* ID_Pret : PRT-2026-0002
* Numero_Echeance : 4
* Montant_Additionnel : 3 600 XOF
* Raison : PAIEMENT_PARTIEL
- Échéance 4 devient : 10 600 + 3 600 = 14 200 XOF
DÉPANNAGE
Erreur : "Table Ajustements_Echeances non trouvée"
Solution : La table sera créée automatiquement au premier ajustement. Vous pouvez aussi la créer manuellement avec les colonnes spécifiées.
Erreur : "Impossible de déterminer l'échéance"
Vérifications :
- La colonne
Dates_Versementsest-elle remplie correctement ? - Le format est-il correct ? (DD/MM/YYYY,DD/MM/YYYY,...)
- Le prêt a-t-il un statut ACTIF ?
Les pénalités ne s'affichent pas
Vérifications :
- Y a-t-il un retard effectif (date_paiement > date_echeance_prevue) ?
- Le retard est-il d'au moins 1 jour ?
- Le scénario avec pénalités a-t-il été sélectionné ?
Le reçu ne se génère pas
Vérifications :
- Le module
reportlabest-il installé ? (pip install reportlab) - Les données du client existent-elles dans
Clients_KYC? - Y a-t-il des erreurs dans les logs ?
MAINTENANCE
Réinitialisation d'une Échéance
Si une échéance a été ajustée par erreur :
- Aller dans
Ajustements_Echeances - Supprimer la ligne correspondante
- L'échéance reviendra à sa valeur initiale au prochain rafraîchissement
Modification d'un Paiement
Les paiements enregistrés ne peuvent pas être modifiés directement via l'interface. Pour corriger :
- Aller dans Google Sheets
- Modifier directement dans la table
Remboursements - Si nécessaire, ajuster les soldes manuellement
AMÉLIORATIONS FUTURES
À Court Terme
- Envoi automatique du reçu par email/SMS
- Dashboard des retards
- Relances automatiques
À Moyen Terme
- Gestion des remises exceptionnelles
- Historique des ajustements
- Export comptable
À Long Terme
- API pour intégration externe
- Système de scoring automatique
- Prédiction des défauts de paiement
SUPPORT
Pour toute question ou problème :
- Vérifier cette documentation
- Consulter les logs d'erreur
- Vérifier la structure des données dans Google Sheets
Version : 1.0.0 Date : Janvier 2026 Auteur : Système de Gestion de Microfinance