---
suivi: 1363
date: 2026-08-24
sujet: diag_comptabilisation_volet_vide
chantier: comptabilisation
type: diagnostic
statut: poussé
hash: ca4db3a7
fichiers:
  - docs/suivi/SUIVI_1363_diag_comptabilisation_volet_vide.md
  - tools/diag/diag_comptabilisation_volet_vide_1363.php
---

## PROMPT ENVOYÉ

PHASE 1 — DIAGNOSTIC SEUL. Écran `/factures/comptabilisation?f_societe=13` :
volet SAISIE onglet Comptabilité entièrement vide, alors que l’écart débit/crédit
affiche 87 489,48 € (tolérance 0,01 €). Pistes #1361/#1362, TabView, dirty fantôme,
rebuilds massifs. Ne pas coder le fix.

## FICHES LUES

- `#1362` — `saisieFormVisible` dans `DepotFactures/Index.vue` uniquement (pas compta).
- `#1361` — OCR non bloquant upload ; pas le rendu onglets compta.
- `#1272` — LEÇON : cartes sous un seul `.depot-saisie-cards` flex gap-6 ; **pas de test
  sur l’écran comptabilisation** (« PAS sur l’écran ERP réel »).
- `#1301` — baseline dirty après synchro CIE (dirty fantôme).

## SYNTHÈSE (6 objets)

### 1. Source des lignes comptables

| Étape | Fichier:ligne | Détail |
|-------|---------------|--------|
| Route | `routes/web.php` (~432) | `GET /factures/comptabilisation/{uuid}/data` → `ComptabilisationController::data` |
| Contrôleur | `ComptabilisationController.php:198-209` | `buildSaisiePayload($user, $depot)` |
| Payload | `DepotFactureController.php:3601-3603` / `3662+` | `depotSaisiePagePayload` → `depot.ocr_raw` **entier** (`:3719`) |
| Champ | `depot.ocr_raw.saisie.lignes_comptables` | tableau de lignes débit/crédit |
| Front hydrate | `DepotFactureSaisieForm.vue:378-414` (`initialLignesComptables`) et `:6802-6822` (`hydrateBrouillonDepuisDepot`) | `form.lignes_comptables` |
| Affichage | `DepotFactureSaisieForm.vue:10254+` | `v-for="(ligne, idx) in form.lignes_comptables"` |
| Page hôte | `Factures/Comptabilisation/Index.vue:206-209,328-372,698-702` | axios data + `comptabilisationMode: true` + même `DepotFactureSaisieForm` |

Composant partagé avec le dépôt : **oui** (`DepotFactureSaisieForm`). Condition `#1362`
`saisieFormVisible` : **non** (uniquement `DepotFactures/Index.vue`).

### 2. Le serveur renvoie-t-il les lignes ? (PREUVE)

**Verdict : OUI — les données sont côté client ; le tableau est masqué.**

Preuves convergentes (DB locale indisponible ici ; MySQL refusé / bootstrap `Reservation`) :

1. **Symptôme écart** : `DepotFactureSaisieActionBar.vue:360-363` affiche
   `Écart débit/crédit : {{ abs(totalDebit - totalCredit) }}` via Teleport header
   (`DepotFactureSaisieForm.vue:8048-8057` → `#compta-saisie-header-actions`),
   **hors** du `v-show` fautif. Totaux = somme de `form.lignes_comptables`
   (`:3391-3396`). Un écart **87 489,48 €** implique des lignes non nulles en mémoire.
2. **Hydratation** : ces lignes viennent de `props.depot.ocr_raw.saisie.lignes_comptables`
   fourni par `GET .../data` (`ocr_raw` non filtré, `:3719`).
3. **Contre-preuve affichage vide** : une ligne vide par défaut (débit/crédit null)
   donnerait totaux 0 → pas d’écart affiché.

Script OVH (dump réel BERNARD_BRIGNON / `410748`) :
`tools/diag/diag_comptabilisation_volet_vide_1363.php` (garde `PHP_SAPI !== 'cli'`).

### 3. Condition de rendu qui échoue

**Cause racine — imbrication `v-show` introduite au #1272.**

- Wrapper Informations : `DepotFactureSaisieForm.vue:8092`
  `v-show="showComptaInformationsTab"` + `class="depot-saisie-cards ..."`,
  fermé seulement à **:10454**.
- Bloc Comptabilité : `:9848-9850`
  `v-if="comptabilisationMode"` + `v-show="showComptaComptabiliteTab"`
  → **enfant** du wrapper Informations.

Computed (`:345-350`) :
- onglet Comptabilité (`panelTab === 0`) → `showComptaInformationsTab = false`,
  `showComptaComptabiliteTab = true` ;
- parent `display:none` → **tout le volet Comptabilité invisible** (lignes, bandeaux, totaux
  du bas) alors que le formulaire Vue reste peuplé.

Avant `#1272` (`5543bb10^` = `eb4e14e5`) : deux wrappers `class="contents"` fermaient
**avant** le bloc Comptabilité (sibling) → écran OK.

**Écarté :**
- `#1361` / `#1362` : pas de changement de cette imbrication.
- Avertissement PrimeVue TabView : **hors sujet** — onglets compta = boutons custom
  (`Comptabilisation/Index.vue:676-694`), pas `TabView`.
- `only_full_group_by` / payload serveur vide : incompatible avec l’écart non nul.

### 4. Origine du 87 489,48 €

`Math.abs(totalDebit - totalCredit)` sur `form.lignes_comptables` hydratées, affiché
par la barre d’actions variante `compta` (Teleport). Preuve que le calcul voit les
lignes que le DOM ne montre pas.

### 5. Périmètre entités / natures

Défaut **100 % front** (structure DOM), indépendant de `f_societe`, nature, facture.
E-13 n’est que le filtre de liste. Toutes entités / natures concernées dès qu’on ouvre
l’onglet Comptabilité en mode `comptabilisationMode`.

### 6. Depuis quand ?

| Hash | Date | Rôle |
|------|------|------|
| `eb4e14e5` | 2026-08-11 16:55:01 +0200 | **Dernier état où Comptabilité est sibling** (avant #1272) |
| `5543bb10` | 2026-08-11 17:09:23 +0200 | **Commit fautif #1272** — fusion cartes sous un seul `v-show` Informations englobe Comptabilité |
| `ca91e9f7` / `3e42c9f8` | 2026-08-19 | #1362 / #1361 — non causaux |

Fiche `#1272` : vérif « PAS sur l’écran ERP réel » → régression non détectée jusqu’au signal prod.

**Dirty « modifications non sauvegardées »** : `isDraftDirty` (`:6574-6577`) compare
snapshot après baseline `#1301` (`captureOpeningBaselineIfPending` post-CIE). Hydratation
+ syncs d’ouverture (CIE, mode règlement, pénalités) peuvent diverger du baseline →
orange dès l’ouverture. Symptôme **secondaire** cohérent avec un form peuplé, pas la
cause du vide.

## Fix attendu (PHASE 2 — ne pas faire ici)

Sortir le bloc Comptabilité (`:9848+`) **hors** du `div v-show="showComptaInformationsTab"`
(sibling, comme avant #1272), sans casser le `gap-6` des cartes Informations.

## DÉPLOIEMENT-TEST (diag)

```
cd /home/hectare-envol/envol.hectare.fr
php -d display_errors=1 tools/diag/diag_comptabilisation_volet_vide_1363.php
php -d display_errors=1 tools/diag/diag_comptabilisation_volet_vide_1363.php 410748-29
```

Attendu : `nb_lignes > 0` et éventuellement `ecart` proche de 87489.48 sur BERNARD_BRIGNON.

## LEÇON

Un refactor « un seul parent flex pour le gap » ne doit jamais englober un panneau
contrôlé par un **autre** `v-show` (onglets Comptabilité / Informations). Toujours
vérifier l’écran comptabilisation après toucher `DepotFactureSaisieForm.vue`.
`class="contents"` + wrappers séparés protégeait le sibling ; la fusion #1272 l’a cassé.
