---
suivi: 1282
date: 2026-08-12
sujet: CIE - onglet Synthèse en matrice entreprises × opérations
chantier: cie_compte_interentreprises
type: feature
statut: poussé
hash: e15f7459
fichiers:
  - app/Services/CieService.php
  - resources/js/Pages/Cie/Index.vue
  - tools/diag/verif_matrice_cie_1282.php
  - database/data/journal_mises_a_jour_post_2026_06_12.php
  - docs/suivi/SUIVI_1282_cie_matrice.md
  - public/build/
---

## PROMPT ENVOYÉ

Suite #1280 : remplacer le tableau « une ligne par entreprise » par une **matrice**
(lignes = entreprises, colonnes = opérations CIE, cellules = montant_calcule_ht HT).
En-têtes avec prestataire cliquable vers facture coût, popup retenues, colonnes figées,
défilement horizontal. Corriger « € € » et HT/TTC. Lecture seule, aucune migration.

## FICHES LUES

- `#1280` — Synthèse tableau + KPIs ; filtre soft-delete ; retenu = prélèvements actifs.
- `#1266` — depot_facture_cout_id vs legacy ; prestataire = fournisseur_avance_id tel quel.
- `#1271` — troncature ellipsis + title, pas overflow-x-hidden.

## POURQUOI LE #1280 N’ÉTAIT PAS LISIBLE

Sept lignes répétant « 252,00 € » sans voir **quelle opération** ; colonne « Opérations : 1 »
vide ; détail replié invisible. La matrice aligne la lecture sur le classeur Excel Lahouari.

## STRUCTURE MATRICE

| Zone | Contenu |
|------|---------|
| Lignes | Entreprises avec répartition vivante, tri Reste ↓ |
| Colonnes | Opérations vivantes, ordre chronologique |
| Cellule | montant_calcule_ht HT ou tiret gris |
| Synthèse | Total dû · Retenu (cliquable si > 0) · Reste (non cliquables) |
| Pied | Totaux HT par colonne + TTC discret sur ligne totaux |

## LIENS FACTURE

1. **En-tête prestataire** : `depot_facture_cout_id` puis legacy `depot_facture_id` si opération PRESTATION (avanceur = fournisseur dépôt, #1265). Sinon non cliquable ; avertissement survol si legacy retenue.
2. **Popup Retenu** : lien dépôt porteur du prélèvement actif ; une ligne par opération due (même sans prélèvement).

## REQUÊTE / FILTRES

`CieOperation::query()->where('programme_id', …)` — SoftDeletes Eloquent sur opérations et répartitions.
Prélèvements : `statut <> annule` dans `with()`. Pas de `withTrashed()`.

## RESTE OUVERT

- Reclassement ops dont prestataire affiché = ENVOL (donnée brute, non masquée).
- `depot_facture_cout_id` NULL partout — reprise données à faire.
- 291 € HT sans marché (SNP + NJIMA).
- Vue multi-programmes hors scope.

## DÉPLOIEMENT / TEST

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

Écran prog 3 : matrice 7×3, clic RB SOLUTION → FAC-2026-6004, popup ACP 2 lignes.

## LEÇON

Un agrégat par entreprise sans colonnes d’opération masque la structure du dû.
La matrice expose les données telles qu’elles sont (y compris ENVOL en double colonne)
plutôt que d’interpréter ou de replier.
