---
suivi: 1064
date: 2026-07-29
sujet: Grille commercialisation lotissement (module grille_lotissement)
chantier: commercialisation_grille
type: feature
statut: poussé
hash: 8290d72a
fichiers:
  - app/Support/EnseignesSetup.php
  - app/Models/LotCommercial.php
  - app/Http/Controllers/CommercialisationController.php
  - app/Http/Controllers/Concerns/ManagesCommercialLotPayload.php
  - app/Support/LotCommercialHistoriquePresenter.php
  - database/migrations/2026_07_29_170000_add_surface_terrain_sdp_ces_to_lots_commerciaux.php
  - database/migrations/2026_07_29_170100_add_grille_lotissement_module_to_enseignes.php
  - database/data/journal_mises_a_jour_post_2026_06_12.php
  - resources/js/Pages/Programmes/Commercialisation.vue
  - resources/js/Components/Commercialisation/LotsGrillePanel.vue
  - public/build/
  - docs/suivi/SUIVI_1064_grille_lotissement_hectare.md
---

## PROMPT ENVOYÉ

SUIVI #1064 — PHASE 2. Grille lotissement HECTARE via module enseigne
`grille_lotissement` (pas de test code en dur). Colonnes Surface / SDP / CES saisies
manuellement (m²). Prix restent TTC (`prix_grille_ttc` / `prix_vente_ttc`), libellés sans
mention TTC. Total pied « Valeur Vente Totale des Lots ». VEFA strictement inchangé.
Migration merge modules. Journal #412. Commit + push distinct de #1063.

## SYNTHÈSE

### Activation
Clé `grille_lotissement` dans `enseignes.modules_actifs`. Helpers inchangés :
`Enseigne::aModule` / `Programme::enseigneAModule`. Label admin « Grille lotissement ».
Migration merge : HECTARE=true, ENVOL/GEMME=false. Prop Inertia
`grille_lotissement` depuis `CommercialisationController` — aucun `code === 'HECTARE'`
dans vues/contrôleurs.

### Données
Colonnes nullable `surface_terrain`, `sdp`, `ces` (decimal m²) sur `lots_commerciaux`.
Whitelist + validation étendue. Casts modèle. Labels historique.

### UI
`LotsGrillePanel` branche sur `grille_lotissement` : colonnes + formulaire lotissement ;
chemin VEFA (`false`) inchangé. Total = Σ `prix_vente_ttc` des lignes `lotsTries`
(= tous les lots du programme affichés ; pas de filtre DataTable).

### Prix
Aucune colonne prix ajoutée/renommée/modifiée. `regime_tva` intact.
`BilanFinancierService` non touché — recettes TTC inchangées.

## DÉPLOIEMENT-TEST

```bash
git pull origin main
php artisan migrate --force
php artisan journal:sync
php artisan view:clear
find app/ -name "*.php" -exec touch {} +
```

Tests : EQUILIBRE (13) grille lotissement ; ARBOREA/TRITONS VEFA inchangée ;
`/admin/enseignes` toggle module ; bilan HECTARE inchangé.

## LEÇON

Deux métiers (VEFA et lotissement) partagent la table `lots_commerciaux` ; ce lot traite
la divergence d’AFFICHAGE et de SAISIE, mais la dette de fond subsiste — tout futur ajout
métier devra choisir explicitement son camp. La piste « saisie HT + TVA calculée » a été
écartée faute de prix d’acquisition du terrain dans l’ERP.
