---
suivi: 1548
date: 2026-09-15
sujet: Fix décompte fiche — TTC brut depuis les lignes TVA
chantier: factures / depot / decompte
type: fix
statut: poussé
hash: 71371409
fichiers:
  - app/Support/FactureDecompteSaisiePresenter.php
  - tests/Unit/FactureDecompte1548SourceTest.php
  - database/data/journal_mises_a_jour_post_2026_06_12.php
  - docs/suivi/SUIVI_1548_fix_decompte_source_ttc.md
---

# SUIVI #1548 — TTC brut fiche = lignes TVA (comme la saisie)

## PROMPT ENVOYÉ

Facture 1069847834 : fiche TTC brut / net 27,08 €, saisie 57,03 €.
Aligner la source du décompte fiche sur le formulaire (lignes TVA).
Ne pas modifier saisie ni calculateur. Signaler l’incohérence OCR
(SQL de comptage). Non-régression 1192 SIT 13. Push HECTAREG main.

## BASE GIT

HEAD = origin/main `32b0a259` (#1547). Working tree propre hors
hectareenvol.sql. #1545 déjà poussé (pas de WIP local). Pas de .vue
→ pas de rebuild Vite.

## FICHES LUES

- **#1541 LEÇON** — décompte non persisté ; recalcul saisie +
  calculateur ; `montant_*` comme totaux. **Corrigé** : `montant_ttc`
  n’est plus la source du TTC affiché quand les lignes (ou HT+TVA)
  existent.
- **#1545 LEÇON** — presenter inchangé à l’époque (carte seule).
  Ce lot ne retouche ni la carte ni Show.vue.
- **#1522** — ocr_raw.saisie = entrées, pas le décompte calculé.
- **#1536 LEÇON** — NET = TTC à régler (lignes), pas un autre stock.

## DIAGNOSTIC (preuves lignes)

Saisie `DepotFactureSaisieForm.vue` :
- L3192–3198 : `totalHt` / `totalTva` / `totalTtc` = somme des
  `lignes` (`base_ht` + `round2(base_ht × taux / 100)`).
- L3247 / L4122–4126 : TTC brut affiché = `totalTtc` (sauf
  reconstitution retenues).
- L3351–3352 : net = `ttcARegler` − pénalités (`ttcARegler` = `totalTtc`).
- L4900 : `form.montant_ttc = totalTtc` seulement tant que le
  formulaire est ouvert ; le JSON persisté n’est pas relu pour l’affichage.

Fiche `FactureDecompteSaisiePresenter` (avant) :
- L36–38 : `montant_ht` / `montant_tva` / `montant_ttc` stockés.
- L95 / L169 : sans retenue, TTC brut et net = `montant_ttc`.
- Cas VEOLIA : OCR a mis 27,08 (montant à régler PDF, solde −29,95)
  dans `saisie.montant_ttc` ; HT/TVA 55,57 / 1,46 cohérents.

## SYNTHÈSE

`totauxAReglerCommeSaisie` : 1) `lignes_tva` si présentes (même
formule que la saisie) ; 2) sinon TTC = HT + TVA saisis, pas
`montant_ttc`. Net suit. Saisie / calculateur / avancement /
données existantes intacts. Pas de migration ni reprise.

## DÉPLOIEMENT-TEST

1. `git pull origin main`
2. `php artisan optimize:clear` + `view:clear` + `journal:sync`
3. Facture 1069847834 — TTC brut 57,03, net 57,03
4. Facture 1192 SIT 13 — inchangé (51 613,87 / 8 602,31 / 43 011,56 /
   libération −11 088,73 / CP 645,18 / net 64 146,14)
5. Facture ordinaire sans retenue — TTC = HT + TVA
6. Avoir — négatifs cohérents

Pas de migration. JAMAIS npm/composer/optimize/config:cache sur OVH.

## LEÇON

Un total TTC persisté par l’OCR n’est pas le TTC du décompte. La
saisie recalcule depuis les lignes à l’ouverture ; la fiche doit
faire de même, sinon elle affiche un « montant à régler » PDF.
Ne pas « corriger » la donnée stockée dans le même lot : d’abord
mesurer combien de dépôts divergent.
