---
suivi: 1088
date: 2026-07-30
sujet: Module Foncier — saisie parcelle enrichie + multi propriétaire
chantier: module-foncier
type: feature
statut: poussé
hash: ff3c1c19
fichiers:
  - database/migrations/2026_07_30_160000_add_lieu_dit_to_parcelles_table.php
  - app/Services/Foncier/ParcelleCreationService.php
  - app/Http/Controllers/Foncier/ParcelleController.php
  - app/Http/Controllers/Foncier/ProprietaireController.php
  - app/Models/Parcelle.php
  - resources/js/Pages/Foncier/Parcelles/Index.vue
  - resources/js/Pages/Foncier/Parcelles/Form.vue
  - resources/js/Pages/Foncier/Parcelles/Show.vue
  - resources/js/Pages/Foncier/Proprietaires/Show.vue
  - routes/web.php
  - tests/Feature/Foncier/FoncierSaisieParcelleEnrichieTest.php
  - tests/Feature/Foncier/FoncierSaisieParcelleEnrichieSourceTest.php
  - database/data/journal_mises_a_jour_post_2026_06_12.php
  - docs/suivi/SUIVI_1088_foncier_saisie_parcelle_enrichie.md
  - public/build/
---

## PROMPT ENVOYÉ

SUIVI #1088 — saisie rapide enrichie (zonage, constructible, lieu-dit) + multi-lignes
depuis fiche propriétaire. Critère « connu au moment de l’acte ».

## Pivot détention (#1085)
**Absent** : `parcelle_proprietaire` = `quote_part` uniquement. Rattachement batch
= attach/update pivot quote_part (détenteur courant implicite). Pas de
`date_debut_detention` à renseigner.

## Chemin serveur partagé
`ParcelleCreationService::validateAndPrepare` + `applyServerDefaults` :
- `ParcelleController::store` (unitaire / saisie rapide)
- `ProprietaireController::storeParcellesBatch` → `createBatchForProprietaire`

## Mapping

| Libellé UI | Posté | Colonne DB | Imposé serveur |
|------------|-------|------------|----------------|
| Constructible Non renseigné | null | constructible NULL | — |
| Constructible Oui | true / 1 | 1 | — |
| Constructible Non | false / 0 | 0 | — |
| Zonage PLU | string libre | zonage_plu | — |
| Lieu-dit | string | lieu_dit | — |
| (état) | ignoré si posté | etat_foncier | toujours `reperee` |
| (statut cad.) | ignoré | statut_cadastral | toujours `active` |
| Quote-part | 0–1 | pivot.quote_part | — |

## Closures
Aucune nouvelle.

## authorize()
Contrôleurs touchés : pas d’`$this->authorize` (assertGestion + middleware).

## Bundles

app=`assets/app-DjX8cb_3.js` · Parcelles Index=`assets/Index-D07b1hKE.js` · Proprietaires Show=`assets/Show-HHnE8S-q.js`

## DÉPLOIEMENT
`git pull` · `migrate --force` · `view:clear` · `journal:sync`

## LEÇON
« Déclarer ≠ instruire » ne signifie pas « moins de champs ». Le bon critère est
**connu ≠ inconnu au moment de l’acte** : le zonage sous les yeux du prospecteur
appartient à la déclaration ; l’arpentage géomètre et le risque inondable restent
de l’instruction. Le #1080/#1083 a tranché trop tôt sur le volume de champs.
