REDA One Centre d’aide
FR
Langue
English EN Español ES Português PT Italiano bientôt disponible Français FR Deutsch bientôt disponible العربية bientôt disponible
reda.one ↗
Accueil / REDA Financials AI / API et intégration / API Salesforce / API REST pour les données comptables

API REST pour les données comptables

Chaque document REDA Financials étant un objet personnalisé Salesforce, l’API REST standard est la porte d’entrée de vos intégrations : créez des factures depuis votre CRM ou votre système de facturation, interrogez les soldes pour les charger dans un entrepôt de données, comptabilisez des documents depuis un middleware — le tout avec les points de terminaison que votre équipe connaît déjà.

Le modèle de référence : créer un brouillon, puis comptabiliser

Insérer l’en-tête au statut Brouillon

Envoyez le document par POST (par exemple refin__Sales_Invoice__c) avec l’entité, le client et les dates — statut omis (Brouillon par défaut) ou explicitement à la valeur 'Draft'. Les déclencheurs se comportent exactement comme dans l’interface : numéro de document attribué à partir de la séquence de l’entité, grand livre et période déduits, date d’échéance calculée à partir des conditions de paiement.

Insérer les lignes

Envoyez par POST les enregistrements de ligne (refin__Sales_Invoice_Line__c) qui référencent l’en-tête — produits, quantités, prix, profils fiscaux : exactement les champs que demande le formulaire. (L’API composite regroupe proprement les étapes 1 et 2 en un seul appel.)

Passer le statut à Comptabilisé par un PATCH

Mettez à jour refin__Status__c avec la valeur 'Posted'. Cette simple mise à jour de champ est l’action de comptabilisation : le moteur passe les écritures au grand livre, calcule la taxe et la retenue à la source, enregistre les taux de change — et applique chaque contrôle (équilibre, période ouverte, approbation, comptes actifs). Une comptabilisation refusée revient sous la forme d’une erreur DML standard, avec mot pour mot le message qu’un utilisateur verrait.

Les points de terminaison en un coup d’œil

Rien ici n’est propre à REDA — ce sont les points de terminaison REST standard de Salesforce, appliqués aux objets refin__ (le package est construit en API v65.0 ; toute version actuelle fonctionne) :

TâcheMéthode et point de terminaison
Créer un en-tête de documentPOST /services/data/v65.0/sobjects/refin__Sales_Invoice__c
Lire un enregistrementGET /services/data/v65.0/sobjects/refin__Sales_Invoice__c/{id}
Mettre à jour (comptabilisation comprise)PATCH /services/data/v65.0/sobjects/refin__Sales_Invoice__c/{id}
Exécuter une requêteGET /services/data/v65.0/query?q=<SOQL>
En-tête + lignes en un seul aller-retourPOST /services/data/v65.0/composite (ou composite/tree)
Découvrir les champs et les listes de sélectionGET /services/data/v65.0/sobjects/refin__Sales_Invoice__c/describe

Comptabiliser un brouillon : la requête HTTP

L’appel de comptabilisation est volontairement sans surprise — un seul champ :

PATCH /services/data/v65.0/sobjects/refin__Sales_Invoice__c/a0X8d000001AbCdEAV

{
  "refin__Status__c": "Posted"
}

Un succès renvoie un HTTP 204 No Content — et, derrière, un document entièrement comptabilisé. Un refus revient sous la forme du tableau d’erreurs standard, porteur du message lisible du package ; par exemple, un utilisateur d’intégration sans siège de licence REDA reçoit :

[
  {
    "message": "You must be a licensed REDA Financials user to create, edit, or delete Accounting Transactions. Contact your administrator.",
    "errorCode": "FIELD_CUSTOM_VALIDATION_EXCEPTION",
    "fields": []
  }
]

Pour relire ce que vous avez créé, une simple requête SOQL suffit :

GET /services/data/v65.0/query
    ?q=SELECT Id, Name, refin__Status__c
       FROM refin__Sales_Invoice__c
       WHERE refin__Status__c = 'Draft'

Pour le corps des requêtes d’insertion, récupérez la liste des champs depuis le point de terminaison describe ou le Gestionnaire d’objet plutôt que dans cet article — ce sont les ensembles de champs et les champs obligatoires de votre organisation qui font foi, y compris les champs de dimension supplémentaires ajoutés par votre administrateur.

Ce que la plateforme renseigne pour vous

Lors de…Les déclencheurs…Conséquence pour l’intégration
Insertion sans statutLe Statut prend la valeur Brouillon par défautVous pouvez omettre refin__Status__c à la création
InsertionNuméro de document attribué à partir de la séquence de l’entité (selon le type — factures et avoirs sont numérotés séparément) ; renseigner Name à l’avance active la numérotation manuelle, l’unicité étant contrôlée dans les deux casNe générez pas vos propres numéros, sauf si vous comptez en assumer la gestion
InsertionLes valeurs par défaut de l’entité sont appliquées : grand livre, période comptable, date d’échéance selon la condition de paiement du fournisseurEnvoyez les champs métier ; omettez ceux qui peuvent être déduits
Modification de l’Entité ou du Type de facture sur un brouillonLe document reçoit un nouveau numéro de séquenceAttendez-vous à un nouveau numéro si votre middleware « déplace » un brouillon d’une entité à une autre
Brouillon → ComptabiliséLe moteur complet : écritures au grand livre, calcul de la taxe et de la retenue à la source, enregistrement des taux de change, tous les contrôlesComptabiliser via l’API équivaut, à l’octet près, à comptabiliser depuis l’interface

Lire les données

  • SOQL via le point de terminaison query — factures ouvertes, encaissements non imputés, champs de balance âgée (ce sont des champs de formule sur les enregistrements) : tout ce dont votre tableau de bord a besoin.
  • Le grand livre lui-même — refin__Accounting_Transaction__c fait foi pour la comptabilisation ; additionnez débits et crédits par compte général et vous reconstituez n’importe quel solde à l’extérieur.
  • Les cumuls sont des champs — le solde dû d’une facture, le montant non imputé d’un encaissement, le montant engagé d’une ligne budgétaire : tout s’interroge directement, sans calcul de votre côté.

Les règles à respecter

  • Aucun contournement n’existe : les documents comptabilisés sont verrouillés pour les modifications via l’API exactement comme pour les utilisateurs ; les corrections passent par les parcours de décomptabilisation ou d’annulation, soit, par programme, les mêmes transitions de statut.
  • Les imputations sont aussi des enregistrements — créer un refin__Cash_Receipt_Application__c impute un encaissement (tous les contrôles de correspondance s’exécutent) ; le supprimer annule l’imputation.
  • Respectez les dates de clôture — les opérations d’écriture dans des livres clôturés sont refusées ; votre intégration doit dater les documents dans des périodes ouvertes, comme le ferait tout comptable.
  • L’idempotence vous incombe — la clé naturelle est la référence de votre système source (placez-la dans le champ Référence et vérifiez-la avant l’insertion ; côté comptes fournisseurs, la validation des doublons sur la référence fournisseur vous y aide).
Prenez l’habitude de la sandbox. Pointez l’intégration vers une sandbox, faites passer un document de bout en bout et examinez le résultat dans l’interface — la page d’enregistrement vous montre exactement ce que votre appel d’API a produit, transactions comptables comprises. Dix minutes d’observation valent mieux qu’une semaine de suppositions.

Erreurs courantes à éviter

ErreurPourquoi c’est un problèmeÀ faire à la place
Insérer des documents directement au Statut Comptabilisé en un seul appelLa comptabilisation est conçue autour de la transition Brouillon → Comptabilisé ; une insertion directe au statut Comptabilisé sort du modèle pris en charge et son comportement n’est pas garantiInsérez en Brouillon, puis passez à Comptabilisé par un PATCH — l’API composite en fait de toute façon un seul aller-retour
Générer vos propres numéros de document à la légèreRenseigner Name à l’avance fait passer ce document en numérotation manuelle — l’unicité devient alors votre responsabilité, entité par entitéLaissez les séquences numéroter les documents ; réservez la numérotation manuelle à des scénarios de migration délibérés
Exécuter l’intégration avec un identifiant d’administrateur empruntéLes pistes d’audit deviennent floues, les changements de mot de passe interrompent le flux et les autorisations dépassent de loin ce qu’exige la tâcheUn utilisateur d’intégration dédié, doté d’un siège de licence et de l’ensemble d’autorisations du package le plus restreint qui permette de faire le travail
Relancer aveuglément les comptabilisations en échecLe message vous a indiqué la cause de l’échec — sur une période clôturée, chaque nouvelle tentative se heurtera indéfiniment au même murAnalysez l’erreur, corrigez les données (ou transmettez à une personne), puis relancez
Négliger le champ RéférenceVous perdez votre clé d’idempotence et le meilleur critère de correspondance du rapprochement bancaireReportez toujours l’identifiant réel du système source dans le champ Référence

Pour aller plus loin

  1. API Bulk (import/export de données) — le même modèle à l’échelle d’une migration.
  2. Présentation de l’API — le panorama complet.
  3. Soldes d’ouverture et migration des données — le projet REST/Bulk par excellence.
Documentation officielle de Salesforce L’API REST elle-même est une fonctionnalité standard de Salesforce — REDA apporte les objets, pas le transport. Les références qui font autorité sont le Guide du développeur de l’API REST et la référence SOQL. Les liens s’ouvrent dans un nouvel onglet.

Questions fréquentes

Utilisez la méthode en deux temps (insertion en Brouillon, puis mise à jour à Comptabilisé) — c’est le modèle autour duquel le moteur est conçu, elle sépare nettement les erreurs « données incorrectes » des erreurs « comptabilisation refusée », et elle reproduit l’enregistrement puis la comptabilisation de l’interface. Les appels composites en font de toute façon un seul aller-retour.

Ce sont des erreurs DML standard qui reprennent mot pour mot les messages de validation du package (« La date de transaction … est antérieure ou égale à la date de clôture des livres GL… », « Ce document exige une approbation avant comptabilisation. »). Journalisez-les, faites-les remonter, corrigez les données — les messages sont rédigés pour des humains.

Le package cible l’API v65+ ; utilisez une version actuelle et les objets refin__ se comportent comme n’importe quel objet personnalisé dans cette version.

Oui, s’il crée ou comptabilise des documents comptables — le contrôle de licence s’applique aux opérations d’écriture via l’API exactement comme dans l’interface, et un utilisateur sans siège est refusé avec le message exact présenté ci-dessus. Attribuez un siège et l’ensemble d’autorisations approprié à l’utilisateur d’intégration, comme vous le feriez pour une personne.

Non — par conception, le package ne livre aucune ressource REST personnalisée. Les points de terminaison standard sObject, query et composite appliqués aux objets refin__ constituent l’intégralité de la surface REST : tout client REST Salesforce, tout outil ETL et tout connecteur de middleware la parle donc déjà.

Cet article vous a-t-il été utile ?