---
suivi: 1178
date: 2026-08-04
sujet: SRU — réception AR + calcul fin de délai (estimation si envoi)
chantier: commercialisation
type: feature
statut: poussé
hash: 5d329a6a
fichiers:
  - app/Support/Commercial/SruFinDelaiCalculator.php
  - app/Observers/ReservationObserver.php
  - app/Http/Requests/UpdateAcquereurFicheRequest.php
  - app/Http/Controllers/ReservationController.php
  - app/Http/Controllers/TMAController.php
  - app/Services/ReservationAcquereurUpdateService.php
  - app/Support/ReservationHistoriquePresenter.php
  - resources/js/Pages/Programmes/Acquereur/Show.vue
  - resources/js/Components/Commercialisation/LotsGrillePanel.vue
  - resources/js/Components/Programmes/AcquereursGrillePanel.vue
  - tools/diag/diag_echeances_retard_1176.php
  - tests/Unit/SruFinDelaiCalculator1178Test.php
  - database/data/journal_mises_a_jour_post_2026_06_12.php
  - public/build/
  - docs/suivi/SUIVI_1178_sru_reception_calcul_delai.md
---

## PROMPT ENVOYÉ

SUIVI #1178 — date de réception SRU manuelle ; calcul fin de délai depuis
réception (+10) sinon envoi (+10, marqué estimée) ; pas de recalcul masse ;
instruire notif vs envoi ; corriger diag #1176.

## SYNTHÈSE

### Fiches lues
- `SUIVI_1156` — 5 champs SRU ; `date_expir_reflexion` ≠ `date_sru_fin_delai`.
- `SUIVI_1171` — `date_ar_client` hors UI, 0/61.
- `SUIVI_1176` / `SUIVI_1177` — échéances / alertes lisent `date_sru_fin_delai`.

### OBJET 1 — date_ar_client (pas de nouvelle colonne)
**Oui, `date_ar_client` porte déjà la notion d’accusé de réception** (héritage
`clients`, entre `date_notif_sru` et `date_expir_reflexion`, 0/61, hors UI).
→ **Réutilisé** comme « Date de réception SRU (AR) ». Aucune migration DDL.
Whitelist fiche + store/update + historique + UI.

### OBJET 2 — Calcul (Robin)
`SruFinDelaiCalculator` + `ReservationObserver::saving` :
- réception renseignée → fin = réception + 10, **fiable**
- sinon envoi → fin = envoi + 10, **estimée** (badge ambre)
- aucune des 26 dates recalculée en masse
- historique : `date_ar_client` + `date_sru_fin_delai` dans le snapshot (#1164)

Impact lecture seule : colonne Prochaine échéance (#1172), retards (#1176),
carte Alertes résumé (#1177) — se mettent à jour **après** saisie dossier par
dossier (même colonne `date_sru_fin_delai`).

### OBJET 3 — date_expir_reflexion
**Notion DISTINCTE** du délai SRU (#1156). Conservée en saisie, libellé clarifié
« (consommateur) » + mention « Distinct du délai SRU ».
**Question à Robin** : Mélanie demande de retirer la saisie (0/61) — faut-il
cacher le champ tout en gardant la colonne, ou le laisser pour un usage futur ?

### OBJET 4 — date_notif_sru vs date_sru_envoi (inchangés)
| Champ | Depuis | Écrit par | Affiché | Pilote J+10 |
|-------|--------|-----------|---------|-------------|
| `date_notif_sru` | 2026-05-12 (`clients`) → résa 13/05 | saisie grille/fiche | « Date notif. SRU » | **non** |
| `date_sru_envoi` | 2026-05-13 (`acquereur_fiche…`) ; seed depuis notif si envoi null | saisie + Observer dirty | « Date envoi notification » | **oui** (repli) |

11 résas avec notif sans envoi → pas de fin calculée tant qu’envoi/réception absents.
**Question à Robin** : fusionner / déprécier `date_notif_sru` ? Avec l’AR on a
désormais 6 champs SRU utiles + statut.

### OBJET 5 — diag #1176
Les deux groupBy sont alignés sur **alive** + mêmes filtres statut ; les
soft-deleted sont libellés à part.

## DÉPLOIEMENT-TEST

1. `git pull` ; `optimize:clear` ; `view:clear` ; `journal:sync`
2. **Pas de migrate** (pas de DDL)
3. Smoke tests 1–9 du prompt (réception, estimation, historique, 26 inchangées,
   échéance/alertes cohérents, diag une répartition)
4. KPI remises / cohérence lots

## LEÇON

Le délai SRU court à la **réception**, pas à l’envoi. Un J+10 depuis l’envoi
sans marqueur « estimée » est un chiffre faux crédible (#1043). Réutiliser une
colonne morte (`date_ar_client`) vaut mieux qu’empiler un 7ᵉ champ.
