---
suivi: 1530
date: 2026-09-14
sujet: Simplifier les actes d’acquisition — liste groupe, plus de forçage acquise
chantier: foncier / actes / parcelles
type: feature
statut: poussé
hash: f887e4e5
fichiers:
  - app/Services/Foncier/ActeAcquisitionService.php
  - app/Services/Foncier/ParcelleCreationUnitaireService.php
  - app/Services/Foncier/ParcelleProspectionQuery.php
  - app/Http/Controllers/Foncier/ProspectionController.php
  - app/Http/Controllers/Foncier/ActeFoncierController.php
  - app/Models/ActeFoncier.php
  - resources/js/Pages/Foncier/Prospection/Index.vue
  - resources/js/Components/Foncier/Prospection/ParcellePanel.vue
  - resources/js/Components/Foncier/Prospection/ProspectionParcellesSublist.vue
  - resources/js/Pages/Foncier/Parcelles/Index.vue
  - resources/js/Pages/Foncier/Parcelles/Create.vue
  - resources/js/Pages/Foncier/ActesFonciers/Show.vue
  - tests/Unit/ActeSimplification1530SourceTest.php
  - tests/Feature/Foncier/FoncierActesDetentionSocleTest.php
  - tests/Feature/Foncier/FoncierActe1127Test.php
  - tests/Feature/Foncier/FoncierParcelleUnitaire1510Test.php
  - database/data/journal_mises_a_jour_post_2026_06_12.php
  - public/build/
  - docs/suivi/SUIVI_1530_actes_simplification.md
---

# SUIVI #1530 — PHASE 2 : simplifier les actes d’acquisition

## PROMPT ENVOYÉ

Suite #1528. Afficher « Détenue par le groupe » dans la liste Prospection
quand `societe_detentrice_id` est renseigné ; filtre dédié ; ne plus
forcer `etat_foncier = acquise` ; masquer surface_acquise_m2 et
verrouille (sans DROP) ; afficher les parcelles soft-deleted sur la
fiche acte ; aligner rattacher() sur creer(). Aucune reprise, aucune
chaîne de détention, pas de bouton retirer/supprimer.

## BASE GIT

Rebase sur `origin/main` à jour **avant** le build Vite (zone commune
Prospection / ParcellePanel).

## FICHES LUES

- **#1528 LEÇON** — « 0 propriétaire » = succès de R5, pas un trou.
  Liste lit `proprietairesActuels`, ignore `societe_detentrice_id`.
  Forcer `acquise` se heurte à réserve foncière (#1446). Impact : payload
  booléen + filtre `whereNotNull`, retirer L153-155, withTrashed fiche.
- **#1510 LEÇON** — rattacher = `attach` seul. Impact : appeler
  `appliquerDetentionGroupe` après attach.
- **#1246 LEÇON** — détention groupe = colonne société, pas le pivot.
  Impact : ne pas ressusciter R7, ne pas mélanger le nom de société
  dans la colonne propriétaires.

## MAPPING UI ↔ BACK (filtre)

| Libellé affiché | Valeur postée | Colonne / critère DB | Libellé back |
|---|---|---|---|
| Détenue par le groupe | `1` | `parcelles.societe_detentrice_id IS NOT NULL` | `filters.detenue_par_le_groupe` = true |
| (filtre inactif) | absent | aucun | `false` |

Colonne liste : libellé fixe « Détenue par le groupe » si
`detenue_par_le_groupe` (bool payload = `societe_detentrice_id !== null`).
Jamais `entites.nom` dans cette colonne.

## SYNTHÈSE

1. **Liste** — `serializeParcelleLigne` envoie `detenue_par_le_groupe`.
   Prospection (colonne Propriétaire(s)), sous-liste commune, ParcellePanel
   et Index parcelle : mention distincte ; plus de « 0 propriétaire » seul
   si le groupe détient.
2. **Filtre** — `whereNotNull('parcelles.societe_detentrice_id')`. La
   recherche `q` sur les vendeurs n’est pas élargie aux sociétés.
3. **Acte** — `appliquerDetentionGroupe` : clôture pivot + pose société.
   Plus de `etat_foncier = acquise`. `rattacher` (#1510) appelle la même
   méthode.
4. **Écran acte** — surface partielle et verrou masqués (colonnes
   conservées). Parcelles : `withTrashed` + hors ACL visibilité, badge
   « supprimée ».

## DÉPLOIEMENT-TEST

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

Pas de migrate. Pas de npm sur OVH.

1. AB 0571 → « Détenue par le groupe », plus « 0 propriétaire » seul.
2. Parcelle vendeurs sans acte → inchangée.
3. Filtre « Détenue par le groupe » → les 2 parcelles concernées.
4. Nouvel acte sur réserve foncière → état inchangé, société posée.
5. Fiche acte → plus de surface acquise ni verrou.
6. Acte #1 → parcelle supprimée visible avec mention.
7. Rattacher une parcelle → société détentrice = acquéreur de l’acte.

## LEÇON

Détention groupe = `societe_detentrice_id`, pas le compteur
`proprietairesActuels`. Un acte ne doit pas écraser `etat_foncier` :
détention ≠ destination. `rattacher` et `creer` doivent partager le même
effet (`appliquerDetentionGroupe`), sinon deux chemins, deux bugs.
`withTrashed` sur `ActeFoncier::parcelles()` évite un acte « vide » après
soft-delete. Zone commune Prospection : rebase avant Vite.
