---
suivi: 1825
date: 2026-10-08
sujet: Carte Achat et retrait du bloc orphelins, liste Parcelles
chantier: foncier
type: evolution
statut: poussé
hash: 9462cd6c6
fichiers:
  - app/Services/Foncier/ParcelleProspectionQuery.php
  - app/Http/Controllers/Foncier/ProspectionController.php
  - resources/js/Pages/Foncier/Prospection/Index.vue
  - database/data/journal_mises_a_jour_post_2026_06_12.php
  - public/build/manifest.json
---

# SUIVI #1825 — carte Achat, liste Parcelles

## PROMPT ENVOYÉ

Sur Foncier > Parcelles : ajouter la carte Achat (somme des prix d’achat répartis), mêmes règles que Estimé et Cible. Retirer le bloc Propriétaires sans parcelle et la requête qui ne sert qu’à lui. Masquer la ligne « N ligne(s) · N requête(s) SQL » sur cet écran. Ne pas modifier Estimé, Cible, les colonnes, les filtres, le tri, la pagination, l’export Excel ni les autres listes de propriétaires.

## Fiches lues

- #1770 LEÇON : ne pas additionner la colonne €/m² pour un total en euros. L’achat de la carte est le montant réparti (`montant_ventile` du dernier acte d’achat), pas la somme des €/m². Estimé et Cible ne sont pas recalculés.
- #1199 LEÇON : les orphelins étaient affichés exprès. Robin demande maintenant de retirer le bloc. La donnée en base n’est pas supprimée.

## SYNTHÈSE

La carte Achat est dans `totauxEnsembleFiltre`, sur le même clone filtré et le même `hors_groupe = false` que Estimé et Cible. Le montant est `ActeRepartitionService::sqlMontantDernierAchat()` (répartition du prix de l’acte). Un montant vide compte 0 (`COALESCE`). Le format affiché est `formatEuroEntier`, comme Estimé et Cible. L’infobulle (i) a une phrase de plus pour l’achat. Les `selectRaw` d’Estimé et de Cible sont inchangés.

Requêtes retirées, parce qu’elles n’alimentaient que le bloc du bas de `/foncier/prospection` :

- `ProspectionController::proprietairesSansParcelle()` — propriétaires sans parcelle actuelle, 100 lignes.
- `ProspectionController::parcellesSansProprietaire()` — parcelles actives sans propriétaire, affichées dans ce même bloc en mode propriétaire.

Aucune suppression de données, aucune migration. Les écrans Propriétaires et les panneaux `ParcellePanel`, `ProprietairePanel`, `CommunePanel` ne sont pas modifiés.

La ligne technique n’est pas un mode debug global (`APP_DEBUG`). Elle venait du drapeau `voirPiedSql()` : vrai seulement pour le groupe GS_DSI, sur cette page. Le pied a été retiré du modèle de `Prospection/Index.vue` seulement. Les autres écrans qui ont leur propre compteur SQL le gardent. Le drapeau est forcé à faux dans les trois payloads de cette page.

### Mapping

Pas de nouveau contrôle de choix. La carte affiche `achat_total` (euros), somme de `acte_parcelle.montant_ventile` du dernier acte qui n’est pas une vente.

## DÉPLOIEMENT-TEST

```
git pull origin main
php artisan optimize:clear
php artisan view:clear
php artisan journal:sync
```

Pas de migration. Pas de `route:clear`.

1. Parcelles sans filtre : quatre cartes. Estimé 3 179 630 € et Cible 25 735 423 € si la base n’a pas bougé. Achat = somme des prix d’achat, hors groupe exclu, prix vide = 0.
2. Filtre commune : les quatre cartes suivent le filtre.
3. Le bloc Propriétaires sans parcelle et la ligne « requête(s) SQL » sont absents.

## LEÇON

Le total en euros d’un prix au mètre carré n’est pas la somme de la colonne. Pour l’achat, la source est le montant ventilé, la même que la colonne Achat qui en dérive le €/m². Ne pas réintroduire le bloc orphelins : le retrait est voulu. Ne pas réafficher le pied SQL de cette page : ce n’était pas le debug Laravel, seulement GS_DSI, et les autres écrans ont le leur.
