---
name: feedback-differe-date-calcul
description: "Bug corrigé — recalcul date_premiere_echeance lors du passage au type 'differe' dans les formulaires investissement"
metadata: 
  node_type: memory
  type: feedback
  originSessionId: 43bfd5e1-0e82-496d-bdd2-437e92339323
---

Quand l'utilisateur change le type vers 'differe' alors que `duree_mois` est déjà renseigné, l'ancienne logique gardait la `date_premiere_echeance` issue du calcul in_fine (souscription + 1 mois) au lieu de recalculer pour un différé (souscription + durée totale). Seul `date_cible` était mis à jour.

**Why:** Pour un prêt différé, `date_premiere_echeance` = date d'échéance unique = souscription + duree_mois. Si l'utilisateur sélectionne 'differe' après avoir saisi la durée pour un in_fine, la date affichée était visuellement cohérente mais erronée.

**How to apply:** Dans les deux formulaires (Investissements.jsx et InvestissementDetail.jsx), le onChange du select `type_remb` doit, lors du passage à 'differe', **toujours recalculer** date_premiere_echeance si date_souscription ET duree_mois sont disponibles — et ne garder l'ancienne valeur qu'en fallback si duree_mois est absent. Ne pas inverser l'ordre des conditions (duree_mois check en premier).

```js
if (t === 'differe') {
  if (form.date_souscription && form.duree_mois) {
    const dpe = addMonthsFE(form.date_souscription, 1);
    const cible = addMonthsFE(dpe, Number(form.duree_mois) - 1);
    next.date_premiere_echeance = cible;
    next.date_cible = cible;
  } else if (form.date_premiere_echeance) {
    next.date_cible = form.date_premiere_echeance;
  }
}
```

Validation ajoutée dans les deux submit handlers :
```js
if (form.type_remb === 'differe' && !form.date_premiere_echeance) {
  setErr("La date d'échéance est requise pour un prêt différé.");
  return;
}
```

Label du champ rendu dynamique : "Date d'échéance (versement unique) *" quand type=differe, "Date 1ère échéance *" sinon.
