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
}
ChampObligatoireDescription
activenontrue pour activer (défaut false)
frequencyouiDAILY, WEEKLY, MONTHLY, QUARTERLY
recurrenceEverynonPas de récurrence (ex. 2 = toutes les deux semaines)
dayOfMonthnonJour d'envoi (1 à 31) pour MONTHLY / QUARTERLY, défaut 1 ; borné à la longueur du mois
sendTimenonHeure d'envoi HH:mm, défaut 08:00
startDatenonPremière date possible, défaut aujourd'hui
endRecurrence.modenonNEVER (défaut), UNTIL_DATE (+ endDate), AFTER_OCCURRENCES (+ occurrences)
postponeOnWeekendnonReporter au lundi un envoi tombant le week-end
fileFormatouiPDF, CSV, XLSX
fileNameTemplatenonGabarit du nom de fichier
recipientsTo, recipientsCcnonDestinataires ; à défaut ceux du modèle
sendIfEmptynonEnvoyer 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

EndpointRéponse
GET /provider/reports/models/{id}/scheduleRésumé : active, frequency, sendTime, recipientsCount, fileFormat, nextRunAt
GET /provider/reports/schedulesToutes les planifications de votre périmètre (ReportSchedule[], avec lastSentAt, nextRunAt, reportModelId)

Piloter

ActionEndpointEffet
Mettre en pausePOST /provider/reports/schedules/{scheduleId}/pauseactive=false, plus d'envoi
ReprendrePOST /provider/reports/schedules/{scheduleId}/resumeactive=true, prochaine échéance recalculée
SupprimerDELETE /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.

On this page