---
suivi: 1536
date: 2026-09-14
sujet: Fix libération RG non sommée dans le net à payer
chantier: depot-factures / retenues / liberation-rg
type: fix
statut: poussé
hash: dad4ea01
fichiers:
  - resources/js/Pages/DepotFactures/DepotFactureSaisieForm.vue
  - tests/Unit/DepotFactureEcrituresComptablesCalculatorTest.php
  - tests/Unit/LiberationRgFacture1536SourceTest.php
  - database/data/journal_mises_a_jour_post_2026_06_12.php
  - public/build/
  - docs/suivi/SUIVI_1536_fix_liberation_rg_calcul.md
---

# SUIVI #1536 — Fix : libération RG absente du net à payer

## PROMPT ENVOYÉ

FIX : la libération de RG n’est pas injectée dans le net à payer.
Cas prod AB2J situation 13 MCH-2026-069 : ligne affichée −11 088,73 HT,
net inchangé 51 613,87 TTC. Ne pas toucher aux %, reconstitution, plafond.
Corriger PHP + JS. Écritures 401700 / 401000. Rebase Vite. Push main.

## BASE GIT

HEAD = origin/main = 014dc157 (chore hash #1535) au départ du lot.
Rebase Vite sur origin/main à jour AVANT `npm run build`.

## FICHES LUES

- **#1535 LEÇON** — libérer = débit 401700 + crédit 401000, jamais dans
  le numérateur des % ; 401 débits = candidats charge APBILL ; case
  décochée = décompte identique à avant #1535.
- **#1534 LEÇON §4.5** — `netAPayerTtc` ignore les retenues (PDF /
  reconstitution) ; le NET du décompte Montant suit `netAPayerTtc`
  **sans** lignes : à brancher, sinon deux nets divergents. C’est
  exactement le défaut livré par #1535 (ligne peinte, formule oubliée).

Aucune fiche #1533 n’a changé l’approche.

## SYNTHÈSE

### Diagnostic — ligne exacte

Le montant arrivait jusqu’à `montantLiberationRgTtc` et s’affichait
dans « Déduction des retenues ». Il n’était **pas** sommé.

`DepotFactureSaisieForm.vue` `netAPayerTtc` :
`round2(Math.max(0, ttcARegler − totalPenalitesTtc))`
Le décompte (`NET À PAYER TTC`) bindait **cette** valeur, pas le
calculateur ni `netAPayerTtcAffiche`.

Les calculateurs PHP (`EcrituresComptablesCalculator` L488-489) et JS
(`depotFactureEcrituresCalculator.js` L395-396) ajoutaient déjà
`crédit 401000 += libération` après `computeRetenuesGlobales`. Pas de
changement de formule côté calculateurs.

### Correction

`netAPayerTtc` = TTC à régler − pénalités **+ libération TTC**.
Watch compta : resynchronise crédit 401000 et débit 401700 (rôle
`liberation_rg`, hors TVA) quand le montant libéré change.

### Cas de référence (ERP, reconstitution inchangée)

base HT 43 011,56 · TVA 20 % · CP 1,5 % · libération 13 306,48 TTC

Avant : NET 51 613,87 TTC (libération ignorée)
Après : NET 64 920,35 TTC = 51 613,87 + 13 306,48
CP HT 655,00 inchangé (CP TTC calculateur 786,00 identique avec/sans)

Le 64 146,14 du PDF retranche le CP (774,21 TTC, % sur le TTC
situation) du net. L’ERP crédite le CP reconstitué sur 401800 et
laisse 401000 au TTC situation ; retrancher le CP du net casserait
le cas « libération 0 = identique à avant #1535 ».

### Mapping UI ↔ back

Aucun champ nouveau.

## DÉPLOIEMENT-TEST

OVH : git pull origin main ; php artisan optimize:clear ; view:clear ;
journal:sync.

## LEÇON

Afficher une ligne de décompte ≠ l’injecter dans `netAPayerTtc`. Le
calculateur PHP/JS peut être juste et l’écran faux : le bloc Montant
ne lit pas `credit_401`. Ne jamais retrancher RG/CP du net écran
(reconstitution / 401800) : la libération s’ajoute seule, après.
