---
suivi: 1924
date: 2026-10-15
sujet: Rattrapage du compte de paiement et synchro des factures déjà payées
chantier: module-factures
type: correctif
statut: poussé
hash: 843743847
fichiers:
  - app/Console/Commands/RattrapageComptePaiementFactures.php
  - app/Services/FacturePaiementStatutSyncService.php
  - app/Support/FactureComptePaiement.php
  - app/Services/FacturePaiementStatutBatchService.php
  - resources/js/Pages/Factures/Global.vue
  - database/data/journal_mises_a_jour_post_2026_06_12.php
  - docs/suivi/SUIVI_1919_colonnes_factures_compte_paiement.md
  - tests/Unit/FactureComptePaiementRattrapage1924Test.php
  - public/build/manifest.json
  - docs/suivi/SUIVI_1924_rattrapage_compte_paiement.md
---

# SUIVI #1924 — rattrapage du compte de paiement

## PROMPT ENVOYÉ

PHASE 2 du diagnostic #1923. Le rattrapage lit Sage sans autre écriture que les deux colonnes du compte, classe chaque facture, et la synchro des paiements ne reprend pas les factures déjà payées. La date de synchro s'affiche même pour un lot vide. Un échec de balayage est visible et journalisé.

## Fiches lues

- #1923 : pas de fiche dans `docs/suivi`. Le correctif suit le prompt (ordre décroissant, cinq résultats, lecture dès qu'il y a une pièce, avance lue sur l'avance, identifiants inconnus listés, factures déjà payées hors de la synchro).
- #1919 : le compte vient de FINANCIALENTITY, le libellé du référentiel local. La fiche disait de ne pas lancer le rattrapage en SSH. Phrase remplacée : le HTTPS sortant de la ligne de commande OVH est ouvert, sauf `*.powerplatform.com`.
- #1675 : le couple payée ne se relit pas tout seul. Le balayage de masse ne le reprend pas. La relecture au bouton d'une facture n'est pas ce balayage.

## SYNTHÈSE

Périmètre inchangé : facture payée (statut ou état) sans libellé de compte, de l'id le plus grand au plus petit.

| Résultat | Sens | Écriture avec `--appliquer` |
|---|---|---|
| trouvé | identifiant et libellé | les deux colonnes |
| sans compte | Sage lu, pas de compte | rien |
| sans pièce Sage | aucun bill ni avance, Sage non appelé | rien |
| libellé manquant | identifiant connu, absent du référentiel | l'identifiant seul |
| erreur | message | rien |

L'aperçu lit Sage dès qu'il y a un bill ou une avance, et n'écrit rien. `--facture` affiche la réponse brute (compte, états du paiement, du bill, de l'avance) et n'écrit rien.

L'identifiant d'une avance est celui de l'avance, pas celui de la demande de paiement. Le statut et la date de paiement ne sont pas touchés.

Les identifiants inconnus sont listés en fin de bilan. Les ajouter, ou rafraîchir le référentiel par la synchronisation des comptes Sage déjà en place.

La synchro « Synchroniser les paiements Sage » exclut une facture déjà payée. Un lot vide enregistre quand même la date, renvoyée au démarrage, et l'écran la recharge avec la liste. Une lecture qui échoue en cours de balayage s'affiche et est journalisée.

## DÉPLOIEMENT-TEST

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

Puis, sur le serveur :

```
php artisan factures:compte-paiement-rattrapage --limite=10
php artisan factures:compte-paiement-rattrapage --facture=ID
php artisan factures:compte-paiement-rattrapage --limite=10 --appliquer
```

L'aperçu n'écrit rien. `--appliquer` n'écrit que les deux colonnes du compte. `--facture` n'écrit rien.

Bundle `Global-Cb3vkJ2k.js`. `cie_effacement_confirme` dans `DepotFactureSaisieForm-DuZLpakU.js` : 1.

## LEÇON

Le compte d'une avance est sur l'avance. Le lire sur la demande de paiement rate le compte, ou en prend un autre. Les factures déjà payées ne reviennent pas dans le balayage de masse : leur compte passe par le rattrapage. Un lot vide doit quand même renvoyer la date, sinon l'écran ne la montre qu'après un rechargement complet.
