---
suivi: 1846
date: 2026-10-09
sujet: Bilan sans avances CIE et détail ventilation sur la fiche marché
chantier: cie
type: évolution
statut: poussé
hash: 8fadc0623
fichiers:
  - app/Services/BilanFinancierService.php
  - app/Services/MontantFactureSousTraitantService.php
  - app/Services/MarcheRetenuesEtatsService.php
  - resources/js/Pages/Bilan/Index.vue
  - resources/js/Pages/Marches/Show.vue
  - resources/js/Pages/Cie/Index.vue
  - tests/Feature/Cie/BilanAvancesCie1846Test.php
  - database/data/journal_mises_a_jour_post_2026_06_12.php
---

## PROMPT ENVOYÉ

PHASE 2 lots 3 et 4. Affichage seulement : le bilan exclut les factures d'avance des charges et montre une carte Avances CIE ; la fiche marché détaille chaque ventilation. Aucune écriture.

## SYNTHÈSE

Fiches lues : #1844 (le bilan comptait encore le HT jusqu'à ce lot ; seul `depot_facture_cout_id` est le lien ; ne pas écrire de prélèvement), #1845 (ne pas rouvrir l'import, ne pas toucher le formulaire de saisie). Pas de fiche #1842 dans `docs/suivi/` : la requête de détail a été reconstruite depuis les modèles (ventilation, prélèvements non annulés, facture d'avance = coût sinon lien historique).

Les charges payées d'un marché ne viennent pas des deux sommes SQL du bilan : elles passent par l'agrégat des dépôts. L'exclusion y est activée seulement pour le bilan. L'agrégat de la fiche marché, l'engagé, les budgets, l'étude fi et les recettes ne changent pas. Le calcul des marges n'est pas modifié : seule l'entrée change. Une avance payée sort donc des charges payées et relève la marge réelle du même montant. La marge prévisionnelle, qui part de l'engagé, reste identique.

La carte est masquée sans opération CIE et sans facture d'avance. Avancé, récupéré et reste sont les indicateurs du module. Le survol indique ventilations ou retenues.

L'en-tête du bloc CIE de la fiche marché n'est pas recalculé. Si le retenu de l'en-tête et le cumul des ventilations diffèrent, l'écart est affiché, sans être corrigé. Chaque ventilation liste les retenues sur les situations (statut du dépôt en français) et la facture d'avance. Les libellés « Retenue » et « En cours de prélèvement » ne sont pas réutilisés pour cette facture.

LOU MARQUES (programme 6) : la base locale a refusé la connexion (127.0.0.1:3306). Les montants avant / après n'ont pas été mesurés. Ils ne sont pas estimés.

### Mapping

| Zone / colonne affichée | Champ | Calcul |
| --- | --- | --- |
| Charges payées, marché | `repartitionKpiMarche` total, avances exclues | Somme HT des dépôts payés ou validés du marché, hors facture d'avance |
| Facturé NV1, marché | somme HT des dépôts NV1 | Même périmètre, hors facture d'avance, plus l'impayé repris |
| Charges payées et facturé, hors marché | sommes HT par poste | Hors facture d'avance |
| Marge réelle | `calculerMarges` | Recettes actées moins charges payées. Formule inchangée |
| Marge prévisionnelle | `calculerMarges` | Recettes prévisionnelles moins engagé. Formule inchangée |
| Carte Avancé | `avance_envol_ht` | Somme des ventilations du programme |
| Carte Récupéré | `deja_retenu_ht` | Somme des retenues non annulées |
| Carte Reste à récupérer | `reste_ht` | Avancé moins récupéré |
| Factures d'avance déposées | somme et nombre | HT des dépôts d'avance du programme |
| En-tête Théorique, Retenu, En cours, Restant, % | inchangé | Retenu des factures du marché, non aligné sur les ventilations |
| Écart | retenu d'en-tête moins cumul des ventilations | Affiché seulement s'il est non nul |
| Ligne ventilation | montant ventilé, retenu, reste | Reste nul : Soldée. Sinon : Dette ouverte |
| Retenues sur les situations | prélèvements non annulés | Numéro, date, montant, statut du dépôt |
| Facture d'avance remboursée | facture liée à l'opération | Coût en priorité, sinon lien historique. Avanceur, numéro, HT, statut du dépôt |

## DÉPLOIEMENT-TEST

Pas de migration. Après `git pull` : `php artisan optimize:clear`, `php artisan view:clear`, `php artisan journal:sync`.

Tests sqlite : 3 tests, 44 assertions. Une avance payée de 378,30 € sort des charges payées, la marge réelle augmente de 378,30 €, la marge prévisionnelle est identique, la carte reprend les indicateurs. Une ventilation avec deux retenues de statuts différents et une facture d'avance payée, et une ventilation sans retenue ni facture, donnent les messages attendus. Les comptages de prélèvements, ventilations et dépôts sont identiques avant et après la lecture.

## LEÇON

Exclure l'avance seulement dans les deux requêtes SQL du bilan laisse le payé inchangé : le payé du marché est un autre agrégat, partagé avec la fiche marché. Le drapeau doit rester faux partout sauf l'appel du bilan. Ouvrir le bilan réécrit toujours les montants stockés des postes ; ce lot ne doit pas être « prouvé » en appelant cette réécriture sur une base réelle. La base locale était arrêtée : ne pas inventer les euros de LOU MARQUES.
