---
suivi: 1564
date: 2026-09-15
sujet: Division — état foncier obligatoire sur les filles
chantier: foncier / parcelles / division cadastrale
type: feature
statut: poussé
hash: 4bb15959
fichiers:
  - app/Http/Controllers/Foncier/ParcelleController.php
  - app/Services/Foncier/ParcelleOperationCadastraleService.php
  - resources/js/Pages/Foncier/Parcelles/Show.vue
  - tests/Unit/Parcelle1564SourceTest.php
  - tests/Unit/Foncier/ParcelleOperationCadastraleSourceTest.php
  - tests/Feature/Foncier/FoncierParcelleOperationCadastraleTest.php
  - database/data/journal_mises_a_jour_post_2026_06_12.php
  - public/build/
  - docs/suivi/SUIVI_1564_etat_foncier_division.md
---

# SUIVI #1564 — État foncier obligatoire sur les parcelles issues d’une division

## BASE GIT

HEAD de départ `f2fa430f` (fiche #1563). Hash feature `4bb15959`.
Bundle fiche parcelle : `Show-CCKEanVy.js` (+ CSS `Show-BM-qD3qU.css`).

## PROMPT ENVOYÉ

Modale Diviser : ajouter une colonne État foncier par fille, obligatoire,
vide par défaut (aligné #1509), liste = tous les ETATS_FONCIERS. Persister
l’état choisi, ne pas l’écraser par `reperee`. Mère : statut remplacée
inchangé, état foncier inchangé. Pas de lots commerciaux, pas de migration,
mécanique de division (filiations, détentions) intacte. Rebase Vite.
Push HECTAREG main.

## FICHES LUES

- **#1509 LEÇON** — `required` + `Rule::in`, placeholder « Choisir… »,
  pas de repli `reperee` (`applyServerDefaults(..., true)`). Impact :
  même contrat pour les filles de division.
- **#1155 LEÇON** — `remplacee` uniquement via le service d’opération ;
  pas de géométrie sur les filles. Impact : ne pas toucher au statut
  cadastral ni aux filiations.
- **#1561** — 14 valeurs `ETATS_FONCIERS` (dont Vendue client). Impact :
  le sélecteur reprend `optionsEtatsFonciers()`, pas un sous-ensemble.
- **#1562 / #1563** — `Parcelles/Show.vue` zone commune. Impact : rebase
  `origin/main` avant le build Vite.

## SYNTHÈSE

Colonne État foncier* sur chaque ligne fille (vide, `null`). Contrôle
client (`setError` avant POST) et serveur (`filles.*.etat_foncier`
required + `Rule::in`). `preparerFille(..., true)` passe l’état à
`applyServerDefaults($attrs, true)` : plus de repli `reperee` sur la
division. La réunion appelle toujours `preparerFille` sans le 4e
argument → comportement inchangé. La mère n’écrit que
`statut_cadastral = remplacee`. Pas de lots commerciaux.

## DÉPLOIEMENT-TEST

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

Pas de migration. Cas : colonne vide ; refus sans état (client +
serveur) ; deux filles d’états différents persistés ; mère remplacée
état inchangé ; 3e fille ; filiations inchangées.

## LEÇON

`parcelles.etat_foncier` NOT NULL DEFAULT `reperee` : si
`applyServerDefaults` est appelé sans `$etatFoncierSaisi = true`,
toute fille de division naît en Repérée même si le POST porte une
valeur. La réunion reste sur le défaut volontaire. Ne pas recopier
l’état de la mère : chaque fille a une destination différente.
