Aller au contenu principal

Tous les guides

Exploitation des connecteurs ERP et cartographie « erpLinks »

Vue schématique : identifiants ERP et cartographie par entité vers le grand livre Ninon.

Ce mémo résume pour les équipes projets où configurer hors code (secrets plateforme, formulaires admin) et où cartographier chaque société Ninon vers un identifiant côté ERP. Les anomalies de synchro sont visibles dans les journaux Observability avec la source « erp-sync ».

Général

Variable ERP_SYNC_LOOKBACK_DAYS : fenêtre en jours pour les extractions GL (défaut 90). Chaque entité groupe possède un objet JSON erpLinks : une clé par fournisseur (dynamics365bc, xero, netsuite, sap_business_one, sap_s4hana, sage_intacct). La valeur filtre côté API pour rattacher les lignes à la bonne entité ; renseignez-la avant de compter sur une synchro multi-filiales.

Xero

OAuth PKCE produit : après consentement, si plusieurs organisations Xero sont reliées au compte, vous devez choisir le tenant dans l’écran Intégrations (liste fournie par l’API /connections). Un alignement manuel optionnel par entité possible via erpLinks.xero. Scopes côté app Xero : lecture des paramètres comptables et transactions (journaux).

NetSuite

Deux voies : POST /api/integrations/netsuite (scripts internes) ou OAuth navigateur avec realm (identifiant compte, sous-domaine SuiteTalk) saisi avant redirection. Enregistrez le redirect_uri de Ninon dans l’intégration NetSuite. Les clés NETSUITE_OAUTH_CLIENT_ID / SECRET servent au refresh ; NETSUITE_OAUTH_SCOPES permet d’ajuster les scopes (défaut rest_webservices). SuiteQL filtre par filiale : erpLinks.netsuite = ID interne subsidiary.

SAP Business One

Service Layer : URL …/b1s/v1, société et utilisateur chiffrés. Plusieurs filiales : erpLinks.sap_business_one = BPLID (ou équivalent renvoyé sur les lignes). Option avancée journalEntryCollection si votre Service Layer expose un autre nom de collection OData (défaut JournalEntries). Journalisation ERP_SYNC_SAP_B1_VERBOSE_LOG=1 pour le décompte des lignes ignorées faute de mapping.

SAP S/4HANA

Racine du service OData publié (ex. API_GLACCOUNTLINEITEM_SRV) + soit jeton Bearer collé (mode manuel), soit OAuth client_credentials (tokenUrl, clientId, clientSecret, scope optionnel) avec rafraîchissement automatique avant expiration. erpLinks.sap_s4hana = CompanyCode. Champs optionnels entitySetName et preferredDateFields (liste séparée par virgules) si votre API diffère. ERP_SYNC_SAP_S4_VERBOSE_LOG=1 trace le chemin OData (sans secret).

Sage Intacct

Web Services avec sender / société / utilisateur ; erpLinks.sage_intacct = LOCATIONID lorsque plusieurs lieux sont modélisés. La synchro pagine automatiquement via readMore lorsque Intacct renvoie numremaining > 0 après readByQuery sur GLENTRY.