---
title: "Missions CRM"
module: crm
type: functional
status: active
updated: 2026-08-13
---

# Missions CRM

Les missions représentent des engagements contractuels liés à une affaire CRM. Elles permettent de suivre la consommation de budget ou de jours par rapport à un prévisionnel.

## Types de mission

| Code | Libellé | Unité de suivi |
|------|---------|----------------|
| `BUD` | Budget | Montant en € |
| `FOR` | Forfait | Montant en € (consommation binaire : 0% ou 100% selon `blend`) |
| `JOU` | Régie (jours) | Nombre de jours |
| `ABO` | Abonnement | Montant en € |

## Statuts

Une mission est soit **En cours** (`blend = 0`) soit **Terminée** (`blend = 1`). Le changement de statut se fait depuis la page détail de la mission.

## Tableau des missions (missions-board)

Accessible via `/crm/missions-board`, le tableau liste les missions des équipes de l'utilisateur. Chaque ligne propose :

- un bouton **Éditer** (crayon) qui ouvre le formulaire de la mission ;
- un menu **⋮** (trois points) regroupant les actions secondaires :
  - **Fiche Synthétique** — ouvre la fiche de la mission en lecture ;
  - **Dupliquer** — crée une copie de la mission (voir ci-dessous). Visible uniquement si l'utilisateur a le droit de création sur les missions.

Les boutons **Excel** et **PDF** exportent les missions filtrées. La liste des colonnes est cochable
dans la fenêtre d'export et comprend la **Description** de la mission (texte brut, mise en forme
retirée). Rappel : l'export PDF est limité à 8 colonnes cochées.

## Duplication d'une mission

Depuis le menu **⋮ › Dupliquer**, un formulaire pré-rempli permet de créer une nouvelle mission à partir d'une mission existante :

- **Repris et modifiable** : libellé (suffixé « (copie) »), type, dates de début/fin, nombre de jours prévus, montant au contrat, description.
- **Hérité automatiquement** : l'affaire et l'équipe de la mission d'origine (modifiables ensuite depuis la fiche de la nouvelle mission).
- **Copié** : les affectations d'équipe (intervenants, %, jours).
- **Non copié / réinitialisé** : les temps saisis ne sont jamais repris, et tous les compteurs (réalisé, programmé, consommé, restant) repartent à zéro. La nouvelle mission est toujours créée « En cours ».

Après validation, l'utilisateur est redirigé vers le formulaire d'édition de la mission nouvellement créée pour finaliser ou ajuster les informations.

## Page détail

Accessible via `/mission/{id}`, elle présente :

- **KPIs** : montant **validé** de l'affaire (le montant réellement engagé par le client, et non le montant prévisionnel proposé), montant facturé, taux de facturation, progression budget/jours. Le prévisionnel reste affiché en second plan sous le montant validé lorsque les deux diffèrent, et le taux de facturation se calcule sur le validé. Si l'affaire n'a pas encore de montant validé (0 €), une alerte rouge remplace la barre de facturation.
- **Chronologie** : dates début/fin, durée totale, % du temps écoulé
- **Suivi budget** : Prévision / Réalisé / Programmé / Restant avec barres de progression
- **Suivi en jours** : mêmes métriques en nombre de jours
- **Intervenants** : par personne — jours réalisés / programmés / validés, et **montant validé/réalisé** + **montant programmé** (montants décomposés pour que leur somme corresponde respectivement aux lignes « Réalisé/validé » et « Programmé » du suivi budget)
- **Graphique de suivi** : courbes cumulées "À programmer", "Réalisé", "Programmé"

## Alertes automatiques

Des alertes apparaissent en rouge sur la page quand :

| Alerte | Condition |
|--------|-----------|
| Réalisé >80% | Plus de 80% du budget/jours consommé |
| Trop programmé | Total programmé dépasse le prévisionnel |
| Échéance dépassée | Le temps écoulé dépasse la durée totale |
| Mission en retard | Écart >10% entre % réalisé et % temps écoulé |

## Graphique de suivi des temps

Le graphique s'adapte automatiquement au type de mission :

- **BUD / FOR / ABO** → valeurs en €, objectif basé sur `mtcontr`
- **JOU** → valeurs en jours, objectif basé sur `nbjprev`

Trois courbes sont affichées :
1. **À programmer** (rouge) : progression linéaire idéale sur la durée de la mission
2. **Réalisé** (vert) : cumul des temps validés/réalisés
3. **Programmé** (bleu) : cumul incluant aussi les temps programmés

Il est possible de filtrer le graphique par intervenant.

## Tableau détaillé des temps (contributeurs)

Sous le graphique, un tableau liste chaque temps saisi sur la mission (date, intervenant, durée, tarif, montant, statut, rapport, description).

- La colonne **« Description »** reprend le descriptif saisi sur le temps. Elle est affichée par défaut et fait partie des colonnes proposées à l'export (Excel et PDF).
- Les colonnes **« Rapport »** et **« Description »** sont tronquées au-delà de 80 caractères : un bouton **+** déplie le texte complet, **−** le replie. La largeur de ces colonnes est plafonnée pour ne pas déformer le tableau. L'export, lui, contient toujours le texte intégral.
- Un filtre **« Année de création »** permet de restreindre l'affichage à une année.
- Une **ligne de total** est affichée en pied de tableau : elle cumule **tous les temps de la mission, toutes années confondues**, et n'est donc jamais réduite par le filtre.
- Lorsqu'un filtre masque une partie des lignes, un encart rappelle à la fois le total affiché **et** le total complet de la mission, afin qu'aucun temps (par exemple ceux d'années antérieures) ne paraisse oublié.

> Les compteurs Budget / Jours du haut de fiche additionnent toujours **toutes** les années ; ils ne dépendent pas de ce filtre.

## Saisie des temps

Les temps (`crm_miss_conso`) sont saisis par les intervenants avec trois états possibles :

| État | Signification |
|------|--------------|
| `PROG` | Programmé |
| `REAL` | Réalisé (en attente de validation) |
| `VAL` | Validé |

## Droits et rôles

| Rôle | Description |
|------|-------------|
| Admin équipe | Peut modifier et supprimer les missions de son équipe |
| Validateur | Peut valider les temps (`can_validate = 1`) |
| Transféreur | Peut transférer des temps (`can_transfer = 1`) |

L'accès est contrôlé par équipe (`CrmMissTeam` / `CrmMissUser`). Un utilisateur ne voit que les missions des équipes auxquelles il appartient.

## Export PDF

Disponible depuis la page détail via le bouton dédié (POST `/mission/export-pdf/{id}`).
