---
suivi: 1532
date: 2026-09-14
sujet: Détention par le groupe — saisie directe sur la parcelle
chantier: foncier / parcelles / détention
type: feature
statut: poussé
hash: d6da145e
fichiers:
  - app/Support/Foncier/DetentionGroupeSaisie.php
  - app/Http/Controllers/Foncier/ParcelleController.php
  - app/Http/Controllers/Foncier/ProspectionController.php
  - app/Services/Foncier/ParcelleCreationUnitaireService.php
  - app/Services/Foncier/ParcelleCreationService.php
  - resources/js/Pages/Foncier/Parcelles/Show.vue
  - resources/js/Pages/Foncier/Parcelles/Create.vue
  - resources/js/Pages/Foncier/Prospection/Index.vue
  - resources/js/Components/Foncier/Prospection/ProspectionSaisieDialog.vue
  - tests/Unit/DetentionGroupeSaisie1532Test.php
  - tests/Unit/DetentionGroupe1532SourceTest.php
  - tests/Unit/Parcelle1463SourceTest.php
  - tests/Unit/Parcelle1509SourceTest.php
  - tests/Unit/Parcelle1510SourceTest.php
  - tests/Feature/Foncier/FoncierParcelleUnitaire1510Test.php
  - database/data/journal_mises_a_jour_post_2026_06_12.php
  - public/build/
  - docs/suivi/SUIVI_1532_detention_groupe_saisie_directe.md
---

# SUIVI #1532 — La détention par le groupe devient une saisie directe

## PROMPT ENVOYÉ

Le #1530 affiche « Détenue par le groupe » dès que
`parcelles.societe_detentrice_id` est renseigné. Cas prod AP 0076 (id 2104) :
société HECTARE, zéro acte, état en négociation, propriétaire externe actif
(SCI LOU PLA) — mention contradictoire. Décision : la propriété du groupe
est une information saisie directement, indépendante de l’acte. L’acte
devient une pièce justificative qui confirme quand il existe. Rendre
`societe_detentrice_id` saisissable (fiche, création unitaire, modale
multiparcelle). Ne pas clôturer les propriétaires externes sur saisie
manuelle. Auditer. Droits via m365GroupNames() brut. SQL de contrôle.
Aucune migration. Ne pas modifier ActeAcquisitionService.

## BASE GIT

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

## FICHES LUES

- **#1530 LEÇON** — mention liste déjà branchée sur `societe_detentrice_id` ;
  ne pas y toucher. Acte pose déjà la société via `appliquerDetentionGroupe`.
- **#1509 LEÇON** — société retirée de la modale (chevauchement `min-w-[14rem]`).
  Réintroduction **voulue** (#1532) : 6e colonne, pas de `min-w-[14rem]`,
  pas de `overflow-x-hidden`, dialog élargi à 92rem.
- **#1463 LEÇON** — fiche : champ visible seulement si `source === 'acte'`,
  `:editable="false"`. Inverse : toujours visible, éditable hors acte.
- **#1510 LEÇON** — création unitaire : `groupe` forçait un acte. Lever
  ce verrou (RadioButton Non + validator after).
- **#1246** — colonne existante ; inline verrouillé si actes ; audit Eloquent.

## SYNTHÈSE

`societe_detentrice_id` se saisit et se vide sur la fiche (hors acte),
à la création unitaire (groupe + acte Non autorisé) et dans la modale
multiparcelle. Un acte continue de poser la société (inchangé). Saisie
manuelle : pas de clôture des propriétaires externes (option C en
attente d’arbitrage A/B/C). Droits brut GS_HECTARE / GS_DSI /
GS_ADMIN_ERP. Audit déjà dans `Parcelle::auditedFields()`.

## DÉPLOIEMENT-TEST

1. `git pull origin main`
2. `php artisan optimize:clear` + `view:clear` + `journal:sync`
3. Fiche parcelle → renseigner société → mention liste
4. Vider le champ → mention disparaît
5. Création unitaire groupe sans acte
6. Modale multiparcelle : colonne présente
7. AB 0571 (2 actes) : champ verrouillé
8. Créer un acte sur parcelle non détenue → société posée
9. Compte hors GS_HECTARE / GS_DSI / GS_ADMIN_ERP → 403 serveur

## LEÇON

La détention groupe n’est plus un dérivé de l’acte : c’est un champ
parcelle. Un acte la confirme et la verrouille. Ne pas reclôturer les
propriétaires externes sur une saisie manuelle tant que Robin n’a pas
tranché A/B/C. Réintroduire une colonne retirée au #1509 n’est pas une
régression si le modèle a changé. Tester les droits avec
`m365GroupNames()` brut, jamais Gate / hasAnyM365Group.
