---
suivi: 1304
date: 2026-08-12
sujet: marche_retenues_etats_unite_ht
chantier: marches_compta
type: fix
statut: poussé
hash: de58984f
fichiers:
  - app/Services/MarcheRetenuesEtatsService.php
  - app/Services/MarcheSyntheseFinanciereService.php
  - resources/js/Pages/Marches/Show.vue
  - database/data/journal_mises_a_jour_post_2026_06_12.php
  - tools/diag/verif_unite_apres_1304.php
  - public/build/
---

## PROMPT ENVOYÉ

PHASE 2 #1304 — conversion TTC→HT centralisée dans MarcheRetenuesEtatsService + retrait reconversion #1292 sur cumuls états (anti double ÷). Hors périmètre : CP historique, frise CouvertureKpi, écritures RetenueGarantie.

## SYNTHÈSE

### Fiches lues
- `#1302` inventaire 17 consommateurs + unités + périmètre CP.
- `#1292` ttcVersHt / tauxTvaMarchePct.
- `#1303` déjà sur main (TOTAL HT) — rebase OK, pas de conflit.

### Correction
1. **MRES** : après agrégation TTC, conversion lecture via `MarcheSyntheseFinanciereService::ttcVersHt` / `tauxTvaMarchePct` (méthodes rendues `static`, réutilisation #1292, aucun ×1,2). Théoriques et pénalités non convertis. Alertes HT vs HT, libellé « € HT ».
2. **Synthèse** : `cumulsRetenusEnHt` ne reconvertit plus les cumuls états (historique situations conserve ttcVersHt).
3. **Show.vue** : « Écart HT » sur bandeau alertes onglet Retenues.
4. Stock `retenues_garantie.montant_retenu` inchangé (TTC).

### Appelants #1302
| # | Appelant | Traitement |
|---|----------|------------|
| 1–2,7 | Show retenues / détails | adapté (service HT) |
| 3–5,8 | Synthèse service + vue | adapté (plus de reconversion cumuls) |
| 6 | lignesComptablesOntMontantNonNul | neutre |
| 9 | CouvertureKpi frise | **hors lot** (reste TTC) |
| 10 | CompteProrata source | neutre (conv. lecture) |
| 11–17 | écritures RG / artisan | **non touchés** |

### Confirmations métier
- Marché 109 : CP retenu reste **1 801,40** (périmètre Sage) — écart historique 1 831,91 **non corrigé**.
- Alertes prod attendues : 12 → 4 (001, 033, 034, 064).
- ARBOREA : 0 alerte.
- Écran réel : non vérifié localement (DB stub) — rejouer diag en prod.

## DÉPLOIEMENT-TEST

```bash
git pull origin main
php artisan optimize:clear
php artisan view:clear
php artisan journal:sync
php -d display_errors=1 tools/diag/verif_unite_apres_1304.php
```

## LEÇON

Convertir à la source sans retirer la couche d’affichage qui convertissait déjà = double division silencieuse. Les deux changements doivent partir dans le même commit.
