Missions & Déplacements professionnels
Module de gestion des missions et déplacements professionnels avec workflow d'approbation à plusieurs niveaux, calcul automatique du per diem, suivi des dépenses et conformité SYSCOHADA. Conçu pour les organisations multi-sites (plantations, succursales, missions terrain) avec besoin d'audit trail complet.
Note SYSCOHADA — les missions sont mappées au compte 6384 — Missions (sous-compte de la classe 638 « Autres charges externes »). Le compte 6383 correspond aux Réceptions. Le compte 625 est Primes d'assurance, PAS les missions (erreur fréquente à éviter — voir
feedback_ohada_625_vs_6384).
Workflow
Demande → Approbation (paliers) → Avance versée → Mission en cours
→ Soumission rapport (48h) → Réconciliation avance → Clôture
L'écran principal /hr/missions propose 3 onglets :
- Mes demandes — vos missions personnelles avec leur statut
- À approuver — visible uniquement pour managers (par palier d'approbation)
- Historique — missions clôturées avec rapprochement avance / dépenses
Règles métier
| Règle | Valeur |
|---|---|
| Jours autorisés | Mardi à Vendredi (4 jours/semaine — pas de départ lundi ni de retour samedi/dimanche) |
| Durée max | 3 jours consécutifs par mission |
| Délai de soumission du rapport | 48 h après la fin |
| Statuts | pending, approved, rejected, inProgress, completed, cancelled |
Ces règles sont validées au niveau service (missionService.ts) et reflétées dans hr.missions.rules.*.
Approbation par paliers
L'approbation suit une cascade selon le montant total (per diem + avance + dépenses estimées) :
| Tier | Seuil | Approbateur(s) |
|---|---|---|
| Tier 1 | < seuil minimum | Manager direct |
| Tier 2 | montant intermédiaire | Manager + Chef de département |
| Tier 3 | au-delà du plafond | Manager + Département + PDG / Direction |
Les seuils sont configurables par tenant via useMissionApprovalLevels. Le badge ApprovalTierBadge (src/modules/hr/components/missions/ApprovalTierBadge.tsx) affiche le palier en temps réel sur chaque demande.
Per diem (GSA-style)
Le per diem suit un modèle GSA-style (Government Services Administration — standard international). Le montant journalier est composé de plusieurs lignes plutôt qu'un forfait unique :
per_diem_jour = lodging_rate
+ breakfast_rate + lunch_rate + dinner_rate
+ incidentals_rate
avec ajustement de pourcentage pour le premier et le dernier jour (first_day_pct, last_day_pct — typiquement 75 % chacun pour refléter une demi-journée d'hébergement effective).
per_diem_rates(17 colonnes) — table de référence par tenant :country_code,region_code,city_code,lodging_rate,breakfast_rate,lunch_rate,dinner_rate,incidentals_rate,first_day_pct,last_day_pct,currency_code,effective_from,effective_toPerDiemCalculator(src/modules/hr/components/missions/PerDiemCalculator.tsx) affiche la décomposition complète et reste lecture seule pour l'employé- Devise : portée par
per_diem_rates.currency_codepuis fallback sur la configuration tenant (tenants.settings.currency) — XAF/FCFA, XOF/FCFA, USD ou EUR - Versionnage temporel :
effective_from/effective_topermettent de modifier les taux sans casser l'historique
Avance et réconciliation
L'avance est versée à l'approbation de la mission via salary_advances (compte SYSCOHADA 425 — Personnel, avances et acomptes). Au retour :
- L'employé soumet le rapport + reçus dans
mission_expenses(catégories : transport, hébergement, repas, divers — chacune mappée à un sous-compte 638 viaexpense_category_gl_mapping) AdvanceReconciliationCard(src/modules/hr/components/missions/AdvanceReconciliation.tsx) calcule l'écartavance — dépenses justifiées- Si dépenses > avance → remboursement complémentaire à l'employé
- Si dépenses < avance → trop-perçu retenu sur le prochain bulletin de paie
Audit trail
Toutes les actions sont journalisées dans mission_audit_log (12 colonnes : action, acteur, ancienne/nouvelle valeur, justification, timestamp) et visualisées via MissionAuditTimeline (src/modules/hr/components/missions/MissionAuditTimeline.tsx).
Cet audit alimente :
- La conformité réglementaire (traçabilité des dépenses RH)
- Les rapports CODIR (qui voyage le plus, où, pour combien)
- Les analyses de productivité (mission ROI)
Tables de données
| Table | Colonnes | Description |
|---|---|---|
travel_missions | 22 | Demande principale (employé, dates, destination, motif, statut, budget estimé, dépenses réelles, avance) |
mission_expenses | 9 | Dépenses post-mission (catégorie, montant, reçu, description) |
mission_audit_log | 12 | Trail d'audit (action, acteur, ancien/nouveau statut, niveau d'approbation, commentaire) |
per_diem_rates | 17 | Référence per diem GSA-style (pays, région, ville, taux hébergement/repas/divers, % 1er/dernier jour) |
expense_category_gl_mapping | 8 | Mapping catégorie dépense → sous-compte SYSCOHADA |
Comptabilité OHADA
Mappings GL automatiques :
| Compte | Libellé | Usage |
|---|---|---|
| 6384 | Missions | Per diem + dépenses validées |
| 6383 | Réceptions | (réservé) |
| 425 | Personnel, avances et acomptes | Avance versée avant départ |
| 445 | État, TVA récupérable | TVA sur dépenses (selon juridiction) |
Les écritures sont générées par le bridge financier (financialBridgeService) lors de la clôture de mission, avec extourne automatique du compte 425 quand l'avance est réconciliée.
Multi-tenant et multi-juridiction
- CEMAC (Cameroun, Tchad, Gabon...) — XAF/FCFA, TVA 19,25 % au Cameroun
- UEMOA (Côte d'Ivoire, Sénégal...) — XOF/FCFA, TVA 18 %
- Per diem rates configurables par zone géographique du tenant
- RLS appliqué sur toutes les tables :
tenant_id = public.tenant_id() OR public.is_super_admin() - Devise affichée via
formatCurrency()selontenants.settings.currency
Intégration KONA (chatbot RAG)
Le provider missionsDataSearch permet à l'assistant de répondre à :
- « Quel est le statut de ma mission à Douala ? »
- « Combien de per diem pour Yaoundé ? »
- « Qui doit approuver ma demande de 250 000 FCFA ? »
- « Combien de missions en attente ce mois-ci ? »
Réponses tenant-scopées via RBAC (rbac.tenant_id, role) et limitées aux missions visibles selon le rôle.
Liens utiles
- Page Missions : /hr/missions
- Module Comptabilité OHADA : Comptabilité
- Module Paie & Avances : Paie
- FAQ : Foire aux questions