---
suivi: 1321
date: 2026-08-13
sujet: liberation_rg_synthese_kpi
chantier: marches_compta
type: feature
statut: poussé
hash: 8b4069aa
fichiers:
  - app/Services/MarcheSyntheseFinanciereService.php
  - app/Services/DemandeLiberationRgService.php
  - app/Http/Controllers/MarcheController.php
  - resources/js/Components/Marches/MarcheSyntheseFinanciere.vue
  - resources/js/Components/Marches/LiberationRgDemandesListe.vue
  - resources/js/Pages/Marches/Show.vue
  - database/data/journal_mises_a_jour_post_2026_06_12.php
  - public/build/
  - docs/suivi/SUIVI_1321_liberation_rg_synthese_kpi.md
---

## PROMPT ENVOYÉ

PHASE 2 #1321 (suite #1320) — brancher libérations RG sur Synthèse + KPI,
corriger libellé « à libérer » et arrondis à l’euro. Porte STOP Sage. HEAD #1320.

## SYNTHÈSE

### Fiches lues
- `#1320` LEÇON : table demandes, plafond `montant_retenu`, Policy m365 brut,
  porte STOP Sage — **conservé** ; création reste dans Retenues.
- `#1309` : « à libérer » = théorique−retenu (faux) ; vraie base = retenu.
- `#1300` : cohérence payé+circuit+rejeté ; popup retenues ; KPI + RG.
- `#1304`/`#1318` : HT ; formatTauxPct — **useFormatters non touché**.

### Objet 1 — bloc Synthèse
Composant partagé `LiberationRgDemandesListe.vue` (même payload #1320).
Lecture seule dans Synthèse ; création / actions restent dans Retenues.
Bloc absent si 0 demande.

### Objet 2 — Reste à payer + RG
`reste + RG théorique − total_libere_payee_ht` (#1321).
Infobulle mise à jour. Sans payée : 61 535,23 inchangé (non-régression).

### Objet 3 — Total payé HT
Définition inchangée (factures). Ventilation sous le KPI si ≥1 payée :
factures + RG libérée = total décaissé. Cohérence #1300 **ne porte pas**
sur le décaissé.

### Objet 4 — libellé
« RG restante à libérer » = retenu − payées. `restant` = reste à retenir
(théorique−retenu), conservé dans la colonne Restant + mention Spécifique.
Popup « RG libérée » = cumul réel ; mention « non encore modélisées » retirée.

### Objet 5 — centimes
Onglet Retenues : `formatEuros` → `formatEurosDecimal` (existant, 2 décimales).
**useFormatters.js non modifié.**

### MarcheRetenuesEtatsService
**Non modifié** (cumuls #1304/#1308 inchangés). Lecture seule via
`etats.rg.montant_retenu` dans la synthèse.

### Vérification écran
**NON** — stub 0 marché / pas de prod. Lot **non validé** écran réel.

## DÉPLOIEMENT-TEST

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

Porte STOP Sage / Intacct maintenue.

## LEÇON

Injecter une libération dans « Total payé HT » casserait l’égalité #1300.
Ventiler le décaissement sous le KPI conserve le contrôle. Le libellé « à libérer »
ne doit jamais pointer vers `théorique − retenu` (reste à retenir).
