---
suivi: 1738
date: 2026-09-28
sujet: Suivi du paiement des acomptes après Sage
chantier: comptabilite / sage / acompte
type: evolution
statut: poussé
hash:
fichiers:
  - app/Services/IntacctService.php
  - app/Services/IntacctPaiementStatusService.php
  - app/Services/FacturePaiementStatutSyncService.php
  - app/Services/FactureLectureSageBruteService.php
  - resources/js/Pages/Admin/FacturesSuperadmin/Show.vue
  - database/data/journal_mises_a_jour_post_2026_06_12.php
  - tests/Unit/ApadvanceStatut1738Test.php
  - public/build/
---

# SUIVI #1738 — suivi paiement acomptes

Suite du diagnostic #1736. Cas réel : facture 1661, référence FAC-2026-1640, acompte I-26-09-33, APADVANCE 1674392, état stocké « In process ».

## PROMPT ENVOYÉ

Lire l’APADVANCE dans le panneau de lecture Sage brute. À la remontée et sur Actualiser le statut, mapper seulement In process sans paiement (silence) et Advance paid ou solde nul daté (payé). Tout le reste est un silence. Mettre à jour l’état stocké de l’acompte. Ne pas toucher au circuit des factures.

## FICHES LUES

- **#1736** — l’acompte n’a pas de bill. La relecture s’arrêtait sur « Aucun bill Sage lié ». In process + TOTALPAID 0 n’est pas un paiement. Advance paid l’est. Pas de champ prouvé pour Suite ou le virement.
- **#1616 LEÇON** — ne jamais écrire le RECORDNO d’avance dans intacct_bill_id. fields=* n’est pas utilisé : la lecture demande une liste explicite.
- **#1618 LEÇON** — pas de clé APPYMT pour payer l’avance. Le circuit n’en crée pas.
- **#1692 LEÇON** — présent, introuvable et échec restent distincts. Une exception n’est pas une ligne absente.
- **#1675 LEÇON** — un silence ne recule pas un payé. appliquerEtat est réutilisé tel quel.

## SYNTHÈSE

`IntacctService::lireApadvanceDiagnostic` fait un readByQuery APADVANCE sur RECORDNO, champs RECORDNO, STATE, DOCNUMBER, TOTALENTERED, TOTALPAID, TOTALDUE, WHENPAID, PAYMENTMETHOD, WHENMODIFIED. Le panneau affiche la ligne brute entière, sans rien écrire.

La remontée et le bouton, pour un acompte qui a un numéro d’avance, lisent cette pièce et appellent `appliquerEtat`. In process avec rien de payé : aucun signal. Advance paid, ou TOTALDUE nul avec WHENPAID : payé. Autre état ou lecture en échec : silence, seule la date de synchro bouge. `compta_acompte.state` est remplacé par l’état relu. Le RECORDNO n’est pas copié dans un bill.

## DÉPLOIEMENT

Pas de migration. `git pull origin main`, `php artisan view:clear`, `php artisan journal:sync`.

Recette sur `/admin/factures-superadmin/1661` : Lire Sage maintenant doit montrer l’APADVANCE 1674392. Actualiser le statut sur la facture 1661 doit afficher l’état, et laisser le suivi sur Paiement à préparer si l’état est In process.

## LEÇON

Un STATE inconnu ne se traduit pas en « déposé sur Suite ». On l’affiche brut et on ne bouge pas la frise. Brancher l’avance sur intacct_bill_id relancerait la sync des factures sur un mauvais numéro.
