---
suivi: 1246
date: 2026-08-07
sujet: Société détentrice parcelle (colonne entites) — abrogation R7
chantier: foncier / parcelles / patrimoine
type: feature
statut: poussé
hash: 4469bc27
fichiers:
  - database/migrations/2026_08_07_161000_add_societe_detentrice_id_to_parcelles_table.php
  - app/Models/Parcelle.php
  - app/Services/Foncier/ActeAcquisitionService.php
  - app/Services/Foncier/PatrimoineFoncierQuery.php
  - app/Services/Foncier/ParcelleCreationService.php
  - app/Services/Foncier/FieldAuditService.php
  - app/Http/Controllers/Foncier/ParcelleController.php
  - app/Http/Controllers/Foncier/ActeFoncierController.php
  - app/Http/Controllers/Foncier/PatrimoineFoncierController.php
  - app/Http/Controllers/Foncier/ProspectionController.php
  - resources/js/Pages/Foncier/Parcelles/Show.vue
  - resources/js/Pages/Foncier/Patrimoine/Index.vue
  - resources/js/Pages/Foncier/Prospection/Index.vue
  - resources/js/Components/Foncier/Prospection/ProspectionSaisieDialog.vue
  - public/build/
  - database/data/journal_mises_a_jour_post_2026_06_12.php
  - docs/suivi/SUIVI_1246_societe_detentrice_parcelle.md
---

# SUIVI #1246 — société détentrice sur parcelle / abrogation R7

## PROMPT ENVOYÉ

Colonne `parcelles.societe_detentrice_id` → `entites` ; alimentation auto par l’acte (greffe R5) ;
saisie manuelle historique ; retrait R7 ; Patrimoine sur la colonne ; correction grille #1242.

## FICHES LUES

- `#1244` — diag prod : 0 `societe_groupe`, 0 `entite_id`, 0 pivot détention ; décision Robin = colonne
- `#1242` — grille multi-lignes (chevauchement zonage/constructible) ; LEÇON : trop de colonnes
- `#1092` / `#1099` — R5/R7, `entites.id`, migration rejouable
- `#1120` — Patrimoine via pivot societe_groupe (remplacé ici)
- `#1182` — audit explicite si bypass Eloquent
- `#1197` — édition inline
- `#1217` — dépliage commune (ne pas dégrader)
- `#1241`/`#1243`/`#1245` — SharePoint, fichiers disjoints OK

## SYNTHÈSE

### Objet 1 — Migration
- Table `entites`, PK `id` (bigint unsigned) — vérifié migration `2026_05_07_142000`
- Colonne `parcelles.societe_detentrice_id` nullable, FK `parcelles_societe_detentrice_fk` ON DELETE SET NULL, index
- Rejouable ; aucun backfill

### Objet 2 — Acte / R5
- Colonne acte : `actes_fonciers.societe_acquereur_id` → `entites`
- Greffe dans `ActeAcquisitionService::creer` après clôture détentions externes :
  pose `societe_detentrice_id` = société acquéreuse ; audit Eloquent ; flash si écrasement
- **Règle** : l’acte **prime** toujours sur la saisie manuelle

### Objet 3 — Saisie manuelle
- Fiche parcelle : select inline parmi entités actives ; verrouillé si source = acte
- Grille multi-lignes : colonne société détentrice
- Indicateur « Sans acte » si société sans acte ERP

### Objet 4 — R7 abrogée
- **À reporter au CDC foncier** : R7 (miroir `proprietaires` type `societe_groupe` / `entite_id`) est **abrogée**
- Remplacée par `parcelles.societe_detentrice_id`
- `proprietaires.entite_id` **conservée** (dette, suppression irréversible différée)
- `type_proprietaire` : pas d’ajout `societe_groupe` (valeur ne doit jamais être créée)
- Preuve non-exécution R7 : diag #1244 prod (`entite_id` 0/14, aucun `societe_groupe`) + code R7 retiré

### Objet 5 — Patrimoine
- Avant : filtre pivot `proprietairesActuels` type `societe_groupe` + `entite_id`
- Après : `whereNotNull(societe_detentrice_id)` + eager `societeDetentrice:id,nom,siret` + actes
- Filtre UI par société (`?entite_id=`)

### Objet 6 — Grille
- Colonnes visibles : Section*, Numéro*, Commune*, Surface, Société détentrice
- Zonage / constructible / type foncier / lieu-dit → fiche (création rapide lisible)

## DÉPLOIEMENT-TEST

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

## LEÇON

- Société du groupe ≠ propriétaire à négocier : ne pas mélanger dans `proprietaires`
- Une colonne FK bat un miroir R7 jamais exécuté
- Grille multi-lignes : 5 colonnes max dans une modale, le reste sur la fiche
- Acte prime → verrouiller l’édition manuelle quand un acte existe (pas seulement avertir)
