---
suivi: 1185
date: 2026-08-04
sujet: Acquéreurs — en-tête de groupe multi-lots (lisibilité)
chantier: commercialisation
type: feature
statut: poussé
hash: 0790f39a
fichiers:
  - resources/js/Components/Programmes/AcquereursGrillePanel.vue
  - app/Support/Commercial/AcquereursGrilleGroupSorter.php
  - tests/Unit/AcquereursGrille1172Test.php
  - database/data/journal_mises_a_jour_post_2026_06_12.php
  - public/build/
  - docs/suivi/SUIVI_1185_acquereurs_groupe_entete.md
---

## PROMPT ENVOYÉ

SUIVI #1185 — option A : ligne d’en-tête de groupe + sous-lignes lot/prix
pour les réservations multi-lots (cas LACROUX A104+69). Un seul lot = une
ligne. Affichage seul. HEAD annoncé 60324579.

## SYNTHÈSE

### Fiches lues
- `SUIVI_1172` — grille Acquéreurs, tri par blocs, Σ sous le prix (départ).
  LEÇON : trier les **blocs**, pas DataTable natif.
- `SUIVI_1176` — retards / alertes SRU / filtre En retard ; ne pas casser.
- Zone commune AcquereursGrillePanel (#1172→#1177) — rebase `origin/main`
  = `60324579` avant build.

### Structure retenue (option A)
| Cas | Rendu |
|-----|-------|
| 1 lot | Une ligne unique (inchangé) |
| N lots | En-tête dossier (acquéreur +N, N lots, total, statut, financement, SRU, notaire, échéance, alertes, actions) + sous-ligne par lot (└ numéro, type, prix lot) |

Le « Σ » disparaît : total = colonne Prix de l’en-tête (`prix_vente_reservation_ttc` lu, non recalculé). Sous-lignes = `prix_vente_lot_ttc` pivot.

### Tri — sémantique Prix
**Total de réservation** (`prix_vente_reservation_ttc`), pas le prix du lot
principal. Ex. LACROUX classe à 284 900 €, pas 264 900 €. Miroir PHP
`AcquereursGrilleGroupSorter` + JS. Les autres colonnes : valeur du
représentant (principal) ; le groupe reste entier.

### Recherche lot secondaire
**Groupe entier** affiché si un lot du groupe matche (ex. « 69 » → A104 + 69).
Évite un total tronqué / une réservation coupée.

### Compteur
Toujours des **lots** : `N / total lots` = `lotsFiltres.length` (après
élargissement groupe) / `props.lots.length`. Les lignes d’en-tête ne sont
**pas** comptées.

### Garde-fous
Aucune migration / écriture / calcul prix. KPI remises et cohérence lots
hors scope (affichage seul).

## DÉPLOIEMENT-TEST

1. `git pull` ; `optimize:clear` ; `view:clear` ; `journal:sync`
2. Smoke LACROUX : en-tête 284 900 + 2 sous-lignes ; pas de Σ ; 1 lot = 1 ligne
3. Tri chaque colonne → groupe entier ; recherche « 69 » → groupe ; compteur lots
4. `php artisan test --filter=AcquereursGrille1172Test`
5. `php tools/diag/diag_remises_kpi_1168.php` → 107 304,48 €
6. `php artisan commercial:coherence-reservation-lots` → 0

## LEÇON

Un badge « ×2 » + fond à 2 % ne relie pas deux lignes aux yeux : il faut une
**structure** (en-tête vs détail) et un marqueur fort (bordure + └). Ne pas
mélanger total et prix lot dans la même cellule. Compteur = lots, jamais
lignes de tableau (sinon les en-têtes faussent N).
