---
suivi: 1743
date: 2026-09-29
sujet: Lecture des demandes de paiement du fournisseur
chantier: comptabilite / sage / acompte
type: diagnostic
statut: poussé
hash:
fichiers:
  - app/Services/IntacctService.php
  - app/Services/FactureLectureSageBruteService.php
  - resources/js/Pages/Admin/FacturesSuperadmin/Show.vue
  - tests/Unit/AcompteDemandesPaiementFournisseur1743Test.php
  - public/build/
  - docs/suivi/SUIVI_1743_demandes_paiement_fournisseur.md
---

# SUIVI #1743 — demandes de paiement du fournisseur

## PROMPT ENVOYÉ

Sur l'acompte 1661, RECORDKEY et ADVANCEKEY ne ramènent aucune ligne, alors que l'écran Sage « Demandes de paiement » montre une demande DTMA livrée de 648 €. Lire, sans écrire, les APPYMT du fournisseur sur 90 jours et leurs lignes, et signaler les champs qui portent le numéro d'avance, le document ou le montant. Lire aussi un objet documenté s'il existe.

## FICHES LUES

- #1740 LEÇON — ne pas brancher la frise tant que la lecture prod n'a pas montré le champ. Impact : RECORDKEY et ADVANCEKEY restent affichés, `lien_applique` reste faux, la frise n'est pas touchée.
- #1618 LEÇON — ADVANCEKEY documenté consomme une avance déjà payée. Impact : ce lot ne met pas le RECORDNO d'avance dans RECORDKEY.

## CONSTAT

Documentation Sage, AP Payments (developer.intacct.com/api/accounts-payable/ap-payments/) : `readByQuery` sur `APPYMT` et `APPYMTDETAIL` renvoie tous les champs avec `fields *`. La page ne publie pas une liste exhaustive de colonnes. `APPAYMENTREQUEST` est l'objet legacy « AP payment request », fourni pour compatibilité, pas un objet réservé aux avances. Même page, même `fields *`.

## SYNTHÈSE

Le panneau super-admin d'un acompte, au clic « Lire Sage maintenant », ajoute le bloc « Demandes de paiement du fournisseur ». VENDORID = identifiant Sage du fournisseur de la facture. Deux lectures : WHENCREATED et PAYMENTDATE sur 90 jours, fusionnées. Pour chaque APPYMT, ses APPYMTDETAIL par PAYMENTKEY. `*` d'abord. Si Sage refuse `*` sur APPYMT ou APPYMTDETAIL, repli sur la liste déjà utilisée par la sonde, affiché comme repli, pas comme liste complète. APPAYMENTREQUEST est lu de la même façon, sans objet de ligne inventé.

Un champ est surligné s'il contient le RECORDNO de l'avance, le DOCNUMBER, ou le TOTALDUE (ici 1674392, FAC-2026-1640, 648). Le libellé dit qu'aucun lien n'est conclu. La frise et la relecture de statut ne changent pas. Le journal intacct reçoit le vendeur, la fenêtre, l'issue et les numéros surlignés.

Boucle relue : le `array_map` du journal ne copie que les RECORDNO dont un champ est surligné. Aucune écriture, aucune transaction.

## DÉPLOIEMENT-TEST

git pull origin main
php artisan view:clear

Pas de migration. Pas de journal utilisateur.

Sur `/admin/factures-superadmin/1661`, « Lire Sage maintenant ». La demande du fournisseur F4035 doit apparaître avec tous ses champs et ceux de ses lignes. Noter quel champ contient 1674392, FAC-2026-1640 ou 648. Ne pas en déduire le lien tant que ce champ n'est pas noté.

## LEÇON

`fields *` est la source des champs, pas une liste inventée. Un repli après refus de `*` doit être étiqueté repli. Surligner n'est pas conclure.
