---
suivi: 1900
date: 2026-10-14
sujet: Visites parcelles — le statut est calculé
chantier: foncier
type: evolution
statut: poussé
hash: 5b067804f
fichiers:
  - resources/js/visites/index.js
  - resources/js/Pages/Foncier/Prospection/Index.vue
  - database/data/journal_mises_a_jour_post_2026_06_12.php
  - tests/Unit/VisiteGuidee1900Test.php
  - public/build/
  - docs/suivi/SUIVI_1900_visite_statut_calcule.md
---

# SUIVI #1900 — Visites parcelles, statut calculé

## PROMPT ENVOYÉ

Les visites #1896 sont en production. Les utilisateurs croient pouvoir modifier le statut. Il est calculé (`ParcelleStatutService::deduire` / `chargerFaits`). Remplacer le texte de l’étape « Le statut », ajouter une phrase à « Identité de la parcelle », réécrire l’aide « ? » (9 déclencheurs, « Vendue », en-tête non modifiable) et monter la version des deux visites. Aucun changement de calcul.

## Fiches lues

- #1817 LEÇON : monter `version` dans `visites/index.js` repropose la visite ; mémorisation `users.preferences.visites_vues` (visite → version). Pas de migration.
- #1896 : textes des étapes dans `visites/index.js`, ancre `statut` sur l’en-tête de la liste, ancre `identification` sur la fiche. Le composant saute une cible absente.
- #1569 / #1698 : `deduire` et `chargerFaits` sont la source des déclencheurs. Rien n’a été modifié dans ce calcul.
- #1899 : « Vendue » est le libellé de `cedee` ; la promesse qui compte pour Sous compromis est une promesse d’achat.

## Statut ↔ déclencheur

| Statut | Déclencheur | Règle |
|---|---|---|
| Sans issue | `sans_issue_at` renseigné, prioritaire | `deduire` 147-148, `chargerFaits` 203 |
| Remplacée | `statut_cadastral` = remplacée | `deduire` 150-151, `chargerFaits` 204 |
| Vendue | dernière détention groupe close par un acte `sens` vente, aucune détention ouverte | `deduire` 153-154, `chargerFaits` 208-219 |
| Détenue | `societe_detentrice_id` renseigné | `deduire` 156-157, `chargerFaits` 205 |
| Sous compromis | promesse signée, `sens` vide ou différent de vente | `deduire` 159-160, `chargerFaits` 229-235 |
| En négociation | au moins une offre non supprimée (aucun filtre de statut d’offre) | `deduire` 162-163, `chargerFaits` 246-249 |
| Opportunité | dossier en cours ou en veille | `deduire` 165-166, `chargerFaits` 259-265 |
| Explorée | dossier terminé ou annulé | `deduire` 168-169, `chargerFaits` 260, 276-279 |
| Repérée | aucun de ces faits | `deduire` 172 |

## SYNTHÈSE

Les deux visites passent en version 2 : une version déjà vue à 1 est reproposée une fois, une version vue à 2 ne l’est plus. L’étape « Le statut » dit que le statut change au rattachement, à l’offre, à la promesse d’achat, à l’acte d’achat ou à l’acte de vente. L’étape « Identité de la parcelle » dit que seule la case Sans issue se coche à la main. L’aide « ? » ouvre sur « Calculé automatiquement, non modifiable. » et une ligne par statut. Journal regroupé sur la liste des parcelles.

## DÉPLOIEMENT-TEST

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

1. Utilisateur ayant déjà vu la visite : elle se relance une fois sur la liste et sur la fiche.
2. Étape « Le statut » : le texte calculé, non modifiable à la main.
3. Fiche, « Identité de la parcelle » : phrase Sans issue.
4. « ? » de la colonne Statut : neuf lignes, « non modifiable », libellé Vendue.

## LEÇON

Le statut affiché n’est pas un champ. Toute phrase de visite ou d’aide qui le décrit doit suivre `deduire` / `chargerFaits`. Monter la version des deux visites en même temps, sinon la liste et la fiche divergent.
