---
suivi: 1145
date: 2026-07-31
sujet: Foncier — grille de prix scénario (saisie lots, affichage moteur)
chantier: faisabilite-lotissement
type: feature
statut: déployé
hash: deb7ed26
fichiers:
  - app/Models/ScenarioLot.php
  - app/Services/Foncier/ScenarioGrillePrixService.php
  - app/Services/Foncier/ScenarioFicheFonciereService.php
  - app/Services/Foncier/FieldAuditService.php
  - app/Support/Foncier/FoncierReferentiels.php
  - app/Http/Controllers/Foncier/ScenarioFaisabiliteController.php
  - database/migrations/2026_07_31_260000_create_scenario_lots_table.php
  - resources/js/Pages/Foncier/Scenarios/Show.vue
  - routes/web.php
  - public/build/
  - database/data/journal_mises_a_jour_post_2026_06_12.php
  - tests/Feature/Foncier/FoncierScenarioGrillePrix1145Test.php
  - tests/Unit/Foncier/FoncierScenarioGrillePrix1145SourceTest.php
---

## PROMPT ENVOYÉ

SUIVI #1145 — FONCIER — FAISABILITÉ : GRILLE DE PRIX (lot 4/4). Persistance + affichage
via moteur #1143, sans formule maison. Parité Excel chiffre à chiffre. Ergonomie
150 lots. Convention prix revient m². TVA marge négative signalée.

## SYNTHÈSE

- Table `scenario_lots` + modèle `ScenarioLot` (audit, prix sensibles).
- Service `ScenarioGrillePrixService` ; fiche injecte les lots dans le même run moteur
  (base revient Excel **310120** avec ODF grille).
- Référentiel `TYPES_LOT_SCENARIO` (+ alias Excel TAB/ODF) ; tranches T1–T8.
- **Ergonomie** : tableau synthèse paginé (25/page) + édition ligne à ligne (un régime
  par défaut, multi-régimes optionnel) + duplication de ligne.
- Convention affichée : « prorata surface cessible hors agricole ».
- Historique batch (`presentHistoriqueScenarioCalcul`) — pas de N+1 sur 150 lots.
- **Parité Excel** (fixture #1143) : aucun écart > 0,01 € vs formules moteur ;
  lot 900k → honoraires plafonnés 20 000 ; lot 1 TVA marge négative signalée.
- Commit : `deb7ed26 feat(foncier): grille de prix scenario faisabilite (#1145)`.
- Bundle : `Show-DO7HLpvJ.js` (à la date du push).

## DÉPLOIEMENT / TEST

```bash
git pull origin main
php artisan migrate --force
php artisan optimize:clear
php artisan view:clear
php artisan journal:sync
```

## LEÇON

Ne pas afficher une grille 150×10 brute : synthèse paginée + panneau ligne (cas 1 régime)
garde l’écran utilisable. Brancher fiche + lots sur **un** appel moteur dès que la
grille existe, sinon frais notaire / base revient divergent de l’Excel.
