---
suivi: 1940
date: 2026-10-16
sujet: Valider et Comptabiliser facture électronique
chantier: factures-electroniques
type: fix
statut: poussé
hash: 171386967
fichiers:
  - app/Http/Controllers/DepotFactureController.php
  - app/Http/Controllers/ComptabilisationController.php
  - app/Services/DepotFactureValiderEtComptabiliserService.php
  - app/Services/DepotFactureEngagerWorkflowService.php
  - app/Services/FactureElectronique/FactureElectroniqueComptaAcces.php
  - app/Services/FactureElectronique/FactureElectroniqueImport.php
  - resources/js/Pages/DepotFactures/DepotFactureSaisieForm.vue
  - tests/Unit/FactureElectroniqueValiderEtComptabiliser1940Test.php
  - tests/Unit/FactureElectroniqueComptabilisation1853Test.php
  - tests/Feature/FactureElectronique/FactureElectroniqueImport1845Test.php
  - database/data/journal_mises_a_jour_post_2026_06_12.php
  - public/build/manifest.json
  - public/build/assets/DepotFactureSaisieForm-BY1N3DPr.js
---

# SUIVI #1940 — Valider et Comptabiliser FE (suite #1939)

## Fiches lues

- #1939 LEÇON : hard-abort `MESSAGE_COMPTABILISATION` sur `validerEtComptabiliser` ignore l’interrupteur ; flux ExtBillUpdate déjà ouvert via `envoyer-intacct-compta`.
- #1853 LEÇON : vraie compta FE = `ExtBillUpdate` / `completerBrouillonElectronique` ; interrupteur + `FactureElectroniqueComptaAcces` ; jamais de second bill.
- #1845 LEÇON : `MESSAGE_COMPTABILISATION` posé pour bloquer jusqu’au lot suivant.

## PROMPT ENVOYÉ

PHASE 2 correctif. « Valider et Comptabiliser » FE = valider puis flux #1853 exact. Paiement FE uniquement via volet Paiement. Messages hérités explicites. Plus de `MESSAGE_COMPTABILISATION` utilisateur. Garde-fous #1853 inchangés. Livrer sur main.

## SYNTHÈSE

Le raccourci FE quitte le refus #1845. Il vérifie l’interrupteur (`MESSAGE_MISE_EN_ROUTE` si fermé hors admin), valide le workflow **sans** effet « déjà réglée » / date / mode règlement, puis appelle `envoyerIntacctCompta` → `executerComptabilisationApbill(autoriserCompta: true)` → `completerBrouillonElectronique` / `ExtBillUpdate`.

Effet de paiement exclu pour une FE (fichier:ligne) :
- `DepotFactureController.php` `validerEtComptabiliserFactureElectronique` : merge `deja_reglee=false` + `sansEffetPaiement: true`
- `DepotFactureEngagerWorkflowService.php` : `deja_reglee` reste false si `$sansEffetPaiement`
- `DepotFactureValiderEtComptabiliserService.php` : pas de `afterNv1SkippedForDejaReglee` ni commentaires « déjà réglé »
- Front : case « Déjà réglée » désactivée pour FE ; payload force `deja_reglee=false`

`confirmerPaiementApresCompta` FE → `MESSAGE_PAIEMENT_VOLET`.
`envoyerIntacct` / `envoyerAvoirIntacct` / `comptabiliser` FE → `MESSAGE_UTILISER_COMPTABILISER` (refus inchangé ; avoir FE : toujours bloqué, pas de nouveau flux).
Facture classique : branche `validerEtComptabiliser` inchangée après le `if (facture_electronique)`.

## DÉPLOIEMENT-TEST

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

Tests manuels prod :
1. FE + interrupteur ouvert + non admin : Valider et Comptabiliser → ExtBillUpdate, un seul RECORDNO.
2. FE + interrupteur fermé + non admin : refus mise en route ; + admin : passe.
3. FE « déjà réglée » cochée : aucun marquage payé / deja_reglee.
4. FE : confirmer paiement après compta → message volet Paiement.
5. FE : envoyerIntacct / avoir / comptabiliser local → message bouton Comptabiliser.
6. Facture classique : Valider et Comptabiliser inchangé.
7. Grep : plus de « disponible au prochain lot » renvoyé à l’utilisateur.

## LEÇON

Ouvrir l’interrupteur #1853 ne désarme pas les entrées encore branchées sur `MESSAGE_COMPTABILISATION`. Le raccourci FE doit réutiliser `envoyerIntacctCompta` (pas créer un second bill) et neutraliser explicitement le chemin « déjà réglée » : la compta FE ne paie jamais.
