Pular para o conteúdo principal

Paiements Community Workers

Cette page documente la gestion des paiements des Community Workers (Cuidadoras).


Nouveau systeme de paiement (via Cycle)​

Depuis la version recente, les paiements des cuidadoras sont geres via l'entite Paiement standard, integree aux cycles de paiement du programme.

Principe​

Les cuidadoras sont enregistrees comme beneficiaires avec la categorie cuidador. Leurs paiements suivent le meme workflow que les autres beneficiaires :

┌────────────────────────────────────────────────────────────────────────┐
│ CYCLE DE PAIEMENT │
│ ┌──────────────────────────────────────────────────────────────────┐ │
│ │ Code: C025 │ │
│ │ Periode: Juillet 2026 │ │
│ │ Programme: Agents communautaires │ │
│ └──────────────────────────────────────────────────────────────────┘ │
│ │ │
│ ┌─────────────────────────────┼─────────────────────────────┐ │
│ ▼ ▼ ▼ │
│ ┌──────────────┐ ┌──────────────┐ ┌──────────────┐│
│ │ Paiement CW │ │ Paiement CW │ │ Paiement CW ││
│ │ Agent │ │ Agent │ │ Agent ││
│ │ 150,000 XOF │ │ 150,000 XOF │ │ 150,000 XOF ││
│ │ Mobile Money │ │ Mobile Money │ │ Mobile Money ││
│ │ Paye ✓ │ │ En attente │ │ Rejete ││
│ └──────────────┘ └──────────────┘ └──────────────┘│
└────────────────────────────────────────────────────────────────────────┘

Endpoints principaux​

EndpointMethodeDescription
/api/community-workers/paiementsGETListe des paiements cuidadors
/api/community-workers/paiements/statsGETStatistiques des paiements

Liste des paiements cuidadors​

Endpoint​

GET /api/community-workers/paiements

Parametres de requete​

ParametreTypeDescription
cycleUUIDFiltrer par cycle
regionUUIDFiltrer par region
statutstringFiltrer par statut
communityWorkerUUIDFiltrer par cuidador
pageintPage (defaut: 1)
limitintElements par page (defaut: 20)

Reponse​

{
"success": true,
"data": [
{
"id": "550e8400-e29b-41d4-a716-446655440000",
"code": "TXN-2026-07-00001",
"communityWorker": {
"id": "...",
"code": "CW-OIO-00123",
"nomComplet": "Maria Silva",
"region": "Oio"
},
"cycle": {
"id": "...",
"code": "C025",
"libelle": "Paiement Juillet 2026"
},
"montant": "150000",
"methodePaiement": "mobile_money",
"operateur": "telecel",
"statut": "paye",
"datePaiement": "2026-07-15",
"referenceOperateur": "TXN-TEL-123456",
"createdAt": "2026-07-10T08:00:00+00:00"
}
],
"pagination": {
"page": 1,
"limit": 20,
"total": 150,
"pages": 8
}
}

Statistiques des paiements​

Endpoint​

GET /api/community-workers/paiements/stats

Reponse​

{
"success": true,
"data": {
"total": 450,
"montantTotal": "67500000",
"parStatut": {
"paye": {
"count": 380,
"montant": "57000000"
},
"en_attente": {
"count": 50,
"montant": "7500000"
},
"rejete": {
"count": 20,
"montant": "3000000"
}
},
"parRegion": [
{
"regionId": "...",
"regionNom": "Oio",
"count": 150,
"montant": "22500000"
},
{
"regionId": "...",
"regionNom": "Bafata",
"count": 120,
"montant": "18000000"
}
]
}
}

Statuts de paiement​

StatutDescription
en_attentePaiement en attente de traitement
en_coursPaiement en cours de traitement par l'operateur
payePaiement effectue avec succes
rejetePaiement rejete (numero invalide, etc.)
annulePaiement annule

Workflow de paiement cuidadors​

┌──────────────┐ ┌───────────┐ ┌─────────┐ ┌────────┐
│ En attente │ --> │ En cours │ --> │ Paye │ │ │
└──────────────┘ └───────────┘ └─────────┘ │ │
│ │ │ │
│ └──────────────────────────►│ Rejete │
│ │ │
└──────────────────────────────────────────────►│ │
└────────┘
  1. En attente : Paiement cree dans le cycle, en attente d'export vers l'operateur
  2. En cours : Fichier transmis a l'operateur, traitement en cours
  3. Paye : Confirmation de paiement recue
  4. Rejete : Echec du paiement (numero invalide, solde insuffisant, etc.)


Ancien systeme de paiement (legacy)​

Deprecie

L'ancien systeme base sur CWFichePaiement et CWLotPaiement est deprecie. Les nouveaux paiements doivent utiliser le systeme de cycles standard.

Architecture des paiements (legacy)​

┌─────────────────────────────────────────────────────────────────────────┐
│ LOT DE PAIEMENT │
│ ┌─────────────────────────────────────────────────────────────────┐ │
│ │ Reference: LOT-2026-06-001 │ │
│ │ Periode: Juin 2026 │ │
│ │ Statut: en_cours │ │
│ │ Montant total: 15,000,000 XOF │ │
│ └─────────────────────────────────────────────────────────────────┘ │
│ │ │
│ ┌─────────────────────────────┼─────────────────────────────┐ │
│ ▼ ▼ ▼ │
│ ┌──────────────┐ ┌──────────────┐ ┌──────────────┐ │
│ │ Fiche #1 │ │ Fiche #2 │ │ Fiche #3 │ │
│ │ PMT-2606-001 │ │ PMT-2606-002 │ │ PMT-2606-003 │ │
│ │ Agent │ │ Mamadou D. │ │ Agent │ │
│ │ 100,000 XOF │ │ 100,000 XOF │ │ 100,000 XOF │ │
│ │ Paye ✓ │ │ En cours │ │ Bloque │ │
│ └──────────────┘ └──────────────┘ └──────────────┘ │
└─────────────────────────────────────────────────────────────────────────┘

Fiche de paiement (CWFichePaiement)​

Une fiche de paiement represente le paiement mensuel d'un Community Worker.

Modele de donnees​

ChampTypeDescription
idUUIDIdentifiant unique
codestringCode unique (format: PMT-YYMM-XXXXX)
communityWorkerobjectCommunity worker concerne
periodestringPeriode textuelle (ex: "Juin 2026")
anneeintAnnee (2020-2100)
moisintMois (1-12)
salaireBasedecimalSalaire de base
primeTerraindecimalPrime de terrain
primePerformancedecimalPrime de performance
retenuesdecimalRetenues eventuelles
brutdecimalTotal brut (calcule)
netAPayerdecimalNet a payer (calcule)
modePaiementstringMode de paiement
numeroMobileMoneystringNumero Mobile Money
compteBancairestringCompte bancaire
referenceOperateurstringReference de l'operateur
statutstringStatut de la fiche
motifBlocagetextMotif en cas de blocage
datePaiementdatetimeDate effective du paiement
lotobjectLot de paiement associe

Statuts de fiche​

StatutDescription
brouillonFiche en cours d'edition
en_attenteFiche validee, en attente de traitement
en_coursPaiement en cours de traitement
payePaiement effectue avec succes
bloquePaiement bloque (motif requis)

Modes de paiement​

ModeDescription
mobile_moneyPaiement par Mobile Money
virementVirement bancaire
especesPaiement en especes

Calcul du net a payer​

Le net a payer est calcule automatiquement :

Brut = Salaire Base + Prime Terrain + Prime Performance
Net = max(0, Brut - Retenues)

Lot de paiement (CWLotPaiement)​

Un lot de paiement regroupe plusieurs fiches de paiement pour un traitement groupe.

Modele de donnees​

ChampTypeDescription
idUUIDIdentifiant unique
referencestringReference du lot
anneeintAnnee
moisintMois
statutstringStatut du lot
nbFichesintNombre de fiches
montantTotaldecimalMontant total
fichesarrayListe des fiches

Statuts de lot​

StatutDescription
brouillonLot en preparation
valideLot valide, pret pour transmission
transmisTransmis a l'operateur
en_coursTraitement en cours
termineTous les paiements effectues
clotureLot cloture definitivement

Endpoints API​

Fiches de paiement​

EndpointMethodeDescription
/api/cw-paiements/fichesGETListe des fiches
/api/cw-paiements/fiches/{id}GETDetail d'une fiche
/api/cw-paiements/fiches/{id}PUT, PATCHModifier les montants et le mode de paiement
/api/cw-paiements/fiches/{id}/marquer-payePOSTMarquer comme paye
/api/cw-paiements/fiches/{id}/bloquerPOSTBloquer une fiche (motif obligatoire)
/api/cw-paiements/fiches/{id}/debloquerPOSTDebloquer une fiche
/api/cw-paiements/genererPOSTGenerer les fiches du mois
/api/cw-paiements/statsGETStatistiques

Il n'y a pas de création unitaire de fiche : elles sont produites par la génération mensuelle.

Lots de paiement​

EndpointMethodeDescription
/api/cw-paiements/lotsGETListe des lots
/api/cw-paiements/lotsPOSTCreer un lot (regionId, annee, mois obligatoires)
/api/cw-paiements/lots/{id}GETDetail d'un lot
/api/cw-paiements/lots/{id}/soumettrePOSTSoumettre pour validation
/api/cw-paiements/lots/{id}/validerPOSTValider le lot
/api/cw-paiements/lots/{id}/rejeterPOSTRejeter le lot (motif obligatoire)
/api/cw-paiements/lots/{id}/executerPOSTExécuter le lot

Exemple : Generer les fiches du mois​

Requete​

POST /api/cw-paiements/generer
{
"annee": 2026,
"mois": 6,
"salaireBase": "50000",
"primeTerrain": "10000"
}

Tous les champs sont optionnels : par défaut le mois en cours, 50 000 de salaire de base et 10 000 de prime terrain. Une fiche déjà existante pour le mois est ignorée.

Reponse​

{
"success": true,
"message": "45 fiches créées, 5 ignorées (déjà existantes)",
"data": {
"created": 45,
"skipped": 5
}
}

Exemple : Marquer une fiche comme payee​

Requete​

POST /api/cw-paiements/fiches/{id}/marquer-paye
{
"referenceOperateur": "TXN-2026-06-12345"
}

Reponse​

{
"success": true,
"message": "Fiche marquée comme payée",
"data": { "id": "…", "statut": "paye", "referenceOperateur": "TXN-2026-06-12345" }
}

Workflow de paiement​

┌──────────┐ ┌───────────┐ ┌─────────┐ ┌────────┐
│ Brouillon│ --> │ En attente│ --> │ En cours│ --> │ Paye │
└──────────┘ └───────────┘ └─────────┘ └────────┘
│
▼
┌─────────┐
│ Bloque │ <-- (motif requis)
└─────────┘
  1. Brouillon : Fiche creee, montants en cours d'edition
  2. En attente : Fiche validee, prete pour integration dans un lot
  3. En cours : Lot transmis a l'operateur, paiement en traitement
  4. Paye : Paiement recu par le beneficiaire
  5. Bloque : Probleme identifie (numero invalide, compte ferme, etc.)