---
suivi: 1156
date: 2026-08-03
sujet: Commercial — câbler plan PDF, dates suivi, notaire (#67/#96/#82)
chantier: commercialisation
type: feature
statut: poussé
hash: 69ae5378
fichiers:
  - resources/js/Components/Commercialisation/LotsGrillePanel.vue
  - resources/js/Components/Commercialisation/FournisseurSearchSelect.vue
  - resources/js/Pages/Programmes/Acquereur/Show.vue
  - app/Http/Requests/UpdateAcquereurFicheRequest.php
  - app/Http/Controllers/FournisseurController.php
  - app/Http/Controllers/LotCommercialController.php
  - app/Http/Controllers/AcquereurController.php
  - app/Http/Controllers/CommercialisationController.php
  - app/Http/Controllers/ReservationController.php
  - routes/web.php
  - database/data/journal_mises_a_jour_post_2026_06_12.php
  - public/build/
  - docs/suivi/SUIVI_1156_commercial_plan_dates_notaire.md
---

## PROMPT ENVOYÉ

SUIVI #1156 — câbler l’existant (plan upload, 3 dates suivi, notaire).
Rédigé avant #1157→#1162 ; exécuté après. Pas de migration / structure neuve.

## SYNTHÈSE

### Fiches lues

- `SUIVI_1154` — plan back existant sans Vue POST ; 5 champs SRU ; notaire
  whitelist FK seule + 3985 options ; date_envoi_notaire hors whitelist fiche.
- `SUIVI_1160` / `SUIVI_1162` — Show/grille/whitelist refaits ; uploadPlan déjà
  sous `lots.ecriture` (#1162).

### #67 — Upload plan

**Disparu au commit `8fd15594` (#555, 03/07/2026)** : le refactor « pictos /
plan PDF cliquable » a **remplacé** l’upload grille (`triggerPlanUpload` /
`FormData` POST `/plan`) par la seule consultation PDF. Rien d’autre métier
emporté hors cette UI d’upload.

Rebranché dans la **modale crayon** (édition lot) : état présent/absent,
lien consulter, téléverser / remplacer ; ancien fichier disque supprimé au
remplacement. Stockage local inchangé.

Permission : `uploadPlan` déjà `lots.ecriture` (#1162) — signalé, non
retravaillé ici.

### #96 — Cartographie SRU (conclusion)

| Champ | Rôle | Auto |
|-------|------|------|
| `date_notif_sru` | Notif. SRU « métier » (saisie) | non |
| `date_sru_envoi` | Envoi notification (pilote le calcul) | dirty → Observer |
| `date_sru_fin_delai` | **Expiration délai SRU J+10** | = envoi + 10 j |
| `sru_statut` | en_attente / en_cours / … | → en_cours si envoi |
| `date_expir_reflexion` | Délai de réflexion (autre notion) | **aucun** auto |

**Conclusion #96** : la demande Mélanie « expiration délai SRU J+10 de
notification » correspond à **`date_sru_fin_delai`** (déjà calculée depuis
`date_sru_envoi`). **Ne pas** dupliquer sur `date_expir_reflexion`. Affichage
lecture seule ; les 3 dates de suivi (`date_expir_reflexion`,
`date_preuve_negligence`, `date_envoi_notaire`) en saisie (modale + fiche).

### #82 — Notaire

**Après #1160 (avant ce lot)** : whitelist fiche = **FK**
`notaire_fournisseur_id` + `notaire_double_minute_fournisseur_id` déjà
présentes. Textes `notaire` / `notaire_double_minute` **non** whitelistés →
échec **silencieux** si postés. Bug Melania « une fois sur deux » = surtout
Select 3985 options (filtre client fragile), pas une absence totale de FK.

**Après #1156** :
- recherche serveur `/fournisseurs/search` (min 2 car.) — plus de 3985 au
  montage (Commercialisation `fournisseurs: []` ; fiche = titulaireIds pin)
- texte legacy **lecture seule** si FK nulle
- `withValidator` : tout champ hors whitelist → **erreur visible**
- API store/update : plus d’écriture texte `notaire*`

Data-fix 19 legacy texte → hors périmètre (signalé).

### Whitelist fiche — avant → après

**Avant (#1160)** : FK notaire OK ; **pas** les 3 dates suivi ; silence sur
clés inconnues.

**Après** : + `date_expir_reflexion`, `date_preuve_negligence`,
`date_envoi_notaire` ; refus explicite `notaire`, `date_sru_fin_delai`, etc.

## DÉPLOIEMENT-TEST

1. `git pull origin main`
2. `php artisan route:clear` + `view:clear` + `journal:sync`
3. Tests 1–10 du prompt (plan, dates, notaire, filtre #1158, 59 résas)

## LEÇON

Un commit « UX plan » peut supprimer l’upload en ne gardant que la vue.
Cinq champs SRU proches ≠ un seul besoin : cartographier avant d’ajouter.
Whitelist FormRequest sans rejet des clés inconnues = échec silencieux.
