---
suivi: 1568
date: 2026-09-16
sujet: Parcelle — destination d’intention (colonne dédiée)
chantier: foncier / parcelles
type: feature
statut: poussé
hash: 99bc7682
fichiers:
  - app/Support/Foncier/FoncierReferentiels.php
  - database/migrations/2026_09_16_120000_add_destination_to_parcelles.php
  - app/Models/Parcelle.php
  - app/Services/Foncier/ParcelleCreationService.php
  - app/Services/Foncier/FieldAuditService.php
  - app/Services/Foncier/ParcelleProspectionQuery.php
  - app/Http/Controllers/Foncier/ParcelleController.php
  - app/Http/Controllers/Foncier/ProspectionController.php
  - resources/js/Pages/Foncier/Parcelles/Show.vue
  - resources/js/Pages/Foncier/Prospection/Index.vue
  - tests/Unit/Parcelle1568SourceTest.php
  - database/data/journal_mises_a_jour_post_2026_06_12.php
  - public/build/
  - docs/suivi/SUIVI_1568_destination_parcelle.md
---

# SUIVI #1568 — Destination d’intention sur la parcelle

## PROMPT ENVOYÉ

Séparer la destination (« qu’est-ce qu’on compte en faire ») de l’état
foncier. Ce lot : colonne `parcelles.destination`, 7 valeurs, reprise
type_foncier puis etat_foncier, fiche inline, liste colonne + filtre SQL.
Ne pas toucher à `etat_foncier`. Ne pas supprimer `type_foncier`.
Push `origin/main`.

## FICHES LUES

- **#1447 LEÇON** — `InlineEditableField` ; ne pas extraire un composant.
  Impact : même composant pour Destination sous État foncier.
- **#1446** — fusion État + Type foncier dans `etat_foncier` ; Type
  foncier encore en colonne. Impact : `TYPES_FONCIER` conservé ; reprise
  depuis `type_foncier` puis `etat_foncier`.
- **#1533 LEÇON** — liste = `Prospection/Index.vue` ; totaux SQL ; pas
  d’`overflow-x-hidden`. Impact : 12e colonne Destination, filtre en SQL
  dans `ParcelleProspectionQuery`.
- **#1567** — `Show.vue` zone commune, responsable tout juste déployé.
  Impact : rebase Vite sur `origin/main` ; ne pas retoucher le responsable.
- **#1564 LEÇON** — `etat_foncier` à la division. Impact : création des
  filles via `createPrepared` pose `a_definir` sans toucher la division.

## SYNTHÈSE

Destination = intention, une valeur par parcelle, indépendante de
l’avancement. Défaut `a_definir`. Pas de multi-destination.

### Mapping sélecteur / filtre

| Libellé affiché | Valeur postée | Colonne DB | Libellé back |
|---|---|---|---|
| À définir | `a_definir` | `parcelles.destination` | Destination |
| Support d'opération | `support_operation` | `parcelles.destination` | Destination |
| Bouchon | `bouchon` | `parcelles.destination` | Destination |
| Réserve | `reserve` | `parcelles.destination` | Destination |
| Cession | `cession` | `parcelles.destination` | Destination |
| Échange | `echange` | `parcelles.destination` | Destination |
| Rétrocession | `retrocession` | `parcelles.destination` | Destination |

### Reprise

`type_foncier` reprenable (`reserve_fonciere`→`reserve`, `bouchon`,
`cession`, `retrocession`) sinon mêmes codes dans `etat_foncier`, sinon
`a_definir`. `opportunite` n’est pas une destination.

## DÉPLOIEMENT-TEST

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

Relever dans le log migrate :
`[#1568] Reprise destination — total=… a_definir=… support_operation=… bouchon=… reserve=… cession=… echange=… retrocession=…`

Attendu prod (10 parcelles vivantes) : 1 `etat_foncier=reserve_fonciere`
→ `reserve` ; 3 `type_foncier=opportunite` → `a_definir`. Si le
comptage diverge, ne pas changer la règle.

## LEÇON

`destination` est une intention, pas un avancement : elle se saisit dès
le repérage. `opportunite` (type foncier) n’a pas d’équivalent et reste
`a_definir`. Une seule destination ; une parcelle à plusieurs usages se
divise. Ne pas retirer `type_foncier` / `TYPES_FONCIER` tant que #1569
n’a pas repris l’état. Filtre liste = SQL (`parcelles.destination`),
pas un filtre JS.
