---
suivi: 1586
date: 2026-09-16
sujet: Commercialisation programme — deux valeurs
chantier: programmes / commercialisation
type: fix
statut: poussé
hash: 171d540a
fichiers:
  - app/Support/ProgrammeCommercialisation.php
  - resources/js/Pages/Programmes/Index.vue
  - resources/js/Pages/Programmes/Dashboard.vue
  - tests/Unit/Programme1586CommercialisationDeuxValeursSourceTest.php
  - tests/Unit/Programme1582CommercialisationSourceTest.php
  - database/data/journal_mises_a_jour_post_2026_06_12.php
  - public/build/
  - docs/suivi/SUIVI_1586_commercialisation_deux_valeurs.md
---

# SUIVI #1586 — Commercialisation : deux valeurs

## PROMPT ENVOYÉ

Supprimer la pré-commercialisation après constat prod ARBOREA
(ENV34-001, 76,9 % vendu, affiché Pré-commercialisation faute de
dossier foncier rattaché). L’étape ne dépend plus que de
l’interrupteur. Pas de migration.

## FICHES LUES

- **#1582 LEÇON** — étape = interrupteur × terrain acté SQL EXISTS
  dossier / pivot / parcelle `detenue`, sans ACL dossier. Impact :
  ce croisement est faux pour tous les programmes antérieurs au
  module Foncier ; on retire la lecture, on ne touche pas au Foncier.
- **#1093** — `Programmes/Index.vue` zone sérielle. Impact : rebase
  origin/main avant Vite.

## POURQUOI DEUX VALEURS

ARBOREA n’a pas de `dossiers_fonciers.programme_id`. Le test
« au moins une parcelle Détenue » est donc toujours faux. Ce n’est
pas une exception : les programmes historiques n’ont pas de dossier
rattaché. Une valeur fausse (Pré-commercialisation) est pire qu’une
valeur absente. La pré-commercialisation redeviendra pertinente
quand les programmes porteront un dossier foncier fiable — reporté,
pas clos.

## CE QUI RESTE

Colonne `commercialisation_active_at` / `_par_id`, interrupteur,
confirmation, audit, droits `programmes.ecriture` + `abort_unless`
+ `m365GroupNames()` brut, onglets visibles, taux de lots vendus.

## MAPPING FILTRE LISTE

| Libellé affiché | Valeur postée | Libellé back |
|---|---|---|
| Tous | `tous` | (pas de clause SQL) |
| Non commercialisé | `non_commercialise` | Non commercialisé |
| Commercialisation | `commercialisation` | Commercialisation |

## DÉPLOIEMENT-TEST

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

Pas de migrate.

## LEÇON

Ne pas déduire un libellé d’opération d’un rattachement Foncier
tant que le stock historique de programmes n’a pas de dossier.
Un EXISTS sur chaque ligne de liste est cher et, ici, toujours faux.
Reporter plutôt qu’afficher une étape mensongère.
