# Phase 2 - Audit et Plan d'Action : Cotisations & Adhésions

**Date** : 17 novembre 2025  
**Objectif** : Préparer la livraison Phase 2 selon le plan de production

---

## 📋 ÉTAT ACTUEL

### ✅ Module Cotisations - Backend

**Statut** : ✅ **COMPLET ET FONCTIONNEL**

#### Backend API (`unionflow-server-api`)
- ✅ `CotisationDTO` - DTO complet avec validations
- ✅ Support Wave Money, Orange Money, Free Money
- ✅ Méthodes utilitaires (calculs, statuts, etc.)

#### Backend Implémentation (`unionflow-server-impl-quarkus`)
- ✅ `Cotisation` (Entity) - Entité JPA complète
- ✅ `CotisationRepository` - Repository Panache
- ✅ `CotisationService` - Service métier complet
- ✅ `CotisationResource` - REST API complète avec endpoints :
  - `GET /api/cotisations` - Liste paginée
  - `GET /api/cotisations/{id}` - Par ID
  - `GET /api/cotisations/reference/{numeroReference}` - Par référence
  - `GET /api/cotisations/membre/{membreId}` - Par membre
  - `GET /api/cotisations/statut/{statut}` - Par statut
  - `GET /api/cotisations/en-retard` - En retard
  - `GET /api/cotisations/recherche` - Recherche avancée
  - `GET /api/cotisations/stats` - Statistiques
  - `POST /api/cotisations` - Créer
  - `PUT /api/cotisations/{id}` - Modifier
  - `DELETE /api/cotisations/{id}` - Supprimer

### ⚠️ Module Cotisations - Frontend

**Statut** : ⚠️ **PARTIELLEMENT CONNECTÉ**

#### Service Client
- ✅ `CotisationService` (RestClient) - Interface définie
- ⚠️ `CotisationsBean` - Utilise le service mais avec données mockées pour certaines fonctionnalités

#### Pages Frontend
- ⚠️ `paiement.xhtml` - **PLACEHOLDER** (non fonctionnel)
- ⚠️ `historique.xhtml` - À vérifier
- ⚠️ `relances.xhtml` - À vérifier
- ⚠️ `rapports.xhtml` - À vérifier
- ⚠️ `collect.xhtml` - À vérifier
- ⚠️ `reminders.xhtml` - À vérifier
- ⚠️ `report.xhtml` - À vérifier

### ❌ Module Adhésions - Backend

**Statut** : ❌ **MANQUANT COMPLÈTEMENT**

#### À Créer
- ❌ `AdhesionDTO` - DTO pour les adhésions
- ❌ `Adhesion` (Entity) - Entité JPA
- ❌ `AdhesionRepository` - Repository Panache
- ❌ `AdhesionService` - Service métier
- ❌ `AdhesionResource` - REST API

### ⚠️ Module Adhésions - Frontend

**Statut** : ⚠️ **PAGES PLACEHOLDER**

#### Pages Frontend
- ⚠️ `demande.xhtml` - **PLACEHOLDER** (non fonctionnel)
- ⚠️ `validation.xhtml` - **PLACEHOLDER**
- ⚠️ `renouvellement.xhtml` - **PLACEHOLDER**
- ⚠️ `liste.xhtml` - **PLACEHOLDER**
- ⚠️ `pending.xhtml` - **PLACEHOLDER**
- ⚠️ `history.xhtml` - **PLACEHOLDER**
- ⚠️ `new.xhtml` - **PLACEHOLDER**

---

## 🎯 PLAN D'ACTION DÉTAILLÉ

### **ÉTAPE 1 : Finaliser Module Cotisations Frontend** (Priorité 1)

#### 1.1 Vérifier et compléter `CotisationService` (RestClient)
- [ ] Vérifier que tous les endpoints backend sont exposés
- [ ] Ajouter méthodes manquantes si nécessaire
- [ ] Tester la connexion avec le backend

#### 1.2 Refactoriser `CotisationsBean`
- [ ] Supprimer toutes les données mockées
- [ ] Connecter toutes les méthodes au backend via `CotisationService`
- [ ] Gérer les erreurs proprement
- [ ] Ajouter logging approprié

#### 1.3 Créer/Refactoriser les pages Cotisations
- [ ] **paiement.xhtml** - Interface complète de paiement
  - Formulaire de paiement avec sélection de méthode (Wave, Orange, etc.)
  - Validation et enregistrement via backend
  - Confirmation de paiement
- [ ] **historique.xhtml** - Liste des cotisations avec filtres
  - Connexion au backend (`GET /api/cotisations/membre/{id}`)
  - Filtres par statut, période, type
  - Pagination
- [ ] **relances.xhtml** - Gestion des relances
  - Liste des cotisations en retard (`GET /api/cotisations/en-retard`)
  - Envoi de rappels individuels et groupés
  - Historique des rappels
- [ ] **rapports.xhtml** - Rapports financiers
  - Statistiques (`GET /api/cotisations/stats`)
  - Graphiques d'évolution
  - Export Excel/PDF
- [ ] **collect.xhtml** - Collecte de cotisations
  - Vue d'ensemble des cotisations à collecter
  - Actions groupées
- [ ] **reminders.xhtml** - Rappels automatiques
  - Configuration des rappels
  - Planification

#### 1.4 Refactorisation DRY/WOU
- [ ] Utiliser composants réutilisables créés
- [ ] Standardiser les formulaires
- [ ] Uniformiser les tableaux de données

---

### **ÉTAPE 2 : Créer Module Adhésions Backend** (Priorité 2)

#### 2.1 Créer `AdhesionDTO`
- [ ] Définir la structure du DTO
- [ ] Ajouter validations Jakarta
- [ ] Inclure champs nécessaires :
  - ID membre
  - Type d'adhésion
  - Date de demande
  - Date de validation
  - Statut (EN_ATTENTE, VALIDEE, REJETEE, RENOUVELEE)
  - Motif de demande
  - Documents joints
  - Validateur

#### 2.2 Créer `Adhesion` Entity
- [ ] Entité JPA avec UUID
- [ ] Relations avec Membre et Association
- [ ] Champs de traçabilité (créé le, modifié le, etc.)

#### 2.3 Créer `AdhesionRepository`
- [ ] Repository Panache
- [ ] Méthodes de recherche personnalisées
- [ ] Requêtes par statut, membre, période

#### 2.4 Créer `AdhesionService`
- [ ] Méthodes CRUD complètes
- [ ] Logique métier :
  - Validation d'adhésion
  - Renouvellement
  - Rejet avec motif
  - Recherche avancée
  - Statistiques

#### 2.5 Créer `AdhesionResource`
- [ ] REST API complète :
  - `GET /api/adhesions` - Liste paginée
  - `GET /api/adhesions/{id}` - Par ID
  - `GET /api/adhesions/membre/{membreId}` - Par membre
  - `GET /api/adhesions/statut/{statut}` - Par statut
  - `GET /api/adhesions/en-attente` - En attente de validation
  - `GET /api/adhesions/recherche` - Recherche avancée
  - `GET /api/adhesions/stats` - Statistiques
  - `POST /api/adhesions` - Créer demande
  - `PUT /api/adhesions/{id}` - Modifier
  - `PUT /api/adhesions/{id}/valider` - Valider
  - `PUT /api/adhesions/{id}/rejeter` - Rejeter
  - `PUT /api/adhesions/{id}/renouveler` - Renouveler
  - `DELETE /api/adhesions/{id}` - Supprimer

---

### **ÉTAPE 3 : Créer Module Adhésions Frontend** (Priorité 3)

#### 3.1 Créer `AdhesionService` (RestClient)
- [ ] Interface RestClient complète
- [ ] Tous les endpoints backend exposés

#### 3.2 Créer `AdhesionsBean`
- [ ] Bean JSF pour gestion des adhésions
- [ ] Connexion complète au backend
- [ ] Gestion des listes, filtres, actions

#### 3.3 Créer/Refactoriser les pages Adhésions
- [ ] **demande.xhtml** - Formulaire de demande d'adhésion
  - Sélection membre (si existant) ou création
  - Type d'adhésion
  - Motif de demande
  - Upload de documents
  - Soumission
- [ ] **validation.xhtml** - Validation des demandes
  - Liste des demandes en attente
  - Détails de chaque demande
  - Actions : Valider / Rejeter
  - Commentaires de validation
- [ ] **renouvellement.xhtml** - Renouvellement d'adhésion
  - Sélection membre
  - Formulaire de renouvellement
  - Historique des adhésions précédentes
- [ ] **liste.xhtml** - Liste complète des adhésions
  - Filtres (statut, membre, période)
  - Recherche
  - Actions groupées
- [ ] **pending.xhtml** - Demandes en attente
  - Vue dédiée aux adhésions en attente
  - Priorisation
- [ ] **history.xhtml** - Historique des adhésions
  - Par membre
  - Par période
  - Export

#### 3.4 Refactorisation DRY/WOU
- [ ] Utiliser composants réutilisables
- [ ] Standardiser les formulaires
- [ ] Uniformiser les tableaux

---

### **ÉTAPE 4 : Intégration Wave** (Priorité 4)

#### 4.1 Préparation Backend
- [ ] Créer service Wave (interface)
- [ ] Préparer endpoints pour callbacks Wave
- [ ] Gérer les webhooks de paiement

#### 4.2 Préparation Frontend
- [ ] Intégrer SDK Wave (si disponible)
- [ ] Interface de paiement Wave
- [ ] Gestion des retours de paiement

---

## 📊 ORDRE D'EXÉCUTION RECOMMANDÉ

1. **Étape 1** : Finaliser Cotisations Frontend (2-3 semaines)
2. **Étape 2** : Créer Adhésions Backend (1-2 semaines)
3. **Étape 3** : Créer Adhésions Frontend (2-3 semaines)
4. **Étape 4** : Intégration Wave (1 semaine)

**Durée totale estimée** : 6-9 semaines

---

## ✅ CRITÈRES DE VALIDATION

### Module Cotisations
- [ ] Toutes les pages fonctionnent avec le backend
- [ ] Aucune donnée mockée
- [ ] Gestion d'erreurs complète
- [ ] Tests de connexion backend réussis
- [ ] Refactorisation DRY/WOU appliquée

### Module Adhésions
- [ ] Backend complet et testé
- [ ] Frontend complet et connecté
- [ ] Workflow complet (demande → validation → renouvellement)
- [ ] Gestion d'erreurs complète
- [ ] Refactorisation DRY/WOU appliquée

### Intégration Wave
- [ ] Paiements fonctionnels via Wave
- [ ] Callbacks gérés
- [ ] Traçabilité complète

---

**Document créé le** : 17 novembre 2025  
**Dernière mise à jour** : 17 novembre 2025

