---
suivi: 1876
date: 2026-10-14
sujet: Filtres immédiats de la liste des parcelles
chantier: foncier / parcelles
type: correctif
statut: poussé
hash: 90d24f079
fichiers:
  - resources/js/Pages/Foncier/Prospection/Index.vue
  - tests/Unit/ProspectionFiltresEntonnoir1876Test.php
  - database/data/journal_mises_a_jour_post_2026_06_12.php
  - public/build/
  - docs/suivi/SUIVI_1876_filtres_prospection_entonnoir.md
---

# SUIVI #1876 — filtres immédiats de la liste des parcelles

## Fiches lues

- #1785 : les entonnoirs écrivent `etats[]`, `natures[]`, `zones[]`, `actes[]`, `referents[]`. Les compteurs d’une colonne excluent le filtre de cette colonne. Leçon retenue : ne pas recalculer les facettes ni les formules.
- #1829 : la carte lit `nb_statut_*`. `valo` se lit `estime`. Rien de ces formules n’est touché.
- #1834 : `normalizeFilters` doit laisser passer `proprietaire`. Le regroupement n’est pas modifié.

Le diagnostic #1874 n’est pas dans `docs/suivi/` (phase 1). Il décrit le passage du tableau déjà déballé à `poserListe`.

## PROMPT ENVOYÉ

Variante A : filtrage immédiat à la coche. Cinq fonctions `onEtats`, `onNatures`, `onZones`, `onActes`, `onReferents` sur le modèle de `onDestinations`. Plus aucun `poserListe(identifiant,` dans le template. Aide Statut : « Vendue » à la place de « Cédée », valeur `cedee` inchangée. Ne pas toucher totaux, formules, groupes, facettes, requête, contrôleur.

## SYNTHÈSE

Dans le template, `etatsCoches` (et natures, zones, actes, referents) est déjà le tableau. `poserListe` faisait `refListe.value = …` sur ce tableau, donc la ref ne changeait pas, l’URL non plus. Les cinq fonctions passent la ref, comme `onDestinations`. L’en-tête de colonne et le menu « + Filtre » appellent ces fonctions. Destination, Constr., Commune, À compléter et le select Utilisateur sont inchangés.

### Mapping

| Libellé affiché | Valeur postée | Libellé relu |
| --- | --- | --- |
| Repérée | etats[]=reperee | Repérée |
| Opportunité | etats[]=opportunite | Opportunité |
| En négociation | etats[]=en_negociation | En négociation |
| Sous compromis | etats[]=sous_compromis | Sous compromis |
| Détenue | etats[]=detenue | Détenue |
| Vendue | etats[]=cedee | Vendue |
| Remplacée | etats[]=remplacee | Remplacée |
| Explorée | etats[]=exploree | Explorée |
| Sans issue | etats[]=sans_issue | Sans issue |
| Nature (identifiant) | natures[]=id | libellé de la nature |
| Non renseignée | natures[]=non_renseignee | Non renseignée |
| Zone (texte stocké) | zones[]=texte | le texte stocké |
| À compléter (zone) | zones[]=a_completer | À compléter |
| À compléter (acte) | actes[]=a_completer | À compléter |
| Avec acte | actes[]=avec_acte | Avec acte |
| Sans acte | actes[]=sans_acte | Sans acte |
| Responsable (identifiant) | referents[]=id | initiale et nom |
| Sans responsable | referents[]=sans | Sans |

## DÉPLOIEMENT-TEST

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

Pas de migration. Ne pas lancer npm sur le serveur.

Bundle : `assets/Index-ndPZasSu.js`.

Tests locaux : le template ne contient plus `poserListe(identifiant,`. PHPUnit `ProspectionFiltresEntonnoir1876Test` : OK (1 test, 18 assertions). `php artisan journal:controler` : Journal conforme : 280 entrées. Les comptes 253 / 542 se vérifient sur la liste déployée (vue complète, regroupement Commune, utilisateur Tous).

## LEÇON

Dans le template, un `ref` est déjà déballé. `poserListe(etatsCoches, v)` écrit sur le tableau, pas sur la ref. Passer la ref depuis une fonction du script, comme `onDestinations`.
