---
suivi: 1781
date: 2026-10-02
sujet: Fiche promesse en deux colonnes, en-tête fixe, création sans prix saisi
chantier: foncier / promesses
type: affichage
statut: poussé
hash:
fichiers:
  - app/Http/Controllers/Foncier/PromesseFonciereController.php
  - app/Services/Foncier/PromesseFonciereService.php
  - routes/web.php
  - resources/js/Layouts/AppShell.vue
  - resources/js/Pages/Foncier/Promesses/Show.vue
  - resources/js/Pages/Foncier/Dossiers/Show.vue
  - database/data/journal_mises_a_jour_post_2026_06_12.php
  - docs/suivi/SUIVI_1781_foncier_fiche_promesse.md
---

# SUIVI #1781 — fiche promesse

Fiches lues : #1700 (avenants n’écrivent pas le propriétaire ; ventilation vente = acquéreur), #1595 (prorogation non automatique, levées exclues, date proposée modifiable, réactivation jamais imposée), #1201 (bandeau dossier sous la navigation), #1763 (la prop `programme` écrase la prop partagée : la nav lit `programme_foncier_nav`). Aucune de ces règles n’est modifiée. Le bandeau de la fiche est téléporté hors de `main` (leçon du commentaire #1640 : un sticky dans le défilement recouvre le contenu).

## Ce qui change à l’écran

- En-tête en deux étages, visible au défilement, sous la navigation générale : sous-menu du dossier (onglet PROMESSES en `#B8893B`) et bandeau promesse (Enregistrer, Créer un acte, Retour aux promesses, menu Mettre en corbeille).
- Cartes sur 1 280 px maximum, centrées. Une colonne sous 1 024 px.
- Conditions en lignes compactes, menu Lever / Couper l’alerte / Réactiver / Modifier. Avenant dans une fenêtre, formulaire actuel y compris la prorogation.
- Nouvelle promesse ouvre cette fiche vide. Rien n’est créé avant Enregistrer. Le prix numéraire n’est plus demandé : la colonne reste obligatoire en base, le serveur écrit 0. Pas de migration.
- Formulaire modifié : avertissement avant de quitter. Plus d’avertissement après un enregistrement réussi.

## Mapping

| Libellé affiché | Valeur postée | Libellé relu |
|---|---|---|
| Achat | achat | Achat |
| Vente | vente | Vente |
| PUV (promesse unilatérale de vente) | puv | PUV (promesse unilatérale de vente) |
| PVA (promesse de vente amiable) | pva | PVA (promesse de vente amiable) |
| Compromis | compromis | Compromis |
| Dation | dation | Dation |
| Promesse synallagmatique | promesse_synallagmatique | Promesse synallagmatique |
| Signée | signe | Signée |
| Caduc | caduc | Caduc |
| Actée | acte | Actée |
| Abandonnée | abandonne | Abandonnée |
| Forfaitaire | forfaitaire | Forfaitaire |
| Au m² | au_m2 | Au m² |
| Lever | POST …/lever | Levée |
| Couper l’alerte | PUT alerte_active = false | Alerte coupée |
| Réactiver | PUT alerte_active = true | Alerte active |
| Modifier | PUT type_cs_id, date_butoir, commentaire | mêmes libellés de type et date |

`en_cours` / « En cours » n’est pas proposé. Il reste toléré seulement s’il est déjà le statut courant.

## Droits

Inchangés. `authorize('update', $dossier)` et l’ACL d’enregistrement (`userCanManageRecord`, groupes lus par `m365GroupNames()`). Pas de nouvelle liste de groupes.

## Prix

`promesses.prix_numeraire` est `decimal(14,2)` NOT NULL. À la création la clé est refusée si le navigateur l’envoie ; le serveur pose 0. À la mise à jour la clé n’est pas renvoyée : un prix déjà ventilé (ex. 45 000) n’est pas réécrit par Enregistrer. La ventilation reste l’écran qui recalcule le montant.

## LEÇON

Le sous-menu du dossier, sur la fiche, doit être des liens vers `?onglet=` pour que l’avertissement de départ s’applique. L’onglet du dossier lui-même reste in-page. Ne pas nommer une prop de page `programme`. L’hôte du bandeau est hors de `main`, sinon il défile ou recouvre les cartes.
