---
suivi: 1733
date: 2026-09-28
sujet: Détention par acte et documents à la création
chantier: module-foncier
type: feature
statut: poussé
hash:
fichiers:
  - app/Services/Foncier/ParcelleDetentionGroupeService.php
  - app/Support/Foncier/DetentionGroupeSaisie.php
  - app/Http/Controllers/Foncier/ParcelleController.php
  - app/Http/Controllers/Foncier/ActeFoncierController.php
  - app/Http/Controllers/Foncier/ProspectionController.php
  - app/Services/Foncier/ParcelleCreationService.php
  - app/Services/Foncier/ParcelleCreationUnitaireService.php
  - app/Services/Foncier/ParcelleProspectionQuery.php
  - app/Services/Foncier/ParcelleImportColumnClassifier.php
  - app/Services/Foncier/ParcelleImportAnalysisService.php
  - app/Models/Parcelle.php
  - resources/js/Pages/Foncier/Parcelles/Show.vue
  - resources/js/Pages/Foncier/Parcelles/Create.vue
  - resources/js/Pages/Foncier/Parcelles/Import.vue
  - resources/js/Pages/Foncier/Prospection/Index.vue
  - resources/js/Pages/Foncier/ActesFonciers/Create.vue
  - resources/js/Components/Foncier/Prospection/ProspectionSaisieDialog.vue
  - database/data/journal_mises_a_jour_post_2026_06_12.php
  - tests/Unit/DetentionParActe1733SourceTest.php
  - public/build/manifest.json
  - docs/suivi/SUIVI_1733_detention_par_acte_documents.md
---

# SUIVI #1733 — détention par acte, signalement, documents

La société détentrice ne se saisit plus à la main. L’existant sans acte reste dans le patrimoine et s’affiche en rouge. Les documents d’un acte se joignent dès Nouvel acte. Départ `1f345e1c` (#1732).

## PROMPT ENVOYÉ

Plus de détention sans acte à l’écriture. L’existant sans acte est signalé « Acte à régulariser ». Un achat de la même société complète la ligne. Documents dès la création de l’acte, achat et vente.

## FICHES LUES

- **#1695** — `parcelle_detention_groupe` est la vérité, `societe_detentrice_id` le cache. `completerOuverture` complète la ligne courante de la même société au lieu de la clore. `detention_courante` est une colonne générée : une seule ligne ouverte par parcelle.

## SYNTHÈSE

`synchroniser` n’est plus appelé que par `ActeAcquisitionService` et `ActeVenteService`. Un `societe_detentrice_id` posté ailleurs répond 422 « La détention se déclare par un acte. ». `restreindreCouranteSansActe` est la seule définition du signalement (fin vide et acte d’ouverture vide). La pastille et le bandeau s’en servent. Le statut Détenue ne change pas.

Aucun refus d’achat sur une parcelle déjà détenue n’existait dans `ActeAcquisitionService`. La même société passe par `completerOuverture` : la date de début devient celle de l’acte et `acte_ouverture_id` est posé. Une autre société clôt puis ouvre, comme avant.

Documents : `FoncierEntityDocumentService`, disque `local`, segment `actes`, 15 fichiers, 10 Mo, `TYPES_ACCEPTES`. Validés avant écriture. L’acte et les fichiers sont dans une transaction ; si elle échoue, le répertoire est effacé.

MySQL local a refusé la connexion (`SQLSTATE[HY000] [2002]`). Les compteurs 124 / 108 n’ont pas été relus. Ce lot n’écrit aucune ligne existante.

Bundles : `Index-4VtPLg2R.js` (parcelles), `Show-CYtZsveX.js` (fiche), `Create-DqivO7UG.js` (création parcelle), `Import-BNSBgsST.js`, `Create--umc9AqY.js` (nouvel acte), `app-ChPWac4Y.js`, CSS `app-rIF68JMo.css`.

## DÉPLOIEMENT

git pull origin main
php artisan view:clear
php artisan route:clear
php artisan journal:sync

## LEÇON

Ne pas recopier la société dans `createPrepared` : le cache ne bouge que dans `synchroniser`, et `synchroniser` ne doit plus être appelé hors acte. `completerOuverture` ne doit poser la date de l’acte que lorsqu’il pose l’acte d’ouverture, sinon un second achat de la même société réécrirait le début.
