---
suivi: 1284
date: 2026-08-12
sujet: marche_synthese_financiere
chantier: marches
type: evolution
statut: poussé
hash: 11d82acc
fichiers:
  - app/Services/MarcheSyntheseFinanciereService.php
  - app/Http/Controllers/MarcheController.php
  - resources/js/Components/Marches/MarcheSyntheseFinanciere.vue
  - resources/js/Pages/Marches/Show.vue
  - tools/diag/verif_synthese_marche_1284.php
  - database/data/journal_mises_a_jour_post_2026_06_12.php
---

## PROMPT ENVOYÉ

Demande Lahouari (22/07/2026) : lecture financière verticale sur fiche marché, onglet Synthèse après Résumé. Aucune écriture, aucun calcul métier nouveau — agrégation de l'existant. Tout en HT. Plafond de contrôle = actualisé − retenues théoriques.

## SYNTHÈSE

### Structure verticale (ordre exact)
1. Marché initial (`marches.montant_marche_ht`)
2. Avenants détaillés (`avenants` : numero, motif/intitule, date_signature, montant_ht)
3. Actualisé = initial + Σ avenants (live, aligné `transformMarcheForShow`)
4. Retenues prévues ligne à ligne : RG / CP / OPC (taux × actualisé), CIE (montant fixe), pénalités & finitions à 0 « constaté »
5. Montant réel à verser aux entreprises = actualisé − (RG+CP+OPC+CIE) — **plafond de contrôle**
6. Historique chronologique dépôts (`depot_factures` hors rejet/archive)
7–9. Total facture / Total payé / Reste à régler (= facture − payé)

### Trois notions distinctes (OBJET 6)
- (a) plafond de ce lot — projection de contrôle
- (b) brut reconstitué dépôt — non réutilisé ici
- (c) cumuls frise / bilan — non réutilisés comme libellés

### TMA
N'entrent dans l'actualisé **que via leur avenant** (`avenants.tma_id`). Le stock TMA seul n'est pas additionné.

### CIE prévu
Σ `cie_repartitions.montant_calcule_ht` WHERE `marche_id` + `fournisseur_id` du marché, SoftDeletes sur répartitions **et** opérations (`whereHas('operation')`). Réf. marché 109 = 592,50 €.

### Historique — source retenues
Source principale : `ocr_raw.saisie` + `EcrituresComptablesCalculator::computeRetenuesGlobales` (même logique que la frise capté).
Si `lignes_comptables` présentes : comparaison RG/CP via `LignesComptablesRetenueExtractor` — divergence signalée, pas choisie en silence.

### Masquage colonnes
Dans l'historique, une colonne de retenue n'apparaît que si au moins une facture du marché a une valeur non nulle.

### Limite RG libérée
Non modélisée. Le plafond utilise la **RG théorique**. Futures lignes « RG libérée / restant détenue » sans refonte.

### Écarts attendus (à ne pas masquer)
- `totaux.reste_a_regler_ht` (facture−payé) ≠ `marches.reste_a_regler_ht` (total−facture−pénalités) ≠ `restant_a_facturer_ht` frise
- `montant_total_ht` cache peut différer du live si avenants hors filtre `recalculer`

### Onglet
`SYNTHESE` ajouté juste après `RESUME`. Résumé inchangé. Défaut = Résumé.

## 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_synthese_marche_1284.php
```

## LEÇON

- Ne jamais nommer le plafond « montant à comptabiliser » (collision avec brut dépôt).
- Deux soldes qui se ressemblent ne se valent pas (#1219) : les exposer côte à côte plutôt que les forcer.
- Soft-delete CIE : filtrer répartitions **et** opérations (piège #1275).
