Table of Contents

Import au format JSON

Présentation générale de l'API et finalité fonctionnelle

Cette API permet d'effectuer un import de tous les éléments rattachés aux mouvements comptables au format JSON :

  • écritures comptables,
  • écritures analytiques,
  • comptes généraux,
  • tiers,
  • axes et sections analytiques,
  • journaux,
  • gestion des pièces jointes liées aux écritures,
  • récupération du lettrage,
  • modes de paiements.

Toutes données seront exploitées dans Cegid Loop.

Procédure

Il faut appeler un endpoint permettant d’enregistrer une demande d’import d’écritures au format JSON. Après insertion, un service interne récupèrera la demande pour la traiter et effectuer l’import.

Route Méthode http Description
/importJson POST Insère une demande d’import d’écritures au format JSON

Paramétrage de l’appel

Méthode http pour la demande : POST

Header(s) attendu(s) obligatoire(s) de la demande : API-KEY

Format du corps de la demande : JSON (format UTF8)

Structure du corps de la demande :

Clé Type Description
codeIbs String Code du dossier dans Loop
data Objet JSON Objet JSON contenant l’ensemble des paramètres et données à importer

Structure JSON de l’objet data :

Clé Type Description
contexte Object JSON Objet JSON contenant 2 propriétés, les dates de début et de fin des écritures à importer
options Object JSON Objet JSON contenant des options de l’import
ecritures Array JSON Tableau de JSON décrivant une écriture
Structure JSON de l’objet contexte :
Clé Type Description
from String Date de début des écritures à importer au format iso
to String Date de fin des écritures à importer au format iso

Exemple de dates :

- "from" : "2020-02-01T00 :00 :00.000Z"

- "to" : "2020-06-04T00:00:00.000Z"

Notez :

La propriété "contexte" n’est pas obligatoire si l’option multiPeriode vaut true.

Focus sur la notion de multipériode

Cette option devra être utilisée si le contenu du fichier JSON concerne plusieurs périodes ouvertes (excecice en cours et exercice suivant).

Structure JSON de l’objet options :
Clé Type Description
separatorDecimal String Séparateur de décimal pour les montants. "." par défaut.
formatDate String Format de date à utiliser pour l’import des écritures. JJ/MM/AAAA par défaut.
multiPeriode Boolean Permet d’indiquer si les écritures sont autorisées sur toutes les périodes ouvertes (true) ou juste sur la dernière période ouverte (false). false par défaut.
failOnUnbalanced Boolean Permet de déterminer si l’on souhaite lever une erreur en cas de groupes d’écritures non-équilibrés. true par défaut.
createNewJournaux Boolean Permet d'indiquer s’il faut créer un nouveau journal quand le journal de l’écriture n’existe pas dans le dossier. true par défaut.
createNewComptes Boolean Permet d'indiquer s’il faut créer un nouveau compte quand le compte de l’écriture n’existe pas dans le dossier. true par défaut.
createNewTiers Boolean Permet d'indiquer s’il faut créer un nouveau tiers quand le tiers de l’écriture n’existe pas dans le dossier. Si false, alors l’écriture sera créée avec les tiers d’attente de l’écriture. true par défaut.
defaultJournalId String uuid permettant de spécifier le journal par défaut. null par défaut.
sortLines Boolean Permet de trier les lignes. false par défaut.
comptesRules Tableau Permet de gérer les règles de correspondance pour les comptes (correspondance par racine ou par fourchette de compte). null par défaut.
newFolio Boolean Permet de créer un nouveau groupe. false par défaut.
balanceAuto Boolean Permet de créer l'équilibrage automatiquement. true par défaut.
aNouveaux Boolean Permet de gérer les à-nouveaux. true par défaut.
defaultCompte String uuid du compte à créer par défaut si l'option createNewCompte est à false. null par défaut.
createPieceRef Boolean Permet de créer la référence de la pièce si aucune pièce n'est trouvée. false par défaut.

Exemple d'options :

- "separatorDecimal":".",

- "formatDate": "AAAA-MM-JJThh:mm:ss.nnnZ",

- "multiPeriode": false,

- "failOnUnbalanced": true,

- "createNewJournaux": false,

- "createNewComptes": true,

- "createNewTiers": true.

Notez :

La présence d'options dans le fichier n'est pas obligatoire. Les valeurs par défaut sont définis dans le tableau ci-dessus

Structure JSON de l’objet ecritures :
Clé Type Value Description
fichier Object JSON Objet JSON contenant l’url authentifiée de la pièce jointe associée au mouvement
date String Date comptable de l’écriture
debit Object JSON Objet JSON contenant les informations sur le débit (amount, currency, currencyAmount, currencyRate)
credit Object JSON Objet JSON contenant les informations sur le crédit (amount, currency, currencyAmount, currencyRate)
journal String Code du journal
compte String Numéro de compte général
libelle String Libellé de l’écriture
reference String Référence de l’écriture
tiers String Code du tiers
refPiece String Référence de la pièce
commentaire String Commentaire sur la ligne

dateLettrage

Cf. "Cas particuliers"

Date du lettrage

codeLettrage

Cf. "Cas particuliers"

String Code du lettrage
compteLib String Libellé du compte général
journalLib String Libellé du journal
dateOperation String Date d'opération
dateEcheance String Date d'échéance
datePointage String Date de pointage
codePointage String uuid code pointage
modePaiement Integer Mode de paiement de la ligne {Aucun:1, Espèces:2, Chèque:3, Carte bancaire:4, Virement:5, Prélèvement:6, TIP:7, LCR BOR:8, LCR magnétique:9, Traite:10, Télérèglement:11}
typeMouvement String Type de mouvement pour l'entête {Générale:1, Prévisionnelle:2, Simulation:3, Projet:4, Initial:5, Budget:6, Brouillard:7}
type String Type d'écriture {Général:1, Simulation:2, Prévisionnel:3, Projet:4, Initial:5, Budget:6, Brouillard:7}
lot String uuid du lot d'écriture
typeLot String Type de lot {Saisie de trésorerie:1, Reconnaissance de facture:2, Quickbooks:4}
ecritureMere String uuid ecriture mère
ecritureOrigine String Ecriture d’origine au format uuid

axeAna[codeAxe]

Cf. "Cas particuliers”

Array JSON Objet JSON décrivant l’analytique avec [codeAxe] représentant le code l’axe analytique

Les différents codes retour en cas de succès

Code retour http de la réponse : 200

Format corps de la réponse : JSON

Structure du corps de la réponse :

Clé Type Valeur
accountingImportRequestId String String sous forme de guid par exemple : "e8bec446-1d5c-4e78-9017-6e2600887a09". Ce guid permettra de suivre la demande via un autre endpoint getImportStatus
{
    "accountingImportRequestId": "97ae1cb4-2ccd-449d-b0b2-582ecbdededd"
}

Les différents codes retour en cas d’erreur

Code retour http de la réponse : 200

Format corps de la réponse : JSON

Structure du corps de la réponse :

Clé Type Valeur
error Object JSON Objet JSON contenant 2 propriétés : instanceId et message
instanceId String String sous forme de guid correspondant à l’id de l’instance du service d’import
message String Message explicatif de l’erreur : Cf. liste ci-dessous

Liste des messages d’erreurs possibles :

  • Il n'y a pas de payload : la méthode est-elle bien en POST dans la requête ?
  • Le contexte est obligatoire sans l'option multiPeriode
  • Il n'y a pas d'écritures à importer (l'objet écritures est vide)
  • Les écritures doivent être présentées sous formes de tableau
  • Le tableau d'écritures doit comporter au moins deux lignes
  • Les dates du contexte doivent être au format ISO 'YYYY-MM-DDTHH:mm:ss.SSSZ'

Dans l’interface des imports partenaires, il n'est pas possible de récupérer les statuts 10 et 20 ("en attente" et "en cours").

En effet, en fin de traitement de l'import via l'API, on aura uniquement les statuts à partir de 25.

Afin de récupérer les statuts "en attente" et "en cours", il faut utiliser l’API "getImportStatus".

Cas spécifiques :

Import avec analytique

Pré-requis :

  • La gestion de l'analytique doit être activée dans le dossier Cegid Loop (Configuration>Comptabilité)
  • Le compte général doit être ventilable,
  • la section et l'axe doivent être renseignés dans le fichier Json,
  • si la section n'est pas définie dans le dossier Cegid Loop, elle sera créée lors le l'import,
  • l'axe doit obligatoirement être créé dans Cegid Loop au préalable.
{
    "axeAnaA1": [
    {
        "debit": {
            "amount": 700,
            "currency": "EUR",
            "currencyAmount": 700,
            "currencyRate": 1
        },
        "credit": {
            "amount": 0,
            "currency": "EUR",
            "currencyAmount": 0,
            "currencyRate": 1
        },
        "section": "AA1"
    },
    {
        "debit": {
            "amount": 300,
            "currency": "EUR",
            "currencyAmount": 300,
            "currencyRate": 1
        },
        "credit": {
            "amount": 0,
            "currency": "EUR",
            "currencyAmount": 0,
            "currencyRate": 1
        },
        "section": "AB1"
    }
],
"axeAnaA2": [
    {
        "debit": {
            "amount": 1000,
            "currency": "EUR",
            "currencyAmount": 1000,
            "currencyRate": 1
        },
        "credit": {
            "amount": 0,
            "currency": "EUR",
            "currencyAmount": 0,
            "currencyRate": 1
        },
        "section": "AA2"
    }
]
}

Import avec lettrage

Pour que le lettrage soit correctement importé :

  • Soit le compte général est lettrable, soit le tiers l'est,
  • Le code lettrage doit être sur le même compte lettrable,
  • Le paquet lettré doit être équilibré (débit = crédit) pour un même compte lettrable.
{
    "codeLettrage": "letr1"
}

Import avec pièce jointe

A propos du champ "fichier URI" : Afin que la pièce jointe soit associée à l'écriture, le champ "fichier.uri" doit contenir une URL authentifiée. Celle-ci constituera un lien vers la pièce jointe de l'écriture et sera déposée dans le Sharepoint.

Pré-requis : L'URL ou l'URI pour l'authentification au fichier (pièce jointe liée à l'écritutre comptable) doit être valide pendant au moins 24 heures (recommandation de Microsoft). L'objectif est de pouvoir gérer le processus de "retry" et de suivre les interruptions de service, qu'elles soient volontaires ou involontaires.

{
    "fichier": {
	"uri": "https://test.rdd.com/piecejointe/123454321234565.txt"
}
}

Exemple de fichier JSON :

{
    {
    "codeIbs": "IMPORTRAK",
    "data": {
        "contexte" : {
                "from" : "2023-02-01T00:00:00.000Z",
                "to" : "2023-06-05T00:00:00.000Z"
            },
        "options" : {
            "separatorDecimal" : ".",
            "formatDate" : "AAAA-MM-JJThh:mm:ss.nnnZ",
            "multiPeriode" : false,
            "failOnUnbalanced" : true,
            "createNewJournaux" : true,
            "createNewComptes" : true,
            "createNewTiers" : true
        },
        "ecritures" : [
            {
                "fichier": {
                    "uri": "https://test.rdd.com/piecejointe/12345432123456543.txt"
                },
                "date" : "2023-06-02T00:00:00.000Z",
                "debit" : {
                    "amount" : 1000,
                    "currency" : "EUR",
                    "currencyAmount" : 1000,
                    "currencyRate" : 1
                },
                "credit" : {
                    "amount" : 0,
                    "currency" : "EUR",
                    "currencyAmount" : 0,
                    "currencyRate" : 1
                },
                "journal" : "ACH",
                "compte" : "21860000",
                "libelle" : "Facture PC DELL",
                "reference" : "FAC-2023-01-29",
                "codeLettrage": "letr1",
                "ecritureOrigine" : "0d07ade2-c4fa-4892-90bd-2dbd50d1c6b7",
                "modePaiement": 9,
                "axeAnaA1" : [ 
                    {
                        "debit" : {
                            "amount" : 700,
                            "currency" : "EUR",
                            "currencyAmount" : 700,
                            "currencyRate" : 1
                        },
                        "credit" : {
                            "amount" : 0,
                            "currency" : "EUR",
                            "currencyAmount" : 0,
                            "currencyRate" : 1
                        },
                        "section" : "AA1"
                    }, 
                    {
                        "debit" : {
                            "amount" : 300,
                            "currency" : "EUR",
                            "currencyAmount" : 300,
                            "currencyRate" : 1
                        },
                        "credit" : {
                            "amount" : 0,
                            "currency" : "EUR",
                            "currencyAmount" : 0,
                            "currencyRate" : 1
                        },
                        "section" : "AB1"
                    }
                ],
                "axeAnaA2" : [ 
                    {
                        "debit" : {
                            "amount" : 1000,
                            "currency" : "EUR",
                            "currencyAmount" : 1000,
                            "currencyRate" : 1
                        },
                        "credit" : {
                            "amount" : 0,
                            "currency" : "EUR",
                            "currencyAmount" : 0,
                            "currencyRate" : 1
                        },
                        "section" : "AA2"
                    }
                ]
            }, 
            {
                "date" : "2021-06-02T00:00:00.000Z",
                "debit" : {
                    "amount" : 200,
                    "currency" : "EUR",
                    "currencyAmount" : 200,
                    "currencyRate" : 1
                    },
                    "credit" : {
                        "amount" : 0,
                        "currency" : "EUR",
                        "currencyAmount" : 0,
                        "currencyRate" : 1
                    },
                    "journal" : "ACH",
                    "compte" : "44562000",
                    "libelle" : "Facture PC DELL",
                    "reference" : "FAC-2023-01-29",
                    "ecritureOrigine" : "0d07ade2-c4fa-4892-90bd-2dbd50d1c6b7"
                },         
                {
                    "date" : "2023-06-02T00:00:00.000Z",
                    "debit" : {
                        "amount" : 0,
                        "currency" : "EUR",
                        "currencyAmount" : 0,
                        "currencyRate" : 1
                    },
                    "credit" : {
                        "amount" : 200,
                        "currency" : "EUR",
                        "currencyAmount" : 200,
                        "currencyRate" : 1
                    },
                    "journal" : "ACH",
                    "compte" : "44762000",
                    "codeLettrage": "letr1",
                    "tiers" : "DELL",
                    "tiersLib" : "DELL FRANCE SA",
                    "libelle" : "Facture PC DELL AVO1",
                    "reference" : "FAC-2023-01-29",
                    "ecritureOrigine" : "0d07ade2-c4fa-4892-90bd-2dbd50d1c6b7"
                },
                {
                "date" : "2023-06-02T00:00:00.000Z",
                "debit" : {
                    "amount" : 0,
                    "currency" : "EUR",
                    "currencyAmount" : 0,
                    "currencyRate" : 1
                },
                "credit" : {
                    "amount" : 1000,
                    "currency" : "EUR",
                    "currencyAmount" : 1000,
                    "currencyRate" : 1
                },
                "journal" : "ACH",
                "compte" : "41400000",
                "codeLettrage": "letr1",
                "tiers": "DELL",
                "tiersLib": "DELL FRANCE SA",
                "libelle" : "Facture PC DELL AVO1",
                "reference" : "FAC-2023-01-29",
                "ecritureOrigine" : "0d07ade2-c4fa-4892-90bd-2dbd50d1c6b7"
            }
        ]
    }
}
}