Planifications
Faire générer et envoyer un modèle automatiquement, chaque jour, semaine, mois ou trimestre.
Principe
Une planification est attachée à un modèle (une seule par modèle). À chaque échéance, la
plateforme génère le modèle, archive le fichier (exécution de type SCHEDULED) et l'envoie par e-mail
aux destinataires. La période du modèle est résolue au moment de l'envoi : un modèle en
PREVIOUS_MONTH planifié le 1ᵉʳ du mois envoie le mois clos.
Créer ou modifier — PUT /provider/reports/models/{id}/schedule
{
"active": true,
"frequency": "MONTHLY",
"dayOfMonth": 1,
"sendTime": "08:00",
"startDate": "2026-12-01",
"endRecurrence": { "mode": "NEVER" },
"postponeOnWeekend": true,
"fileFormat": "XLSX",
"fileNameTemplate": "quittancement-{period}",
"recipientsTo": ["compta@wafa.ci"],
"recipientsCc": ["controle@pooltpv.ci"],
"sendIfEmpty": false
}| Champ | Obligatoire | Description |
|---|---|---|
active | non | true pour activer (défaut false) |
frequency | oui | DAILY, WEEKLY, MONTHLY, QUARTERLY |
recurrenceEvery | non | Pas de récurrence (ex. 2 = toutes les deux semaines) |
dayOfMonth | non | Jour d'envoi (1 à 31) pour MONTHLY / QUARTERLY, défaut 1 ; borné à la longueur du mois |
sendTime | non | Heure d'envoi HH:mm, défaut 08:00 |
startDate | non | Première date possible, défaut aujourd'hui |
endRecurrence.mode | non | NEVER (défaut), UNTIL_DATE (+ endDate), AFTER_OCCURRENCES (+ occurrences) |
postponeOnWeekend | non | Reporter au lundi un envoi tombant le week-end |
fileFormat | oui | PDF, CSV, XLSX |
fileNameTemplate | non | Gabarit du nom de fichier |
recipientsTo, recipientsCc | non | Destinataires ; à défaut ceux du modèle |
sendIfEmpty | non | Envoyer même sans aucune ligne (défaut false : l'exécution est SKIPPED_EMPTY et rien n'est envoyé) |
Réponse 200 :
{ "success": true, "message": "Planification enregistrée", "data": { "nextRunAt": "2026-12-01T08:00:00" } }nextRunAt est la première échéance calculée : date de départ ajustée au jour du mois, à l'heure
d'envoi, reportée si elle est déjà passée ou tombe un week-end avec postponeOnWeekend.
Erreurs : « Jour du mois invalide », « endDate requis pour le mode UNTIL_DATE », « occurrences requis pour le mode AFTER_OCCURRENCES ».
Le chemin historique PUT /provider/reports/{id}/schedule (sans /models) est conservé pour
compatibilité et se comporte à l'identique.
Consulter
| Endpoint | Réponse |
|---|---|
GET /provider/reports/models/{id}/schedule | Résumé : active, frequency, sendTime, recipientsCount, fileFormat, nextRunAt |
GET /provider/reports/schedules | Toutes les planifications de votre périmètre (ReportSchedule[], avec lastSentAt, nextRunAt, reportModelId) |
Piloter
| Action | Endpoint | Effet |
|---|---|---|
| Mettre en pause | POST /provider/reports/schedules/{scheduleId}/pause | active=false, plus d'envoi |
| Reprendre | POST /provider/reports/schedules/{scheduleId}/resume | active=true, prochaine échéance recalculée |
| Supprimer | DELETE /provider/reports/schedules/{scheduleId} | 204 |
scheduleId est l'id de la planification (dans GET /provider/reports/schedules), distinct de
l'identifiant du modèle.
Suivre les envois
Chaque envoi crée une exécution type = SCHEDULED consultable avec
GET /provider/reports/models/{id}/executions?type=SCHEDULED, fichier compris. Une exécution
SKIPPED_EMPTY signifie qu'aucune ligne ne correspondait et que, sendIfEmpty étant false,
rien n'a été envoyé.
Exemple : bordereau mensuel par compagnie
Modèle BORDEREAU_CESSION en PER_COMPANY, période PREVIOUS_MONTH, planifié le 2 de chaque mois à
07:30 en PDF : chaque compagnie reçoit son bordereau du mois clos, et le Pool retrouve l'exécution
parent et ses enfants dans l'historique.