Files
logisticsAPI/documentation/documentation_api_logistics.md
Marvin b95ee46b1c Add detailed column descriptions for API logistics documentation
- Introduced a new section for common system columns across tables, providing clarity on their types and purposes.
- Expanded the documentation with detailed descriptions for columns in the `art`, `attach`, `barcode`, and `category` tables, enhancing user understanding of the API's data structure.
- Improved overall documentation organization to facilitate easier navigation and reference for developers.
2026-02-23 14:32:47 +01:00

114 KiB

Documentation API Logistics (Flex/ESI Gescom)

Dernière mise à jour : 2026-02-23


Table des matières

  1. Pré-requis
  2. Environnements d'utilisation
  3. Comment effectuer des requêtes
  4. Structure de réponse
  5. Tables et colonnes disponibles
  6. Récupération de données
  7. Envoi de données
  8. Relations entre entités
  9. Remarques et points d'attention
  10. Ressources externes

1. Pré-requis

Connexion VPN

L'API Logistics est hébergée sur l'infrastructure ESI Cloud. Pour y accéder depuis un poste de travail local (hors du réseau ESI), une connexion VPN vers ESI Cloud est obligatoire. Sans cette connexion VPN, le serveur n'est pas joignable. Contactez votre administrateur réseau pour obtenir les identifiants et la configuration du VPN.

Accès au serveur

L'API Logistics est hébergée sur un serveur privé. Les informations de connexion sont les suivantes :

Élément Valeur
Serveur TSE-10-TEST
Hôte tse-10-test.esiweb.pro (public) / tse-10-test.esi.local (réseau privé)
Port HTTP 5186
Port HTTPS 7126

L'accès au serveur nécessite soit une connexion au réseau privé (via VPN), soit l'utilisation de l'hôte public avec le port adéquat.

Clé API

Toutes les requêtes sont protégées par une clé API. Cette clé doit être transmise dans le header HTTP X-API-KEY de chaque requête. Sans clé valide, l'API retourne une erreur d'authentification.

Dossier

Chaque requête cible un dossier comptable spécifique. Le nom du dossier est inclus dans l'URL de la requête. Le nom du dossier doit impérativement être en minuscules dans toutes les URLs (exemple : esigescom, et non EsiGescom).

Variables d'environnement

L'application Laravel utilise les variables d'environnement suivantes pour se connecter à l'API. Elles doivent être configurées dans le fichier .env :

Variable Description Exemple
LOGISTICS_API_BASE_URL URL de base du serveur API http://tse-10-test.esi.local
LOGISTICS_API_KEY Clé d'authentification API YOUR_API_KEY
LOGISTICS_API_FOLDER Nom du dossier comptable (minuscules) esigescom
LOGISTICS_API_TIMEOUT Timeout total de la requête en secondes 300
LOGISTICS_API_CONNECT_TIMEOUT Timeout de connexion en secondes 10
LOGISTICS_API_RETRY_TIMES Nombre de tentatives en cas d'échec de connexion 3
LOGISTICS_API_RETRY_SLEEP_MS Délai entre les tentatives en millisecondes 500

Configuration Laravel

Les variables d'environnement sont lues par le fichier de configuration config/logistics.php :

Clé de config Variable .env Défaut
logistics.base_url LOGISTICS_API_BASE_URL -
logistics.api_key LOGISTICS_API_KEY -
logistics.folder LOGISTICS_API_FOLDER -
logistics.timeout LOGISTICS_API_TIMEOUT 30
logistics.connect_timeout LOGISTICS_API_CONNECT_TIMEOUT 10
logistics.retry.times LOGISTICS_API_RETRY_TIMES 3
logistics.retry.sleep_ms LOGISTICS_API_RETRY_SLEEP_MS 500

Le service App\Services\LogisticsService utilise ces valeurs pour configurer automatiquement les appels HTTP (URL, headers, timeouts, retry). En cas d'échec de connexion, le service effectue un retry automatique selon la configuration.


2. Environnements d'utilisation

L'API Logistics peut être interrogée depuis deux environnements distincts. Selon l'environnement utilisé, l'URL de base et les conditions d'accès diffèrent.

2.1 Projet local avec VPN

Dans ce scénario, le développeur travaille sur son poste local (par exemple avec Laravel Herd) et communique avec le serveur Logistics à distance via le VPN ESI Cloud.

Élément Valeur
Connexion VPN Obligatoire (VPN vers ESI Cloud)
URL de base http://tse-10-test.esi.local
Format d'URL complet http://tse-10-test.esi.local/{dossier}/{endpoint}

Exemple de configuration .env pour un projet local :

LOGISTICS_API_BASE_URL=http://tse-10-test.esi.local
LOGISTICS_API_KEY=votre-cle-api
LOGISTICS_API_FOLDER=esigescom

2.2 Bureau à distance (Postman)

Dans ce scénario, l'utilisateur se connecte au serveur via une connexion de bureau à distance (Remote Desktop) et utilise Postman directement depuis cette session. Étant déjà sur le réseau interne, aucun VPN n'est nécessaire et le serveur est accessible directement.

Élément Valeur
Connexion VPN Non requise (connexion directe via bureau à distance)
URL de base http://tse-10-test.esiweb.pro
Format d'URL complet http://tse-10-test.esiweb.pro/{dossier}/{endpoint}

Pour obtenir un accès au bureau à distance et à l'application Logistics, contactez Claudi Dewandre.

2.3 Récapitulatif des différences

Critère Projet local (VPN) Bureau à distance (Postman)
VPN ESI Cloud Obligatoire Non requis
Outil Application Laravel, cURL, Postman local Postman sur le serveur distant
URL de base http://tse-10-test.esi.local http://tse-10-test.esiweb.pro
Accès requis Identifiants VPN + clé API Accès bureau à distance + accès Logistics (contacter Claudi Dewandre) + clé API

3. Comment effectuer des requêtes

Méthode HTTP

Tous les endpoints utilisent la méthode POST, y compris les opérations de lecture. Aucun endpoint ne répond aux méthodes GET, PUT, PATCH ou DELETE.

Format de l'URL

L'URL de chaque requête suit le schéma suivant :

POST {base_url}/{dossier}/{endpoint}

Où :

  • {base_url} est l'URL de base du serveur (ex : http://tse-10-test.esi.local)
  • {dossier} est le nom du dossier comptable en minuscules (ex : esigescom)
  • {endpoint} est le nom de l'endpoint (ex : art_list, document_detail)

Headers obligatoires

Header Valeur Description
X-API-KEY <votre clé API> Clé d'authentification (obligatoire)
Content-Type application/json Type de contenu du body (obligatoire si body présent)

Exemple de requête complète

POST /esigescom/art_list HTTP/1.1
Host: tse-10-test.esiweb.pro:5186
X-API-KEY: votre-cle-api
Content-Type: application/json

{
    "search": "chaise",
    "results": 10,
    "select": "artid,name1"
}

Paramètres des requêtes

Les paramètres sont transmis dans le body de la requête au format JSON. Certains endpoints n'exigent aucun paramètre (body vide ou {}). Les paramètres peuvent être de différents types :

Type Description Exemple
string Chaîne de caractères "ART001"
int Nombre entier 10
array Tableau de valeurs ["ART001", "ART002"]

Attention : certains paramètres qui représentent des nombres doivent être transmis au format string (ex : QTY dans Document_GetUnitPriceAndVat doit être "2" et non 2).

Gestion des erreurs

Le service LogisticsService de l'application gère automatiquement :

  • Retry automatique : en cas d'échec de connexion (ConnectionException), le service retente automatiquement selon la configuration (retry.times et retry.sleep_ms).
  • Logging : chaque requête (réussie ou échouée) est enregistrée dans la table api_request_logs avec l'endpoint, les paramètres, le code de statut et la réponse.
  • Exceptions : en cas d'erreur, une LogisticsApiException est levée avec un message explicite en français.
  • Traduction des erreurs : la classe App\Support\ApiErrorTranslator normalise le champ error de la réponse API (qui peut être null, une chaîne ou un tableau de chaînes) et ajoute une explication en français aux messages d'erreur connus (ex : "Search terms are required" est enrichi de "Le champ de recherche est obligatoire.").

Validation des champs

Avant chaque appel API, les pages Filament vérifient que les champs obligatoires sont remplis. Si un champ requis est vide, un message d'erreur en français est affiché et l'appel API n'est pas effectué. Les règles de validation sont basées sur la documentation fournisseur (documentation/WEB-A-1 (3).md). Cette validation côté client évite des appels API inutiles et fournit un retour immédiat à l'utilisateur.


4. Structure de réponse

Format standard

Tous les endpoints retournent un objet JSON avec la même structure :

{
    "data": "<résultat de la requête>",
    "metadata": {
        "rowcount": 0,
        "issuccess": true
    },
    "error": null
}

Description des clés

Clé Type Description
data mixed Le résultat de la requête. Peut être un tableau d'objets, un objet unique, une chaîne, ou null.
metadata object Informations sur la requête. Contient toujours rowcount et issuccess. Peut contenir d'autres clés selon l'endpoint.
metadata.rowcount int Nombre d'éléments retournés dans data.
metadata.issuccess bool true si la requête a réussi, false sinon.
error string, array ou null Message d'erreur en cas d'échec. Peut être une chaîne, un tableau de chaînes, ou null si la requête a réussi. L'application normalise ce champ via ApiErrorTranslator.

Exemple de réponse réussie

{
    "data": [
        { "artid": "ART001", "name1": "Chaise bureau" },
        { "artid": "ART002", "name1": "Chaise visiteur" }
    ],
    "metadata": {
        "rowcount": 2,
        "issuccess": true
    },
    "error": null
}

Exemple de réponse en erreur

{
    "data": null,
    "metadata": {
        "rowcount": 0,
        "issuccess": false
    },
    "error": "Invalid API key"
}

Métadonnées spécifiques par endpoint

Certains endpoints retournent des clés supplémentaires dans metadata :

Endpoint Clés supplémentaires Description
tables_list tableCount, folderType, endpoint Nombre total de tables, type de base de données (ex : DBF), nom de l'endpoint
column_list columnCount, tableName Nombre de colonnes retournées, nom de la table interrogée

5. Tables et colonnes disponibles

Liste des tables

L'API expose 16 tables. Chacune correspond à un domaine fonctionnel de la gestion commerciale :

Table Colonnes Description
art 160 Articles : références produits du catalogue. Contient l'identifiant, le nom, la description, les prix, les unités, les catégories, etc.
attach 13 Fichiers attachés : pièces jointes associées aux documents (factures, bons de commande, etc.).
barcode 12 Codes-barres : codes-barres associés aux articles pour l'identification et le scan.
category 10 Catégories : catégories de classification pour organiser les articles.
codes 50 Codes système : codes de configuration internes au système de gestion.
cust 216 Tiers/Clients : fiches tiers (clients, fournisseurs). Contient l'identifiant, le nom, l'adresse, les conditions commerciales, les coordonnées, etc.
docdet 82 Lignes de documents : lignes de détail des documents commerciaux. Chaque ligne référence un article avec sa quantité, son prix, sa TVA, etc.
dochead 212 En-têtes de documents : en-têtes des documents commerciaux (devis, commandes, factures). Contient le tiers, la date, le journal, le statut, les totaux, etc.
docpay 22 Paiements : paiements associés aux documents (montant, date, mode de paiement).
file 17 Fichiers : fichiers système gérés par l'application.
hist 50 Historique : historique des opérations effectuées dans le système.
incodes 24 Codes internes : codes internes paramétrables, utilisés pour les listes de valeurs, les types, etc.
jnl 155 Journaux : journaux comptables et commerciaux. Chaque journal regroupe des documents du même type (ventes, achats, etc.).
pers 78 Personnes/Contacts : fiches de contacts associées aux tiers ou à l'entreprise.
price 28 Tarifs : grilles de prix et conditions tarifaires par article, client ou catégorie.
stk 20 Stock : quantités en stock par article et par emplacement.

Types de colonnes

Chaque colonne d'une table possède un type de données identifié par un code à une lettre :

Code Label Description
C Caractère Chaîne de caractères (texte libre, identifiants, noms, etc.)
N Numérique Nombre entier ou décimal (quantités, prix, montants, etc.)
T Date/Heure Timestamp combinant date et heure
D Date Date seule (sans composante horaire)
L Logique Booléen (true/false)
M Mémo Texte long (champs de description étendus, remarques, etc.)

Colonnes systeme communes

La plupart des tables contiennent les colonnes systeme suivantes. Elles ne sont pas repetees dans les tableaux detailles ci-dessous.

Colonne Type Taille Description
S_CREDATE T 8 Date et heure de creation de l'enregistrement.
S_CREUID C 8 Identifiant de l'utilisateur ayant cree l'enregistrement.
S_MODDATE T 8 Date et heure de la derniere modification.
S_MODUID C 8 Identifiant de l'utilisateur ayant effectue la derniere modification.
S_WEBDATE T 8 Date de derniere synchronisation web.
S_DELETED L 1 Marqueur de suppression logique (present dans certaines tables).

Colonnes detaillees par table

Le nombre de colonnes indique ci-dessous correspond au nombre de colonnes uniques apres deduplication. L'API column_list retourne parfois les colonnes en double (voir section 9, remarque 11).

Table art -- Articles (80 colonnes uniques)

Colonne Type Taille Description
ACTUALVAL N 12,2 Valeur actuelle de l'article (valorisation du stock).
ARTACCID C 10 Categorie comptable de l'article (reference vers incodes ARTACC).
ARTID C 20 Identifiant unique de l'article (cle primaire).
ARTPART L 1 Indique si l'article est un composant (piece detachee).
A_AUVIBEL N 8,2 Montant de la taxe Auvibel (taxe belge sur supports vierges).
A_BEBAT N 8,2 Montant de la taxe Bebat (taxe belge sur batteries).
A_CAT C 15 Categorie de l'article.
A_DATEIMP D 8 Date d'importation de l'article.
A_MARQUE C 20 Marque du produit.
A_RECUPEL N 8,2 Montant de la taxe Recupel (taxe belge DEEE).
A_REF_FAB C 15 Reference du fabricant.
A_REPROBEL N 8,2 Montant de la taxe Reprobel (taxe belge reprographie).
A_SCAT C 15 Sous-categorie de l'article.
A_SGCPC C 12 Code CPC SEGEC (classification interne).
A_SSCAT C 15 Sous-sous-categorie de l'article.
BARCODECRE N 1 Mode de creation automatique du code-barres (0 = non, 1 = oui).
BUYARTID C 40 Reference de l'article chez le fournisseur.
BUYDATE D 8 Date du dernier achat.
BUYDELAY N 3 Delai de livraison fournisseur (en jours).
BUYDISC N 5,2 Remise fournisseur (en pourcentage).
BUYPRICE N 12,2 Prix d'achat HT.
BUYVATID C 5 Code TVA applicable a l'achat.
BUYVATID2 C 5 Code TVA achat secondaire.
BUYVATID3 C 5 Code TVA achat tertiaire.
BUYVATPC N 5,2 Pourcentage TVA a l'achat.
CATEGORY C 10 Categorie tarifaire de l'article.
COEF N 5,2 Coefficient de marge applique sur le prix d'achat.
COEFFINAL N 5,2 Coefficient de marge final (apres ajustements).
COLRANGE C 10 Gamme de couleur de l'article.
COMPOTYPE N 1 Type de composition (0 = normal, 1 = compose).
COMPOUND L 1 Article compose (kit regroupant plusieurs composants).
CURRID C 3 Code devise (ex : EUR).
CUSTID C 10 Identifiant du fournisseur principal de l'article.
DISCEXCL L 1 Exclure l'article des remises globales.
DISCOUNT N 5,2 Remise standard (en pourcentage).
EXPENSES N 12,2 Frais accessoires (transport, douane, etc.).
EXPENSETYP N 1 Type de frais accessoires.
FAMILY C 20 Famille de prix de l'article (reference vers incodes ARTFAMILY).
FINALPRICE N 12,2 Prix final calcule (apres coefficient et frais).
FORMCOLOR C 10 Couleur d'affichage dans le formulaire.
FULLKIT L 1 Kit complet (toutes les composantes sont obligatoires).
INSLEEP L 1 Article en sommeil (inactif mais non supprime).
KG N 8,2 Poids net de l'article en kilogrammes.
MARGINEX L 1 Exclure du calcul de marge.
MAXQTY N 10,2 Quantite maximale de commande.
MEMO M 4 Remarques et notes sur l'article (texte long).
MINQTY N 10,2 Quantite minimale de commande.
NAME1 C 80 Nom principal de l'article.
NAME2 C 80 Nom secondaire ou traduction de l'article.
NOETQ L 1 Ne pas generer d'etiquette pour cet article.
NOSTOCK L 1 Article sans gestion de stock.
NOTINHIST L 1 Exclure l'article de l'historique.
OPTIONS L 1 Article avec options configurables.
ORIGIN_IMP C 10 Pays d'origine pour l'importation.
PACKKG N 8,2 Poids de l'emballage en kilogrammes.
PCSALEPRIC N 7,2 Pourcentage applique au prix de vente.
PROQTY N 10,2 Quantite en cours de production.
QTYPACKBY N 10,2 Conditionnement (nombre d'unites par paquet).
SALEDISC N 5,2 Remise de vente (en pourcentage).
SALEPRICE N 12,2 Prix de vente HT.
SB_OUTQTY L 1 Quantite sortante en sous-traitance.
SLEEP L 1 Article en sommeil (variante, voir aussi INSLEEP).
STOCK N 5 Nombre de decimales pour la gestion de stock.
STOCKTYPE N 1 Type de gestion de stock (0 = standard, 1 = par lot, etc.).
TEMPLATE L 1 Article modele (sert de base pour creer d'autres articles).
T_BEBAT C 25 Code tarif Bebat.
T_BEBATQTY N 10,2 Quantite taxable Bebat.
T_BEBATWT N 12,2 Poids taxable Bebat.
T_RECUPEL C 25 Code tarif Recupel.
T_REPROBEL C 25 Code tarif Reprobel.
UNIT C 8 Unite de mesure (ex : PCE, KG, M).
VALUETYPE N 2 Type de valorisation du stock.
VATID C 5 Code TVA vente principal.
VATID2 C 5 Code TVA vente secondaire.
VATID3 C 5 Code TVA vente tertiaire.

Table attach -- Fichiers attaches (13 colonnes uniques)

Colonne Type Taille Description
ATTACHID C 10 Identifiant unique du fichier attache.
JOIN L 1 Indique si le fichier est joint au document (inclus dans les envois).
KEY C 30 Cle de reference de l'entite parente (ex : identifiant du document).
LIB C 250 Libelle ou description du fichier attache.
PATH M 4 Chemin d'acces au fichier sur le serveur.
PRINT L 1 Inclure le fichier lors de l'impression du document.
TABLE C 20 Nom de la table parente (ex : dochead).
TYPE C 10 Type de fichier (ex : PDF, JPG, DOC).

Table barcode -- Codes-barres (12 colonnes uniques)

Colonne Type Taille Description
ARTID C 20 Identifiant de l'article associe au code-barres.
BARCODE C 13 Valeur du code-barres (EAN-13, UPC, etc.).
BARCODEID C 10 Identifiant unique de l'enregistrement code-barres.
COLOR C 5 Code couleur associe a ce code-barres (variante).
INDEX N 2 Index de tri du code-barres pour un meme article.
QTY N 10,2 Quantite representee par ce code-barres (ex : 1 unite, 1 carton de 6).
SIZE C 10 Taille ou dimension associee a ce code-barres (variante).

Table category -- Categories (10 colonnes uniques)

Colonne Type Taille Description
BUYPRICAT L 1 Categorie utilisee pour les prix d'achat.
CATEGORY C 10 Code unique de la categorie (cle primaire).
LIB1 C 40 Libelle de la categorie.
PRODQTYCAT L 1 Categorie utilisee pour les quantites de production.
SALPRICAT L 1 Categorie utilisee pour les prix de vente.

Table codes -- Codes systeme (50 colonnes uniques)

Colonne Type Taille Description
BUTTON C 40 Libelle du bouton associe dans l'interface.
LENA1 a LENA6 N 2 Longueur maximale des champs texte VALA1 a VALA6 (dans la table incodes).
LENN1 a LENN5 N 2 Longueur maximale des champs numeriques VALN1 a VALN5 (dans la table incodes).
NAME C 20 Nom unique du groupe de codes (cle primaire, ex : PAYDELAY, VAT).
PICA1 a PICA6 C 40 Liste de valeurs autorisees (pick-list) pour les champs VALA1 a VALA6.
PICN1 a PICN5 C 40 Liste de valeurs autorisees (pick-list) pour les champs VALN1 a VALN5.
PROMPT1 C 40 Description du groupe de codes en francais.
TABLEID N 2 Identifiant de la table de reference associee.
TITLEA1 a TITLEA6 C 80 Intitule des colonnes texte VALA1 a VALA6.
TITLEL1 a TITLEL5 C 80 Intitule des colonnes logiques VALL1 a VALL5.
TITLEM C 80 Intitule du champ memo.
TITLEN1 a TITLEN5 C 80 Intitule des colonnes numeriques VALN1 a VALN5.
TYPE N 1 Type du groupe de codes.
USELANG L 1 Indique si les valeurs sont multilingues.

Table cust -- Tiers / Clients (108 colonnes uniques)

Colonne Type Taille Description
ACCOUNTID C 10 Compte comptable general du tiers.
ADRCITY C 40 Ville de l'adresse principale.
ADRCOUNTRY C 2 Code pays de l'adresse principale (ex : BE, FR).
ADRFAX C 20 Numero de fax.
ADRNAME C 55 Nom de l'adresse (ligne 1).
ADRNAME2 C 55 Nom de l'adresse (ligne 2).
ADRPHONE C 20 Numero de telephone principal.
ADRPHONE2 C 20 Numero de telephone secondaire.
ADRSTREET C 40 Rue de l'adresse principale (ligne 1).
ADRSTREET2 C 40 Rue de l'adresse principale (ligne 2).
ADRZIP C 10 Code postal de l'adresse principale.
AGENT C 6 Code de l'agent commercial attribue.
ARTCATEG C 10 Categorie d'articles par defaut pour ce tiers.
ARTCOEF N 5,2 Coefficient de prix applique aux articles pour ce tiers.
BANKNAME C 15 Nom de la banque du tiers.
BANKNR C 15 Numero de compte bancaire.
BANKPARAM C 3 Parametres bancaires supplementaires.
BIC C 11 Code BIC/SWIFT de la banque.
BLOCKMAX N 17,2 Montant maximum autorise avant blocage.
BLOCKTYPE N 1 Type de blocage (0 = aucun, 1 = avertissement, 2 = blocage).
BLOCKWHEN N 1 Moment du blocage (0 = commande, 1 = livraison, 2 = facture).
BUYVATID C 5 Code TVA par defaut pour les achats aupres de ce fournisseur.
CA N 10 Chiffre d'affaires cumule.
CIVILITY C 5 Code de civilite (reference vers incodes CIVILITY).
CODEXPGRP C 10 Code de groupe d'expedition.
COPYCOUNT N 2 Nombre de copies a imprimer par defaut.
CURRID C 3 Code devise principale (ex : EUR).
CURRID2 C 3 Code devise secondaire.
CUSTACCID C 10 Categorie comptable du tiers (reference vers incodes CUSTACC).
CUSTID C 10 Identifiant unique du tiers (cle primaire).
CUSTID2 C 10 Identifiant secondaire du tiers (reference externe).
CUSTOMER L 1 Le tiers est un client.
CUSTTYPE C 5 Type de tiers (ex : CLI, FOU, PRO, TRA).
C_OFFIMED L 1 Tiers lie au secteur Offimed (specifique metier).
DIRECTINV L 1 Facturation directe (sans bon de livraison).
DISCOUNT N 5,2 Remise globale accordee au tiers (en pourcentage).
DLVMODE C 4 Mode de livraison par defaut (reference vers incodes DLVMODE).
EMAIL C 65 Adresse email principale.
ENDPOINTID C 11 Identifiant de point de livraison UBL/Peppol.
EXTREF C 10 Reference externe (identifiant dans un autre systeme).
E_FASEECO C 10 Code FASE economat (specifique SEGEC).
E_FASEPO C 10 Code FASE pouvoir organisateur (specifique SEGEC).
E_INFOS M 4 Informations complementaires (texte long, specifique SEGEC).
E_JUN_ACT L 1 Contrat Juniper actif.
E_JUN_DATE D 8 Date du contrat Juniper.
E_JUN_ESI L 1 Contrat Juniper ESI.
E_JUN_FGAR D 8 Date de fin de garantie Juniper.
E_JUN_FWR C 20 Version firmware Juniper.
E_JUN_GAR L 1 Garantie Juniper active.
E_JUN_MOD C 15 Modele Juniper.
E_JUN_NUM C 15 Numero de serie Juniper.
E_NUMECOLE C 10 Numero d'ecole (specifique SEGEC).
E_NUMPO C 10 Numero de pouvoir organisateur (specifique SEGEC).
E_TRE_ACT L 1 Contrat Trend Micro actif.
E_TRE_CT N 6 Nombre de postes Trend Micro.
E_TRE_CTC C 30 Code contrat Trend Micro.
E_TRE_DATE D 8 Date du contrat Trend Micro.
E_TRE_D_E C 2 Type de contrat Trend Micro.
E_TRE_NBU N 5 Nombre d'utilisateurs Trend Micro.
E_TRE_PROD C 20 Produit Trend Micro.
FORMCOLOR C 10 Couleur d'affichage dans le formulaire.
FULLLINE L 1 Afficher le nom complet sur les documents.
GDISC N 5,2 Remise globale supplementaire (en pourcentage).
GLN C 13 Code GLN (Global Location Number) du tiers.
GROUPID C 10 Identifiant de groupe du tiers (regroupement commercial).
IBAN C 34 Code IBAN du compte bancaire.
IMPORTID C 17 Identifiant d'importation (reference de migration).
INSLEEP L 1 Tiers en sommeil (inactif mais non supprime).
INVARTGRP L 1 Regrouper les articles sur la facture.
INVPOS L 1 Utiliser le positionnement sur facture.
LANGUAGE C 1 Code langue du tiers (F = francais, N = neerlandais).
MEMO M 4 Remarques et notes sur le tiers (texte long).
MODIFIED L 1 Indicateur de modification recente.
NAME C 55 Nom principal du tiers.
NAME2 C 55 Nom secondaire / complement.
NOEFFF L 1 Ne pas generer d'EFFF (escompte fournisseur francophone).
NOINVMAIL L 1 Ne pas envoyer les factures par email.
NOTCUST2 L 1 Ne pas utiliser l'identifiant secondaire.
OTHER L 1 Tiers de type "autre" (ni client, ni fournisseur).
PAYDELAY C 5 Code de delai de paiement (reference vers incodes PAYDELAY).
PAYDISC N 4,1 Escompte de paiement (en pourcentage).
PAYMODE C 4 Mode de paiement par defaut (reference vers incodes PAYMODE).
PRIORITY C 1 Code de priorite du tiers.
SALEDELAY N 3 Delai de validite des offres (en jours).
SENDMETHOD C 18 Methode d'envoi des documents (email, courrier, etc.).
STKID C 2 Code depot/entrepot par defaut pour ce tiers.
SUPPLYER L 1 Le tiers est un fournisseur.
TARIF N 2 Grille tarifaire appliquee au tiers.
TEMPLATE L 1 Fiche tiers modele.
TITLE C 30 Titre ou enseigne du tiers.
TP_POS L 1 Tiers utilise en point de vente (caisse).
TRANSPORT C 1 Code transporteur.
UBLNOTACPT L 1 Le tiers n'accepte pas les factures UBL/Peppol.
UBLVERS N 1 Version UBL supportee par le tiers.
USEPRIC2 L 1 Utiliser la grille de prix secondaire.
USERID C 8 Utilisateur responsable du tiers.
VAT C 20 Numero de TVA du tiers.
VATCAT C 1 Regime TVA du tiers (reference vers incodes VATCAT).
VATCOUNTRY C 2 Pays du numero de TVA.
VATID C 5 Code TVA par defaut pour les ventes a ce tiers.
VATVALID L 1 Numero de TVA valide (verifie).
WEBSITE C 40 Site web du tiers.

Table docdet -- Lignes de documents (41 colonnes uniques)

Colonne Type Taille Description
AMOUNT N 17,2 Montant HT de la ligne (quantite x prix unitaire - remise).
AMTVATINC N 17,2 Montant TTC de la ligne.
ARTDESC M 4 Description detaillee de l'article (texte long).
ARTID C 20 Identifiant de l'article.
ARTNAME C 80 Nom de l'article.
BARCODE C 13 Code-barres de l'article.
COLOR C 5 Code couleur de la variante.
COMMISSION N 5,2 Taux de commission (en pourcentage).
COMPOTYPE N 1 Type de composition (0 = normal, 1 = compose).
COSTAMOUNT N 12,2 Montant du cout de revient de la ligne.
DISCOUNT N 5,2 Remise appliquee a la ligne (en pourcentage).
DLV N 10,2 Quantite livree.
DLVDATE D 8 Date de livraison prevue.
DLVIMPORT N 10,2 Quantite importee en livraison.
DOCDETID C 10 Identifiant unique de la ligne de document.
DOCDETID2 C 10 Identifiant de la ligne liee (document d'origine).
DOCDETID3 C 10 Identifiant de la ligne liee (troisieme reference).
D_PA N 10,2 Prix d'achat de la ligne.
JNL C 8 Code du journal du document parent.
LASTROW L 1 Derniere ligne du document.
LEVEL N 1 Niveau de la ligne (0 = principal, 1+ = composants).
LINEORDER N 5 Ordre d'affichage de la ligne dans le document.
NUMBER N 8 Numero du document parent.
PARENTID C 10 Identifiant de la ligne parente (pour les composants).
QTY N 10,2 Quantite commandee.
QTYPACK N 10,2 Quantite par conditionnement.
STATUS C 1 Statut de la ligne.
STKID C 2 Code depot de stockage.
STKIDINV C 2 Code depot pour l'inventaire.
STYLE C 3 Code style d'affichage de la ligne.
SYSTEMID C 10 Identifiant systeme interne.
THIRDID C 10 Identifiant du tiers (fournisseur pour les achats).
UNIT C 8 Unite de mesure de la ligne.
UNITPRICE N 12,2 Prix unitaire HT.
VATID C 5 Code TVA de la ligne.
VATPC N 5,2 Pourcentage TVA de la ligne.

Table dochead -- En-tetes de documents (106 colonnes uniques)

Colonne Type Taille Description
ACCOUNTNUM C 10 Numero de piece comptable.
AGENT C 6 Code de l'agent commercial.
ANA1 C 10 Code analytique 1.
ANA2 C 10 Code analytique 2.
ANA3 C 10 Code analytique 3.
BASIS1 N 12,2 Base de calcul TVA pour le taux 1.
BASIS2 N 12,2 Base de calcul TVA pour le taux 2.
BASIS3 N 12,2 Base de calcul TVA pour le taux 3.
BATCHID C 10 Identifiant du lot de traitement.
CLOSED N 1 Indicateur de cloture du document.
CURRID C 3 Code devise du document.
CURRRATE N 16,9 Taux de change applique.
CURRRATE1E N 16,9 Taux de change inverse (1 EUR = x devise).
DATE D 8 Date du document.
DATEPAY D 8 Date d'echeance de paiement.
DEPOSIT N 17,2 Acompte verse.
DISCOUNT N 17,2 Remise globale appliquee au document.
DLVDATE1 D 8 Date de livraison prevue (debut).
DLVDATE2 D 8 Date de livraison prevue (fin).
DLVMODE C 4 Mode de livraison.
DOCHEADID C 10 Identifiant unique interne de l'en-tete.
EMAILADDR C 65 Adresse email d'envoi du document.
EMAILDATE T 8 Date et heure d'envoi par email.
GDISC N 5,2 Remise globale supplementaire (en pourcentage).
HISTFOLDID C 10 Identifiant du dossier historique lie.
H_PERSCOM C 30 Personne de contact commerciale (specifique metier).
H_RECUP C 10 Code de recuperation (specifique metier).
H_SERVCOM C 30 Service commercial (specifique metier).
H_ULGMARCH C 10 Reference ULG marche (specifique metier).
IMPORTED L 1 Document importe d'un autre systeme.
INVPERSID C 10 Identifiant du contact de facturation.
JNL C 8 Code du journal auquel appartient le document.
JNL2 C 8 Code du journal lie (livraison, facturation, etc.).
JNL3 C 8 Code du troisieme journal lie.
NOTE M 4 Remarques sur le document (texte long).
NUMBER N 8 Numero du document dans le journal.
NUMBER2 N 8 Numero du document lie (journal 2).
NUMBER3 N 8 Numero du document lie (journal 3).
NUMLINKACC N 5 Numero de lien comptable.
OPER C 2 Code operation (type de transaction).
PARTPACKED L 1 Document partiellement emballe.
PAYDELAY C 6 Code de delai de paiement.
PAYDISC N 4,1 Escompte de paiement (en pourcentage).
PAYDISCAMT N 17,2 Montant de l'escompte de paiement.
PAYDOCAMT N 12,2 Montant du paiement associe.
PAYDOCDAT1 D 8 Date de paiement 1.
PAYDOCDAT2 D 8 Date de paiement 2.
PAYDOCID N 8 Identifiant du paiement associe.
PAYDOCNOTE M 4 Note du paiement (texte long).
PAYED N 12,2 Montant deja paye.
PAYMODE C 4 Mode de paiement.
PERSID C 10 Identifiant du contact associe.
PRINTDATE T 8 Date et heure de la derniere impression.
PRINTED L 1 Document deja imprime.
PRIORITY C 1 Code de priorite du document.
REMINDLEV N 1 Niveau de rappel (0 = aucun, 1+).
REMINDNOTE M 4 Note de rappel (texte long).
SENDID C 10 Identifiant d'expedition.
SITEID C 2 Code site de vente.
SITEIDFROM C 2 Code site d'origine.
SITEIDNEXT C 2 Code site suivant dans le flux.
SITEIDTO C 2 Code site de destination.
STATUS C 2 Statut du document (ex : GE, SE, AC, PA).
STKIDFROM C 2 Code depot d'origine.
STKIDTMP C 2 Code depot temporaire.
STKIDTO C 2 Code depot de destination.
SUBCOUNT N 3 Nombre d'echeances (abonnement).
SUBFREQ N 1 Frequence d'abonnement.
SUBINDEX N 8,2 Index d'abonnement.
THIRDADDR C 60 Adresse du tiers (ligne 1).
THIRDADDR2 C 60 Adresse du tiers (ligne 2).
THIRDCITY C 40 Ville du tiers.
THIRDCOUNT C 25 Code pays du tiers.
THIRDFAX C 20 Fax du tiers.
THIRDGROUP C 10 Groupe du tiers.
THIRDID C 10 Identifiant du tiers.
THIRDID2 C 10 Identifiant secondaire du tiers.
THIRDNAME C 55 Nom du tiers.
THIRDNAME2 C 55 Nom secondaire du tiers.
THIRDTEL C 20 Telephone du tiers.
THIRDTYPE C 1 Type de tiers (C = client, S = fournisseur).
THIRDVAT C 20 Numero de TVA du tiers.
THIRDVATID C 5 Code TVA du tiers.
THIRDZIP C 10 Code postal du tiers.
TIME T 8 Horodatage de creation du document.
TOPAY N 12,2 Montant total TTC a payer.
TOTDEPOSIT N 12,2 Total des acomptes recus.
TYPE C 2 Type de document (ex : CI, CO, CD, CC, CP).
UBLDTEXP T 8 Date d'export UBL/Peppol.
USERID C 8 Utilisateur ayant cree le document.
VATAMT1 N 12,2 Montant TVA pour le taux 1.
VATAMT2 N 12,2 Montant TVA pour le taux 2.
VATAMT3 N 12,2 Montant TVA pour le taux 3.
VATID1 C 5 Code du taux TVA 1.
VATID2 C 5 Code du taux TVA 2.
VATID3 C 5 Code du taux TVA 3.
VATPC1 N 5,2 Pourcentage TVA 1.
VATPC2 N 5,2 Pourcentage TVA 2.
VATPC3 N 5,2 Pourcentage TVA 3.
VCS C 20 Communication structuree (VCS belge).
YOURREF C 40 Reference du client sur le document.

Table docpay -- Paiements (22 colonnes uniques)

Colonne Type Taille Description
ACCOUNT C 12 Numero de compte comptable du paiement.
AMOUNT N 10,2 Montant du paiement.
COMMENT C 35 Commentaire sur le paiement.
CURRAMOUNT N 12,2 Montant en devise etrangere.
CURRID C 5 Code devise du paiement.
CURRRATE N 16,9 Taux de change applique.
DISCOUNT N 17,2 Escompte accorde sur le paiement.
DOCPAYID C 10 Identifiant unique du paiement.
JNL C 8 Code du journal du document paye.
JNL2 C 8 Code du journal secondaire (paiement).
LIB C 40 Libelle du paiement.
NOTE C 120 Note supplementaire sur le paiement.
NUMBER N 8 Numero du document paye.
NUMBER2 N 8 Numero du paiement dans le journal 2.
OPER C 2 Code operation.
PAYID C 16 Reference du paiement (ex : numero de virement).
TYPE C 5 Type de paiement (ex : CAS, VIR, BC).

Table file -- Fichiers / Dossiers (17 colonnes uniques)

Colonne Type Taille Description
CUSTID C 10 Identifiant du tiers associe.
DATE D 8 Date du dossier.
DESCRIPT C 40 Description du dossier.
ENDINGDATE D 8 Date de cloture du dossier.
FILEID C 10 Identifiant unique du dossier.
FILETYPE C 5 Type de dossier.
MEMO M 4 Remarques (texte long).
PERSID C 10 Identifiant du contact associe.
PRIORITY C 1 Code de priorite.
STATUS C 2 Statut du dossier.
S_USER C 8 Utilisateur responsable du dossier.

Table hist -- Historique (50 colonnes uniques)

Colonne Type Taille Description
BBODY M 4 Corps du message en format brut.
BODY M 4 Corps du message ou de l'intervention.
BUSYSTATUS N 1 Indicateur d'occupation (0 = libre, 1 = occupe).
CHILDID C 10 Identifiant de l'entite enfant liee.
CHILDTBL C 36 Nom de la table de l'entite enfant.
CLOSEDATE T 8 Date et heure de cloture de l'intervention.
CLOSEUID C 10 Utilisateur ayant cloture l'intervention.
CNTTRAVEL N 6,2 Distance de deplacement (en km).
DATE D 8 Date de l'evenement.
DISCOUNT N 5,2 Remise appliquee.
DOCDETID C 10 Identifiant de la ligne de document liee.
DUEDATE D 8 Date d'echeance.
EMAILADDR M 4 Adresses email des destinataires.
EMAILDATE T 8 Date et heure d'envoi par email.
ENDINGDATE D 8 Date de fin de l'intervention.
ENDINGTIME C 8 Heure de fin de l'intervention (format HH:MM:SS).
FOLDERID C 10 Identifiant du dossier parent.
FORWADATE T 8 Date de transfert de l'intervention.
HISTID C 10 Identifiant unique de l'entree d'historique.
HISTID2 C 10 Identifiant secondaire (reference croisee).
HISTSTATUT C 5 Statut de l'intervention.
HISTTYPE C 20 Type d'intervention (ex : appel, email, visite).
HOURSINV N 6,2 Heures facturables.
INVJNL C 8 Journal de facturation lie.
INVNUMBER N 8 Numero de facture lie.
INVOICETYP N 1 Type de facturation.
INVTIME N 7 Temps facture (en minutes).
LOCATION M 4 Lieu de l'intervention (texte long).
MAILID C 90 Identifiant du message email associe.
PARENTID C 10 Identifiant de l'entite parente.
PARENTTBL C 36 Nom de la table de l'entite parente.
PLANDATE T 8 Date et heure planifiees de l'intervention.
PRINTDATE T 8 Date et heure de la derniere impression.
PRIORITY N 1 Niveau de priorite (0 = basse, 1+ = haute).
QTY N 10,2 Quantite associee.
REFJNL C 8 Journal de reference.
REFNUMBER N 8 Numero de document de reference.
REPLYDATE T 8 Date de reponse.
SENTINFO M 4 Informations d'envoi (texte long).
SUBJECT C 40 Sujet de l'intervention ou du message.
TIME C 8 Heure de l'evenement (format HH:MM:SS).
TRAVELEXP N 12,2 Frais de deplacement.
TRDISCOUNT N 5,2 Remise sur le deplacement.
UNITPRICE N 12,2 Prix unitaire de l'intervention.
USERID C 8 Utilisateur responsable.

Table incodes -- Codes internes (24 colonnes uniques)

Colonne Type Taille Description
INCODESID C 10 Identifiant unique de l'enregistrement de code interne.
MEMO M 4 Remarques (texte long).
TABLEID N 2 Identifiant de la table de codes parente (lien vers codes).
VALA1 C 40 Valeur texte 1 (code/identifiant principal).
VALA2 C 40 Valeur texte 2 (description en francais).
VALA3 C 40 Valeur texte 3 (description en neerlandais ou alternative).
VALA4 C 40 Valeur texte 4 (champ supplementaire).
VALA5 C 40 Valeur texte 5 (champ supplementaire).
VALA6 C 40 Valeur texte 6 (champ supplementaire).
VALL1 a VALL5 L 1 Valeurs logiques 1 a 5 (booleens configurables).
VALN1 a VALN5 N 18,9 Valeurs numeriques 1 a 5 (signification variable selon le groupe).

Table jnl -- Journaux (155 colonnes uniques)

Colonne Type Taille Description
ACCOUNTJNL C 6 Code du journal comptable associe.
ACCOUNTSOC C 10 Compte comptable de la societe.
ARTMEMO L 1 Afficher le memo de l'article lors de la saisie.
ASSEMBLED L 1 Journal de produits assembles.
ATTACH1 a ATTACH5 M 4 Chemins des modeles de pieces jointes 1 a 5.
ATTNOMAIL L 1 Ne pas joindre les pieces jointes aux emails.
ATTNOPR L 1 Ne pas imprimer les pieces jointes.
BACKCOLOR N 8 Couleur de fond du formulaire (code couleur numerique).
CALCDLVDAT L 1 Calculer automatiquement la date de livraison.
CALCTOT L 1 Calculer automatiquement les totaux du document.
CREDAYRATE L 1 Utiliser le taux de change du jour pour les notes de credit.
DATEOFDAY L 1 Proposer la date du jour par defaut.
DEFQTY N 10,2 Quantite par defaut pour les nouvelles lignes.
DEPOSIT N 6,2 Pourcentage d'acompte par defaut.
DIRECTPRIN L 1 Impression directe apres creation du document.
DISPCOEF N 2 Nombre de decimales pour l'affichage du coefficient.
EMAILDRAFT L 1 Creer un brouillon email au lieu d'envoyer directement.
EMAILSEND L 1 Envoyer le document par email automatiquement.
FOLDERM1 a FOLDERM5 C 10 Identifiants de dossiers modeles 1 a 5.
FOLDERP1 a FOLDERP5 C 10 Identifiants de dossiers parents 1 a 5.
FOLDMF1 a FOLDMF5 C 30 Chemins de dossiers de fichiers modeles 1 a 5.
FOLDPF1 a FOLDPF5 C 30 Chemins de dossiers de fichiers parents 1 a 5.
GETDEPOSIT L 1 Demander l'acompte lors de la creation du document.
GETNUMBER L 1 Demander le numero de document lors de la creation.
INBOOKINV L 1 Enregistrer la facture dans le livre d'achat.
INPUTPAY L 1 Saisir le paiement lors de la creation du document.
INPUTTHIRD L 1 Demander le tiers lors de la creation du document.
INTRASTATA L 1 Soumis a la declaration Intrastat (arrivees).
INTRASTATD L 1 Soumis a la declaration Intrastat (expeditions).
ISSTATUS1 a ISSTATUS5 C 2 Codes de statut conditionnels pour les impressions 1 a 5.
JNL C 8 Code unique du journal (cle primaire).
JNL2 C 8 Code du journal secondaire lie.
JNLCRED C 8 Code du journal de notes de credit lie.
JNLINV C 8 Code du journal de facturation lie.
JNLMVT C 8 Code du journal de mouvements de stock lie.
JNLORDER C 8 Code du journal de commandes lie.
LATTACH1 a LATTACH5 L 1 Activer les pieces jointes 1 a 5.
LAYCOPY1 a LAYCOPY5 N 2 Nombre de copies pour les mises en page 1 a 5.
LAYDESC1 a LAYDESC5 C 30 Description des mises en page 1 a 5.
LAYOUT1 a LAYOUT5 C 32 Noms des fichiers de mise en page (layouts) 1 a 5.
LAYOUTON1 a LAYOUTON5 M 4 Conditions d'activation des mises en page 1 a 5.
MAXQTY N 10,2 Quantite maximale autorisee par ligne.
NAME C 40 Nom principal du journal.
NAME1 C 40 Nom alternatif 1 du journal.
NAME2 C 40 Nom alternatif 2 du journal (ex : traduction).
NEWSTATUS1 a NEWSTATUS5 C 2 Nouveau statut apres impression 1 a 5.
NOASKPAY L 1 Ne pas demander le paiement en fin de document.
NOBATCHINV L 1 Interdire la facturation par lot.
NODEFCUST L 1 Ne pas proposer de tiers par defaut.
NOINVOICE L 1 Journal sans facturation.
NOSELPRINT L 1 Ne pas proposer le choix de mise en page a l'impression.
NOTHIRD L 1 Journal sans tiers (ex : inventaire).
NOUPDBO L 1 Ne pas mettre a jour le back-order.
NUMBER N 8 Dernier numero de document attribue dans ce journal.
ORDER N 5 Ordre d'affichage du journal.
PAGEFRAME L 1 Utiliser un cadre de page pour l'affichage.
PAYCOEF N 2 Coefficient de paiement.
POSACCEXP C 10 Compte comptable des depenses (point de vente).
POSACCFIN C 10 Compte comptable financier (point de vente).
POSACCREC C 10 Compte comptable des recettes (point de vente).
POSCUSTID C 10 Client par defaut pour le point de vente.
POSTPRINT1 a POSTPRINT5 M 4 Scripts executes apres impression 1 a 5.
PREVMASK N 8 Masque de previsualisation.
PRINTBO L 1 Imprimer le back-order.
PRINTETQ L 1 Imprimer les etiquettes.
PRINTORDER C 254 Ordre de tri pour l'impression.
RIGHTS M 4 Droits d'acces au journal (texte long).
ROUND5 L 1 Arrondir le total a 5 centimes (regle belge).
ROUND5ALL L 1 Appliquer l'arrondi 5 centimes a toutes les lignes.
ROUNDART C 2 Mode d'arrondi des prix articles.
ROUNDTOT C 2 Mode d'arrondi des totaux.
SEND L 1 Envoyer le document apres creation.
SEQNUMBER L 1 Utiliser une numerotation sequentielle.
SIMPLE L 1 Mode de saisie simplifie.
SITEID C 2 Code site de vente associe.
SITEIDNEXT C 2 Code site suivant dans le flux.
SITESHARE L 1 Partage inter-sites.
SITEVIEW L 1 Vue inter-sites autorisee.
STARTCASH N 12,2 Fond de caisse initial (point de vente).
STATUSINIT C 2 Statut initial des nouveaux documents.
STKID C 2 Code depot/entrepot associe au journal.
STOCKCOEF N 2 Coefficient de mouvement de stock (1 = entree, -1 = sortie).
SUBRECPRIC L 1 Tarif par abonnement.
SUBSCRIPT L 1 Journal d'abonnement.
THIRDCOPY L 1 Copier les coordonnees du tiers dans le document.
TYPE C 2 Code de type du journal (ex : CI, CO, CD, CC, CP, KI, KM).
UNPAID L 1 Gestion des impayes.
UNPAIDALL L 1 Afficher tous les impayes.
USERDATE D 8 Date d'utilisation (dernier acces).
USERID C 8 Utilisateur proprietaire du journal.
USERTIME C 8 Heure du dernier acces.
VATINCLUD L 1 Prix TTC par defaut (TVA incluse).
WARNINGSTK L 1 Avertir si le stock est insuffisant.
WARNSTKCO L 1 Avertir pour le stock en commande.
WARNSTKID N 1 Type d'avertissement stock.
WARNSTKSO L 1 Avertir pour le stock en commande fournisseur.
WARNSTKTYP N 1 Type d'avertissement stock (mode).

Table pers -- Personnes / Contacts (39 colonnes uniques)

Colonne Type Taille Description
ADRCITY C 40 Ville du contact.
ADRCOUNTRY C 2 Code pays du contact.
ADRSTREET C 40 Rue du contact (ligne 1).
ADRSTREET2 C 40 Rue du contact (ligne 2).
ADRZIP C 10 Code postal du contact.
COMPANY C 40 Nom de l'entreprise du contact.
CUSTID C 10 Identifiant du tiers auquel le contact est rattache.
DESCRIPT C 40 Description / role du contact.
EMAIL C 65 Adresse email du contact.
FAX C 20 Numero de fax.
FIRSTNAME C 15 Prenom du contact.
FUNCTION C 35 Fonction dans l'entreprise.
GSM C 20 Numero de GSM / telephone mobile.
INSLEEP L 1 Contact en sommeil (inactif).
ISACC L 1 Contact comptable.
ISDLV L 1 Contact de livraison.
ISDLVMAIN L 1 Contact de livraison principal.
ISINV L 1 Contact de facturation.
ISMAIN L 1 Contact principal du tiers.
LANGUAGE C 1 Code langue du contact (F, N).
LEVEL N 2 Niveau hierarchique du contact.
MAILINGOK L 1 Accepte les mailings commerciaux.
MEMO M 4 Remarques sur le contact (texte long).
NAME C 25 Nom de famille du contact.
PERSID C 10 Identifiant unique du contact (cle primaire).
PHONE C 20 Numero de telephone fixe.
PREFIX C 15 Prefixe ou titre de civilite.
PRIVATE L 1 Contact prive (non visible dans les listes).
SEX C 1 Sexe du contact (M, F).
TITLE C 20 Titre professionnel.
USERID C 8 Utilisateur responsable du contact.
VAT C 20 Numero de TVA du contact (si independant).
VATCOUNTRY C 2 Pays du numero de TVA.
VATVALID L 1 Numero de TVA valide (verifie).

Table price -- Tarifs (28 colonnes uniques)

Colonne Type Taille Description
COEF N 5,2 Coefficient de prix.
COLOR C 5 Code couleur (variante).
CURRID C 3 Code devise du tarif.
CUSTID C 10 Identifiant du tiers concerne (tarif specifique client/fournisseur).
CUSTLIB C 80 Libelle personnalise de l'article pour ce tiers.
CUSTREF C 40 Reference de l'article chez le tiers.
DATE D 8 Date du tarif.
DATEFROM D 8 Date de debut de validite du tarif.
DATETO D 8 Date de fin de validite du tarif.
DELAY N 3 Delai de livraison associe (en jours).
DISCOUNT N 5,2 Remise associee au tarif (en pourcentage).
DOCDETID C 10 Identifiant de la ligne de document d'origine.
FINALPRICE N 12,2 Prix final calcule.
ID C 20 Identifiant de l'article concerne.
JNL C 8 Code du journal d'origine.
NUMBER N 8 Numero du document d'origine.
PCCOEF N 7,2 Coefficient en pourcentage.
PRICE N 12,2 Prix unitaire du tarif.
PRICEID C 10 Identifiant unique de l'enregistrement tarif.
QTYMAX N 10,2 Quantite maximale pour ce tarif.
QTYMIN N 10,2 Quantite minimale pour ce tarif.
TARIF N 1 Numero de grille tarifaire.
TYPE N 1 Type de tarif (0 = vente, 1 = achat).

Table stk -- Stock (10 colonnes uniques)

Colonne Type Taille Description
ARTID C 20 Identifiant de l'article.
COLOR C 5 Code couleur de la variante.
STKID C 2 Code du depot/entrepot.
STMP N 10,2 Quantite de stock temporaire (en transit ou reserve).
STOCK N 10,2 Quantite en stock disponible.

Exploration des colonnes

Pour connaître les colonnes disponibles dans une table, utiliser les endpoints tables_list et column_list/{tablename} décrits dans la section 6.

Remarque importante : l'API retourne les colonnes en double dans la réponse de column_list. L'application effectue une déduplication automatique côté client.


6. Récupération de données

Tous les endpoints de cette section servent à lire des données depuis l'API. Ils utilisent la méthode POST et retournent des données dans la clé data de la réponse.

6.1 Structure de la base de données

tables_list -- Liste des tables

Retourne la liste de toutes les tables accessibles dans le dossier comptable. Utile pour découvrir la structure de la base de données.

URL POST /{dossier}/tables_list
Méthode service LogisticsService::tablesList()

Paramètres : aucun.

Exemple de requête :

{}

Exemple de réponse :

{
    "data": [
        { "name": "art", "columnCount": 160 },
        { "name": "attach", "columnCount": 13 },
        { "name": "barcode", "columnCount": 12 },
        { "name": "category", "columnCount": 10 },
        { "name": "codes", "columnCount": 50 },
        { "name": "cust", "columnCount": 216 },
        { "name": "docdet", "columnCount": 82 },
        { "name": "dochead", "columnCount": 212 },
        { "name": "docpay", "columnCount": 22 },
        { "name": "file", "columnCount": 17 },
        { "name": "hist", "columnCount": 50 },
        { "name": "incodes", "columnCount": 24 },
        { "name": "jnl", "columnCount": 155 },
        { "name": "pers", "columnCount": 78 },
        { "name": "price", "columnCount": 28 },
        { "name": "stk", "columnCount": 20 }
    ],
    "metadata": { "tableCount": 16, "folderType": "DBF", "endpoint": "tables_list", "rowcount": 16, "issuccess": true },
    "error": null
}

column_list/{tablename} -- Colonnes d'une table

Retourne la liste des colonnes d'une table donnée, avec leur type, leur longueur et leur précision. Indispensable pour connaître les champs utilisables dans le paramètre select des autres endpoints.

URL POST /{dossier}/column_list/{tablename}
Méthode service LogisticsService::columnList(string $table)

Paramètres :

Paramètre Emplacement Type Obligatoire Description
tablename URL string Oui Nom de la table (issu de tables_list). Exemple : art, cust, dochead.

Exemple de requête :

POST /esigescom/column_list/stk

Exemple de réponse :

{
    "data": [
        { "name": "ARTID", "dataType": "C", "length": 20, "precision": 0 },
        { "name": "STOCK", "dataType": "N", "length": 10, "precision": 2 },
        { "name": "DEPOT", "dataType": "C", "length": 10, "precision": 0 }
    ],
    "metadata": { "columnCount": 3, "tableName": "stk", "rowcount": 3, "issuccess": true },
    "error": null
}

Remarque : l'API retourne chaque colonne en double. L'application effectue une déduplication automatique.


6.2 Articles

Les articles sont les références produits du catalogue. Ils sont stockés dans la table art.

art_list -- Recherche d'articles

Retourne une liste d'articles correspondant aux critères de recherche. L'API retourne un maximum fixe de 5 résultats par appel, cette limite n'est pas configurable.

URL POST /{dossier}/art_list
Méthode service LogisticsService::artList(array $params)

Paramètres :

Paramètre Type Obligatoire Description
search string Oui Filtre de recherche textuel. Recherche dans les colonnes artid et name1 de la table art. Ce paramètre est obligatoire : un appel sans search retourne une erreur "Search terms are required", même si barcode est fourni.
select string Non Liste des colonnes à retourner, séparées par des virgules. Les noms de colonnes disponibles sont ceux de la table art (obtenables via column_list/art). Si omis, un jeu de colonnes par défaut est retourné.
results int Non Sans effet. Ce paramètre est accepté par l'API mais n'influence pas le nombre de résultats retournés. L'API retourne toujours un maximum de 5 résultats, quelle que soit la valeur de results (testé avec 1, 3, 5, 10, 20, en int et en string).
barcode string Non Sans effet observable. Ce paramètre est accepté par l'API mais ne modifie pas les résultats. Les données retournées sont strictement identiques avec ou sans barcode. Le paramètre search reste obligatoire même si barcode est fourni.

Métadonnées retournées :

L'endpoint art_list retourne des métadonnées spécifiques dans la clé metadata :

Clé Type Description
rowCount int Nombre de résultats retournés.
source string Type de base de données (ex : DBF).
executionTimeMs int Temps d'exécution de la requête en millisecondes.
searchColumns string Colonnes utilisées pour la recherche (ex : artid,name1).
selectColumns string Colonnes demandées dans le paramètre select.
searchTerms string Termes de recherche utilisés.

Exemple de requête :

{
    "search": "chaise",
    "select": "artid,name1,saleprice"
}

Exemple de réponse :

{
    "data": [
        { "artid": "003R92572", "name1": "Papier A4 80g", "saleprice": 12.50 },
        { "artid": "003R92573", "name1": "Papier A4 90g", "saleprice": 14.00 },
        { "artid": "003R98703", "name1": "Papier A3 80g", "saleprice": 18.75 },
        { "artid": "003R98711", "name1": "Papier A3 90g", "saleprice": 21.00 },
        { "artid": "003R98718", "name1": "Papier A4 100g", "saleprice": 16.50 }
    ],
    "metadata": {
        "rowCount": 5,
        "source": "DBF",
        "executionTimeMs": 720,
        "searchColumns": "artid,name1",
        "selectColumns": "artid,name1,saleprice",
        "searchTerms": "papier"
    },
    "error": null
}

Attention : les noms de colonnes dans select doivent correspondre exactement aux noms retournes par column_list/art (ex : name1, pas artname). L'API ignore silencieusement les noms de colonnes invalides sans emettre d'erreur, ce qui peut donner l'impression que le parametre select ne fonctionne pas.


art_getstk -- Stock d'un article

Retourne les informations de stock pour un article donné. Permet de vérifier la disponibilité d'un article dans les différents dépôts.

URL POST /{dossier}/art_getstk
Méthode service LogisticsService::artGetStock(string $artId)

Paramètres :

Paramètre Type Obligatoire Description
ARTID string Oui Identifiant unique de l'article (champ artid de la table art).

Exemple de requête :

{
    "ARTID": "ART001"
}

6.3 Journaux

Les journaux regroupent les documents commerciaux par type (ventes, achats, retours, etc.). Ils sont stockés dans la table jnl.

jnl_list -- Liste des journaux

Retourne la liste des journaux correspondant au type demandé. Un journal contient un ou plusieurs documents.

URL POST /{dossier}/jnl_list
Méthode service LogisticsService::jnlList(array $params)

Paramètres :

Paramètre Type Obligatoire Description
TYPE string Oui Code de type de journal (1 ou 2 caractères). Voir la section "Codes de type" ci-dessous.
select string Non Colonnes à retourner, séparées par des virgules (colonnes de la table jnl). Insensible à la casse. Si omis, seule la colonne jnl est retournée par défaut.
results string Non Nombre maximum de résultats. Doit être au format string (ex : "50"), pas un nombre. Un entier provoque une erreur HTTP 400. La limite par défaut (sans ce paramètre) est de 30 résultats. Contrairement à art_list et third_list, ce paramètre fonctionne réellement pour jnl_list.

Codes de type de journal :

La colonne TYPE de la table jnl contient un code à 2 caractères suivant le schéma [Domaine][TypeDocument] :

Domaine (1er caractère) Signification
C Client
S Supplier / Fournisseur
K stocK / Inventaire
Type document (2e caractère) Signification
O Order / Commande
D Delivery / Livraison (note d'envoi)
I Invoice / Facture
C Credit note / Note de crédit
P Proposal / Offre de prix (pro forma)
A Achat
M Mouvement (stock)

Le paramètre TYPE accepte 1 ou 2 caractères :

  • 1 caractère : filtre tous les journaux dont le code de type contient ce caractère (première ou deuxième position). Exemples :
    • TYPE=C retourne tous les journaux client (CO, CD, CI, CC, CP, CA, CM) -- 42 résultats dans le dossier de test.
    • TYPE=I retourne toutes les factures (CI, KI) -- 26 résultats.
    • TYPE=O retourne toutes les commandes (CO, SO) -- 7 résultats.
    • TYPE=D retourne toutes les livraisons (CD, SD) -- 5 résultats.
    • TYPE=S retourne tous les journaux fournisseur (SD, SO) -- 2 résultats.
    • TYPE=K retourne tous les journaux inventaire (KI, KM) -- 2 résultats.
    • TYPE=P retourne toutes les offres de prix (CP) -- 3 résultats.
    • TYPE=A retourne tous les journaux d'achat (CA) -- 2 résultats.
  • 2 caractères : correspondance exacte sur le code de type. Exemples :
    • TYPE=CO retourne uniquement les commandes client -- 6 résultats.
    • TYPE=CI retourne uniquement les factures client -- 25 résultats.
    • TYPE=CC retourne uniquement les notes de crédit client -- 1 résultat.

Métadonnées retournées :

Clé Type Description
rowCount int Nombre de résultats retournés.
source string Type de base de données (ex : DBF).
unlimited bool Indique si la requête est sans limite (toujours false dans les tests).

Colonnes utiles de la table jnl :

Colonne Type Description
JNL C(8) Code unique du journal (ex : 03VEN, 01COM).
NAME C(40) Nom du journal (ex : FACTURE CLIENT).
NAME1 C(40) Nom alternatif 1 (ex : FACTURE 03VEN).
NAME2 C(40) Nom alternatif 2 (ex : FAKTUUR).
TYPE C(2) Code de type (ex : CI, CO, SD).
NUMBER N(8) Dernier numéro de document dans ce journal.
JNLORDER C(8) Journal de commande lié.
JNLINV C(8) Journal de facturation lié.
JNLCRED C(8) Journal de note de crédit lié.
JNLMVT C(8) Journal de mouvement de stock lié.
STKID C(2) Identifiant de stock associé.
STATUSINIT C(2) Statut initial des documents créés dans ce journal.

Exemple de requête :

{
    "TYPE": "C",
    "select": "JNL,NAME,TYPE,NUMBER",
    "results": "50"
}

Exemple de réponse :

{
    "data": [
        { "jnl": "01COM", "name": "COMMANDE", "type": "CO", "number": 25100123 },
        { "jnl": "03VEN", "name": "FACTURE CLIENT", "type": "CI", "number": 25105451 },
        { "jnl": "04NCV", "name": "NOTE DE CREDIT CLIENT", "type": "CC", "number": 25400010 }
    ],
    "metadata": {
        "rowCount": 3,
        "source": "DBF",
        "unlimited": false
    },
    "error": null
}

6.4 Documents

Les documents commerciaux (devis, commandes, factures, avoirs, etc.) constituent le coeur du système. Chaque document possède un en-tête (dochead) et une ou plusieurs lignes de détail (docdet). Un document appartient à un journal et est associé à un tiers.

document_list -- Liste des documents

Retourne une liste de documents, éventuellement filtrée par tiers. Permet de consulter les documents commerciaux associés à un client. Les documents sont retournés triés par date décroissante (les plus récents en premier).

URL POST /{dossier}/document_list
Méthode service LogisticsService::documentList(array $params)

Paramètres :

Paramètre Type Obligatoire Description
select string Non Colonnes à retourner, séparées par des virgules (colonnes de la table dochead). Si omis, seule la colonne thirdid est retournée par défaut. Colonnes utiles : jnl, number, thirdid, date, status, topay.
thirdid string Non Identifiant du tiers (champ custid de la table cust). Si fourni, seuls les documents de ce tiers sont retournés.
results string Non Nombre maximum de résultats à retourner. Accepte les formats string et int. La limite par défaut (sans ce paramètre) est d'environ 108 résultats. Attention : ce paramètre n'a d'effet que lorsqu'un thirdid est également fourni. Sans thirdid, l'API ignore results et retourne tous les documents disponibles (jusqu'à sa limite par défaut).

Métadonnées retournées :

Clé Type Description
rowCount int Nombre de résultats retournés.
source string Type de base de données (ex : DBF).
unlimited bool Indique si la requête est sans limite (observé toujours false).

Exemple de requête :

{
    "select": "jnl,number,thirdid,date,status,topay",
    "thirdid": "_@00025009",
    "results": "20"
}

Exemple de réponse :

{
    "data": [
        {
            "jnl": "03VEN",
            "number": 25105397,
            "thirdid": "_@00025009",
            "date": "2025-07-01T00:00:00",
            "status": "",
            "topay": 18958.28
        }
    ],
    "metadata": { "rowCount": 1, "source": "DBF", "unlimited": false },
    "error": null
}

Remarque : un appel sans aucun paramètre (body vide {}) retourne une erreur HTTP 400. Au minimum, le paramètre select ou thirdid doit être fourni.


document_detail -- Détail d'un document

Retourne le détail complet d'un document spécifique : l'en-tête (informations générales du document), toutes les lignes de détail (articles, quantités, prix) dans un tableau detail, et les fichiers attachés dans un tableau attach.

URL POST /{dossier}/document_detail
Méthode service LogisticsService::documentDetail(string $jnl, string $number)

Paramètres :

Paramètre Type Obligatoire Description
jnl string Oui Code du journal auquel appartient le document (ex : 03VEN, 01COM).
number string Oui Numéro du document dans le journal (ex : 25105397).

Métadonnées retournées :

Clé Type Description
detailRowCount int Nombre de lignes de détail.
attachRowCount int Nombre de fichiers attachés.
source string Type de base de données (ex : DBF).
isSuccess bool Succès de la requête.
jnl string Code du journal (écho du paramètre).
number string Numéro du document (écho du paramètre).
totalExecutionTimeMs float Temps d'exécution en millisecondes.

Structure de la réponse data :

La réponse contient directement les champs de l'en-tête du document au premier niveau, plus deux tableaux detail et attach :

Champ en-tête Type Description
jnl string Code du journal.
number int Numéro du document.
type string Type de document (ex : CI = facture client, CO = commande).
date string Date du document (format ISO YYYY-MM-DDT00:00:00).
thirdid string Identifiant du tiers.
thirdname string Nom du tiers.
thirdaddr string Adresse du tiers.
thirdzip string Code postal du tiers.
thirdcity string Ville du tiers.
thirdcount string Code pays du tiers (ex : BE).
thirdvat string Numéro de TVA du tiers.
topay float Montant total TTC.
payed float Montant déjà payé.
status string Statut du document (code de Document_GetStatusList).
paydelay string Code de délai de paiement.
datepay string Date d'échéance de paiement (format ISO).
basis1 / basis2 / basis3 float Bases de calcul TVA (par taux).
vatid1 / vatid2 / vatid3 string Identifiants de taux TVA.
vatpc1 / vatpc2 / vatpc3 float Pourcentages TVA.
vatamt1 / vatamt2 / vatamt3 float Montants TVA.
yourref string Référence du client.
note string Remarques sur le document.
agent string Agent commercial.
vcs string Communication structurée (VCS).
time string Horodatage de création (format ISO avec heure).
docheadid string Identifiant interne unique de l'en-tête.
Champ ligne (detail[]) Type Description
docdetid string Identifiant interne unique de la ligne.
artid string Identifiant de l'article.
artname string Nom de l'article.
artdesc string Description de l'article.
qty float Quantité.
unitprice float Prix unitaire HT.
discount float Remise (en pourcentage).
amount float Montant HT de la ligne (qty x unitprice - discount).
vatid string Code TVA.
vatpc float Pourcentage TVA.
amtvatinc float Montant TTC de la ligne.
lineorder int Ordre de la ligne dans le document.
barcode string Code-barres de l'article.
status string Statut de la ligne.

Exemple de requête :

{
    "jnl": "03VEN",
    "number": "25105397"
}

Exemple de réponse (simplifié) :

{
    "data": {
        "jnl": "03VEN",
        "number": 25105397,
        "type": "CI",
        "date": "2025-07-01T00:00:00",
        "thirdid": "_@00025009",
        "thirdname": "LGTECH SPRL",
        "topay": 18958.28,
        "status": "",
        "detail": [
            {
                "artid": "DI21",
                "artname": "SQL SERVEUR 2022 STANDARD CORE",
                "qty": 4,
                "unitprice": 3917,
                "amount": 15668,
                "vatid": "21",
                "vatpc": 21,
                "lineorder": 2
            }
        ],
        "attach": []
    },
    "metadata": {
        "detailRowCount": 2,
        "attachRowCount": 0,
        "source": "DBF",
        "isSuccess": true,
        "jnl": "03VEN",
        "number": "25105397",
        "totalExecutionTimeMs": 24.96
    },
    "error": null
}

Document_GetStatusList -- Statuts disponibles d'un journal

Retourne la liste des statuts disponibles pour les documents d'un journal donné. Les statuts varient selon le type de journal. Utile pour connaître les états possibles d'un document (ouverte, envoyée, comptabilisée, soldée, etc.).

URL POST /{dossier}/Document_GetStatusList
Méthode service LogisticsService::documentGetStatusList(string $jnl)

Paramètres :

Paramètre Type Obligatoire Description
jnl string Oui Code du journal dont on veut connaître les statuts (ex : 03VEN, 01COM, 02NEV).

Exemple de requête :

{
    "jnl": "03VEN"
}

Exemple de réponse :

{
    "data": [
        { "code": "GE", "desc": "Générée" },
        { "code": "SE", "desc": "Envoyée au client" },
        { "code": "AC", "desc": "Comptabilisée" },
        { "code": "PA", "desc": "Payée" }
    ],
    "metadata": { "rowcount": 4, "issuccess": true },
    "error": null
}

Statuts observés par type de journal :

Journal Type Statuts
03VEN (Facture client) CI GE (Générée), SE (Envoyée au client), AC (Comptabilisée), PA (Payée)
01COM (Commande) CO OP (Ouverte), OS (Commandée aux fournisseurs), PR (Client Prévenu), MB (Marchandise bloquée en magasin), CL (Soldée)
02NEV (Note d'envoi) CD OP (Ouverte), TI (A facturer), IN (Facturée)
04NCV (Note de crédit) CC GE (Générée), SE (Envoyée au client), AC (Comptabilisée)
11COMF (Commande fournisseur) -- OP (Ouverte), SE (Envoyée au fournisseur), PD (Partiellement livrée), CL (Soldée)
09OFFRE (Offre de prix) CP (vide) -- pas de statuts configurés

Document_GetUnitPriceAndVat -- Prix unitaire et TVA

Retourne le prix unitaire et la TVA applicable pour un article dans un contexte précis (journal, tiers, date, quantité). Utile pour calculer le montant d'une ligne de document avant création. Le prix retourné est le prix configuré dans le système pour cet article/tiers/journal ; il peut être 0.00 si aucun prix n'est configuré.

URL POST /{dossier}/Document_GetUnitPriceAndVat
Méthode service LogisticsService::documentGetUnitPriceAndVat(array $params)

Paramètres :

Paramètre Type Obligatoire Description
ARTID string Oui Identifiant de l'article (champ artid de la table art).
QTY string Oui Quantité demandée. Doit impérativement être au format string (ex : "2"). Un entier provoque une erreur HTTP 400.
JNL string Oui Code du journal (ex : 03VEN).
THIRDID string Oui Identifiant du tiers (champ custid de la table cust).
DATE string Oui Date de référence pour le calcul du prix. Format obligatoire : YYYY-MM-DD (ex : "2025-07-01"). Tout autre format (DD/MM/YYYY, etc.) retourne une erreur HTTP 400 "Invalid date format. Expected format: YYYY-MM-DD".

Structure de la réponse data :

Champ Type Description
unitprice string Prix unitaire HT (ex : "3917.00", "0.00").
discount string Remise applicable (ex : "10.00", "." si aucune remise).
vatid string Code de taux TVA (ex : "21").
vatpc string Pourcentage TVA (ex : "21.00").

Exemple de requête :

{
    "ARTID": "DI21",
    "QTY": "4",
    "JNL": "03VEN",
    "THIRDID": "_@00025009",
    "DATE": "2025-07-01"
}

Exemple de réponse :

{
    "data": {
        "unitprice": "0.00",
        "discount": ".",
        "vatid": "21",
        "vatpc": "21.00"
    },
    "metadata": { "rowcount": 4, "issuccess": true },
    "error": null
}

Document_GetDueDate -- Echeance de paiement

Calcule la date d'échéance de paiement à partir d'un code de délai de paiement et d'une date de départ. Utile pour déterminer automatiquement la date limite de paiement d'un document.

URL POST /{dossier}/Document_GetDueDate
Méthode service LogisticsService::documentGetDueDate(string $payDelay, string $date)

Paramètres :

Paramètre Type Obligatoire Description
paydelay string Oui Code de délai de paiement. Les valeurs valides proviennent de codes_list avec code=PAYDELAY. Voir le tableau ci-dessous.
date string Oui Date de départ à partir de laquelle calculer l'échéance. Format obligatoire : YYYY-MM-DD (ex : "2025-07-01"). Tout autre format retourne une erreur HTTP 400 "Invalid date format. Expected format: YYYY-MM-DD".

Codes de délai de paiement disponibles (obtenus via codes_list avec code=PAYDELAY) :

Code (paydelay) Description Exemple : date=2025-07-01
30 30 jours date de facture 2025-08-01
30F 30 jours fin de mois 2025-08-30
45F 45 jours fin de mois 2025-08-31
50 50 jours date de facture 2025-08-20
60 60 jours date de facture 2025-09-01
60F 60 jours fin de mois 2025-08-31
75F 75 jours fin de mois 2025-09-30
90 90 jours date de facture 2025-10-01
90F 90 jours fin de mois 2025-09-30
0F 0 jours fin de mois (fin du mois courant) 2025-07-31

Structure de la réponse data :

Champ Type Description
duedate string Date d'échéance calculée (format YYYY-MM-DD).

Exemple de requête :

{
    "paydelay": "30",
    "date": "2025-07-01"
}

Exemple de réponse :

{
    "data": { "duedate": "2025-08-01" },
    "metadata": { "rowcount": 1, "issuccess": true },
    "error": null
}

Document_GetAttachListThumbnail -- Miniatures des annexes

Retourne les miniatures des fichiers images attachés à un document. Seuls les fichiers de type image sont concernés ; les autres types de fichiers ne sont pas retournés. Si le document n'a pas d'images attachées, l'API retourne une erreur spécifique (code 004).

URL POST /{dossier}/Document_GetAttachListThumbnail
Méthode service LogisticsService::documentGetAttachListThumbnail(string $jnl, string $number)

Paramètres :

Paramètre Type Obligatoire Description
JNL string Oui Code du journal du document (ex : 03VEN).
NUMBER string Oui Numéro du document (ex : 25105397).

Codes d'erreur spécifiques :

Code Description
003 Document non trouvé (Document {JNL} {NUMBER} not found.).
004 Aucune image trouvée (Error - no image found !). Le document existe mais n'a pas de fichier image attaché.

Exemple de requête :

{
    "JNL": "03VEN",
    "NUMBER": "25105397"
}

Exemple de réponse en erreur (pas d'image) :

{
    "data": {
        "xml": "<VFPData><headererror><errorcode>004</errorcode><description>Error - no image found !</description></headererror></VFPData>"
    },
    "metadata": { "rowcount": 1, "issuccess": false },
    "error": ["Code: 004, Description: Error - no image found !"]
}

Document_GetPDF -- Generation de PDF

Genere un fichier PDF pour un document donne et le retourne en base64. Le PDF contient la mise en page complete du document (en-tete, lignes de detail, totaux, informations tiers, etc.).

URL POST /{dossier}/Document_GetPDF
Methode service LogisticsService::documentGetPdf(string $jnl, string $number, string $layout)

Parametres :

Parametre Type Obligatoire Description
JNL string Oui Code du journal (ex : 03VEN).
NUMBER string Oui Numero du document (ex : 25105397).
LAYOUT string Oui Identifiant numerique de la mise en page du PDF. Doit etre une valeur numerique sous forme de string (ex : "0", "1", "2"). Toute valeur textuelle (ex : "default", "FACTURE", "A4") provoque une erreur "Valeur, type ou nombre d'arguments de fonction, non valide". Dans les tests, toutes les valeurs numeriques (0 a 10, y compris -1) retournent le meme PDF, ce qui suggere qu'une seule mise en page est configuree dans le dossier de test. La valeur "1" est recommandee par defaut.

Structure de la reponse data :

Champ Type Description
pdf string Contenu du fichier PDF encode en base64. Pour obtenir le fichier PDF, decoder cette chaine en base64.

Exemple de requete :

{
    "JNL": "03VEN",
    "NUMBER": "25105397",
    "LAYOUT": "1"
}

Exemple de reponse :

{
    "data": {
        "pdf": "JVBERi0xLjMNCiX..."
    },
    "metadata": { "rowcount": 1, "issuccess": true },
    "error": null
}

6.5 Tiers

Les tiers (clients, fournisseurs) sont les entités commerciales avec lesquelles l'entreprise interagit. Ils sont stockés dans la table cust.

third_list -- Recherche de tiers

Retourne une liste de tiers correspondant au filtre de recherche. Permet de trouver un client ou fournisseur par son nom, son identifiant ou d'autres critères. L'API retourne un maximum fixe de 10 résultats par appel, cette limite n'est pas configurable. La recherche s'effectue dans les colonnes name, groupid et vat (pas dans custid).

URL POST /{dossier}/third_list
Méthode service LogisticsService::thirdList(array $params)

Paramètres :

Paramètre Type Obligatoire Description
search string Oui Filtre de recherche textuel. Recherche dans les colonnes name, groupid et vat de la table cust. Ce paramètre est obligatoire : un appel sans search retourne une erreur HTTP 400 "Search terms are required". Un body vide provoque une erreur HTTP 500. Attention : la recherche ne porte PAS sur custid. Pour trouver un tiers par son identifiant, il faut chercher par son nom, son groupid ou son numéro de TVA.
select string Non Liste des colonnes à retourner, séparées par des virgules. Insensible à la casse. Si omis, les colonnes par défaut sont custid,name. L'API ignore silencieusement les noms de colonnes invalides sans émettre d'erreur. Voir le tableau des colonnes valides ci-dessous.
results int Non Sans effet. Ce paramètre est accepté par l'API mais n'influence pas le nombre de résultats retournés. L'API retourne toujours un maximum de 10 résultats, quelle que soit la valeur de results (testé avec 3, 5, 10, 20, en int et en string).

Colonnes valides pour select (testées individuellement) :

Colonne Type Description Exemple
custid string Identifiant unique du tiers "0100002174"
name string Nom principal du tiers "ESI SPRL"
name2 string Nom secondaire / complément "BOX7"
vat string Numéro de TVA "0431.066.713"
email string Adresse email "jre@esi-informatique.com"
groupid string Identifiant de groupe "ESI01"
website string Site web ""
memo string Mémo / remarques ""
paydelay string Code de délai de paiement ""
paymode string Mode de paiement ""
bankname string Nom de la banque ""
iban string Code IBAN "BE09348066192157"
bic string Code BIC/SWIFT "BBRUBEBB"
custtype string Type de client "PRO"
discount float Remise globale 0

Colonnes invalides (ignorées silencieusement) : custname, name1, addr1, addr2, zip, city, country, vatnum, phone1, phone, addr, address, tel, fax, web, note, lang, type, status, categ, bankaccount, maxdisc.

Attention : la colonne custname n'existe PAS dans third_list. Le nom du tiers est dans la colonne name. C'est une différence importante par rapport à d'autres endpoints (comme document_detail) qui utilisent thirdname.

Métadonnées retournées :

Clé Type Description
rowCount int Nombre de résultats retournés (maximum 10).
source string Type de base de données (ex : DBF).
executionTimeMs int Temps d'exécution de la requête en millisecondes.
searchColumns string Colonnes utilisées pour la recherche (toujours name,groupid,vat).
selectColumns string Colonnes demandées dans le paramètre select.
searchTerms string Termes de recherche utilisés.

Exemple de requête :

{
    "search": "ESI",
    "select": "custid,name,vat,groupid"
}

Exemple de réponse :

{
    "data": [
        {
            "custid": "0100002174",
            "name": "ESI SPRL",
            "vat": "0431.066.713",
            "groupid": "ESI01"
        },
        {
            "custid": "0100002175",
            "name": "E.I.S. SA",
            "vat": "0435.063.806",
            "groupid": "ESI02"
        }
    ],
    "metadata": {
        "rowCount": 2,
        "source": "DBF",
        "executionTimeMs": 111,
        "searchColumns": "name,groupid,vat",
        "selectColumns": "custid,name,vat,groupid",
        "searchTerms": "ESI"
    },
    "error": null
}

third_GetArtHistory -- Historique des articles d'un tiers

Retourne l'historique complet des articles présents dans les documents associés à un tiers. Permet d'analyser les achats ou ventes passés d'un client/fournisseur. L'endpoint retourne tous les articles sans pagination ni limite (jusqu'à plusieurs milliers d'éléments). Les résultats sont triés par date décroissante (les plus récents en premier).

URL POST /{dossier}/third_GetArtHistory
Méthode service LogisticsService::thirdGetArtHistory(string $thirdId)

Paramètres :

Paramètre Type Obligatoire Description
thirdid string Oui Identifiant du tiers (champ custid de la table cust). La casse du nom de paramètre est importante : thirdid en minuscules est obligatoire. THIRDID en majuscules provoque une erreur HTTP 400 "thirdid parameter is required.". Un appel sans ce paramètre retourne également une erreur HTTP 400. Si l'identifiant n'existe pas, l'API retourne un tableau vide sans erreur.

Paramètres ignorés : les paramètres select et results sont acceptés par l'API mais n'ont aucun effet sur la réponse. L'endpoint retourne toujours l'ensemble complet des colonnes et tous les résultats.

Structure de la réponse data :

Chaque élément du tableau data contient :

Champ Type Description
artid string Identifiant de l'article.
artname string Nom de l'article (peut être tronqué à environ 80 caractères).
jnl string Code du journal dans lequel l'article a été utilisé (ex : 03VEN, 09OFFRE, INV).
unitprice float Prix unitaire de l'article dans ce document.
qty int ou float Quantité de l'article dans ce document.
vatid string Code de taux TVA (ex : "21").
vatpc int ou float Pourcentage TVA (ex : 21).
s_credate string Date de création du document (format YYYY-MM-DD).

Métadonnées retournées :

Clé Type Description
rowCount int Nombre total de résultats retournés (peut atteindre plusieurs milliers).
source string Type de base de données (ex : DBF).

Exemple de requête :

{
    "thirdid": "0100002174"
}

Exemple de réponse :

{
    "data": [
        {
            "artid": "EP2-06658",
            "artname": "Office Home and Business 2024 French Eur",
            "jnl": "09OFFRE",
            "unitprice": 220,
            "qty": 1,
            "vatid": "21",
            "vatpc": 21,
            "s_credate": "2025-06-03"
        },
        {
            "artid": "MO ATELIER",
            "artname": "FORFAIT PREPARATION PC / REMPLACEMENT DISQUE",
            "jnl": "09OFFRE",
            "unitprice": 65,
            "qty": 1,
            "vatid": "21",
            "vatpc": 21,
            "s_credate": "2025-06-03"
        }
    ],
    "metadata": {
        "rowCount": 4468,
        "source": "DBF"
    },
    "error": null
}

Remarques :

  • Un même article peut apparaître plusieurs fois dans l'historique s'il figure dans plusieurs documents.
  • Le champ jnl permet de distinguer le type de document (offre, facture, note de crédit, etc.).
  • Le volume de données peut être conséquent (milliers d'éléments). L'application affiche les résultats dans un bloc JSON formaté.

6.6 Divers

getserialnumber -- Numéro de série du dossier

Retourne le numéro de série du dossier comptable. Identifie de manière unique l'installation du logiciel de gestion.

URL POST /{dossier}/getserialnumber
Méthode service LogisticsService::getSerialNumber()

Paramètres : aucun.

Structure de la réponse data :

La clé data est un objet contenant une seule clé getserialnumber avec le numéro de série sous forme de chaîne.

Champ Type Description
getserialnumber string Numéro de série du dossier comptable (ex : "10005826").

Exemple de requête :

{}

Exemple de réponse :

{
    "data": {
        "getserialnumber": "10005826"
    },
    "metadata": { "rowcount": 1, "issuccess": true },
    "error": null
}

codes_list -- Données par code interne

Retourne les données associées à un code interne. Les codes proviennent de la table incodes et servent à stocker des listes de valeurs paramétrables (types de documents, catégories, délais de paiement, modes de paiement, codes TVA, pays, etc.).

URL POST /{dossier}/codes_list
Méthode service LogisticsService::codesList(array $params)

Paramètres :

Paramètre Type Obligatoire Description
code string Oui Nom exact du groupe de codes internes (de la table incodes). Correspondance exacte, pas de filtre par préfixe. Sensible à la casse : doit être en MAJUSCULES (ex : PAYDELAY, pas paydelay). Si la valeur est une chaîne vide (""), retourne la liste de tous les groupes de codes disponibles.

Comportement selon la valeur de code :

Valeur de code Résultat
Chaîne vide "" Retourne la liste maître de tous les groupes de codes (42 groupes dans le dossier de test). Structure : name (identifiant du groupe) + prompt1 (description en français).
Nom exact d'un groupe (ex : PAYDELAY) Retourne les valeurs du groupe. Structure : vala1 à vala6 (chaînes), valn1, valn2 (nombres).
Nom inexistant Retourne un tableau vide sans erreur.
Nom partiel (ex : PAY au lieu de PAYMODE) Retourne un tableau vide (pas de recherche par préfixe).
Minuscules (ex : paydelay) Retourne un tableau vide (sensible à la casse).

Body vide ({}) : retourne une erreur HTTP 400.

Paramètre select : accepté par l'API mais sans effet. Toutes les colonnes sont toujours retournées.

Structure de la réponse data -- mode liste maître (code vide) :

Champ Type Description
name string Identifiant unique du groupe de codes (ex : PAYDELAY, PAYMODE, VAT).
prompt1 string Description du groupe en français (ex : "Délais de paiements", "Modes de paiement").

Structure de la réponse data -- mode valeurs d'un groupe :

Champ Type Description
vala1 string Code/valeur principale (ex : "30", "CAS", "BE", "21").
vala2 string Description en français (ex : "30 jours date de facture", "CASH", "BELGIQUE", "Ventes 21 %").
vala3 string Description en néerlandais ou alternative (ex : "Belgïe", "exclusief cash"). Souvent vide.
vala4 string Champ texte supplémentaire. Généralement vide.
vala5 string Champ texte supplémentaire. Utilisé pour certains codes (ex : codes TVA : "NSS 21").
vala6 string Champ texte supplémentaire. Généralement vide.
valn1 int ou float Valeur numérique 1. Signification variable selon le groupe (ex : pour PAYDELAY = nombre de jours, pour VAT = pourcentage).
valn2 int ou float Valeur numérique 2. Signification variable selon le groupe.

Groupes de codes disponibles (42 dans le dossier de test) :

Groupe Description Exemples de valeurs (vala1)
PAYDELAY Délais de paiements 30, 30F, 45F, 50, 60, 60F, 75F, 90, 90F, 0F
PAYMODE Modes de paiement CAS (Cash), VIR (Virement), BC (Bancontact), CBEF (Cash BEF)
VAT Codes TVA 21, 6, 0, ECEE, IEXP, MD21, ESERV, EMD21, C
VATCAT Régime TVA N (Non-assujetti), R (Exempté), `` (Assujetti)
STOCK Dépôts / Entrepôts A, SG (SEGEC)
COUNTRY Pays BE (Belgique), FR (France), DE (Allemagne), etc. (31 entrées)
CUSTTYPE Types de tiers FOU (Fournisseur), CLI (Client), PRO (Prospect), TRA (Transporteur)
LANGUAGE Langues F (Français), N (Nederlands)
AGENT Agents PON, FAB, TD, ESI, BPOST, LEBA, etc.
CATEGORIE Catégories d'article CARTOUCHE, PAPIER, TONER, CABLE, IMPRIMANTE, etc. (45 entrées)
MARQUE Marques produit (valeurs disponibles)
CIVILITY Civilité (valeurs disponibles)
DLVMODE Modes de livraison (0 valeurs configurées)
ACCOUNT Comptes généraux (valeurs disponibles)
ARTFAMILY Familles de prix article (valeurs disponibles)
CUSTACC Catégories comptables client (valeurs disponibles)
ARTACC Catégories comptables article (valeurs disponibles)

Métadonnées retournées :

Clé Type Description
rowCount int Nombre de résultats retournés.
source string Type de base de données (ex : DBF).

Exemple de requête -- liste maître :

{
    "code": ""
}

Exemple de réponse -- liste maître (extrait) :

{
    "data": [
        { "name": "PAYDELAY", "prompt1": "Délais de paiements" },
        { "name": "PAYMODE", "prompt1": "Modes de paiement" },
        { "name": "VAT", "prompt1": "Codes TVA" },
        { "name": "STOCK", "prompt1": "Dépôts" }
    ],
    "metadata": { "rowCount": 42, "source": "DBF" },
    "error": null
}

Exemple de requête -- valeurs d'un groupe :

{
    "code": "PAYMODE"
}

Exemple de réponse -- valeurs d'un groupe :

{
    "data": [
        { "vala1": "", "vala2": "", "vala3": "", "vala4": "", "vala5": "", "vala6": "", "valn1": 0, "valn2": 0 },
        { "vala1": "CAS", "vala2": "CASH", "vala3": "exclusief cash", "vala4": "", "vala5": "", "vala6": "", "valn1": 1, "valn2": 0 },
        { "vala1": "VIR", "vala2": "Virement", "vala3": "Overschrijving", "vala4": "", "vala5": "", "vala6": "", "valn1": 0, "valn2": 0 },
        { "vala1": "BC", "vala2": "Bancontact", "vala3": "", "vala4": "", "vala5": "", "vala6": "", "valn1": 4, "valn2": 0 },
        { "vala1": "CBEF", "vala2": "CASH BEF", "vala3": "", "vala4": "", "vala5": "", "vala6": "", "valn1": 2, "valn2": 0 }
    ],
    "metadata": { "rowCount": 5, "source": "DBF" },
    "error": null
}

Remarque : chaque groupe contient souvent une première entrée avec des valeurs vides (entrée par défaut). La signification exacte des champs valn1 et valn2 varie selon le groupe. Par exemple, pour PAYDELAY, valn1 est le nombre de jours et valn2 semble être un type de calcul (1 = date de facture, 2 = date de facture, 3 = fin de mois). Pour VAT, valn1 et valn2 sont le pourcentage de TVA.


custom_geninv_updatestock -- Mise à jour du stock

Met à jour le stock d'un article dans un dépôt. Supporte deux modes : inventaire (comptage) et réapprovisionnement (restock). Le mode Restock (MODE=1) est fonctionnel. Le mode Inventaire (MODE=0) nécessite un journal d'inventaire (type KI) configuré pour le dépôt, ce qui peut ne pas être le cas dans tous les dossiers.

URL POST /{dossier}/custom_geninv_updatestock
Méthode service LogisticsService::customGeninvUpdatestock(array $params)
Statut Fonctionnel (MODE=1 Restock). MODE=0 Inventaire dépend de la configuration des journaux.

Paramètres :

Paramètre Type Obligatoire Description
ARTID string Oui Identifiant de l'article (champ artid de la table art).
STKID string Oui Code du dépôt / entrepôt. Les valeurs valides sont obtenues via codes_list avec code=STOCK (ex : "A", "SG"). L'API recherche un journal d'inventaire ou de mouvement de stock associé à ce dépôt.
QTY string Oui Quantité de stock à ajouter. Format string. Peut être négatif pour retirer du stock (ex : "-5").
TOCHECK string Oui Prix de contrôle. La valeur est stockée avec le mouvement d'inventaire mais n'affecte pas directement la quantité de stock. Peut être "0" si non pertinent.
TOCHECKDETAIL string Oui Détail / remarque de contrôle. Texte libre stocké avec le mouvement d'inventaire. Peut être vide "".
MODE string Oui Mode d'opération. "0" = Inventaire (comptage/rectification, nécessite journal KI pour le dépôt). "1" = Restock / réapprovisionnement (nécessite THIRDID). Toute valeur différente de "0" est traitée comme Restock.
THIRDID string Conditionnel Identifiant du tiers (fournisseur). Obligatoire en mode Restock (MODE != "0"). Correspond au champ custid de la table cust. Non utilisé en mode Inventaire.

Modes de fonctionnement :

MODE Nom Description Prérequis
"0" Inventaire Comptage / rectification de stock. Crée un document dans le journal d'inventaire (type KI) du dépôt. Le dépôt doit avoir un journal de type KI associé (via le champ STKID du journal).
"1" Restock Réapprovisionnement. Enregistre une entrée de marchandise en provenance d'un fournisseur. Crée un document dans le journal de mouvement de stock (type KM) du dépôt. Le paramètre THIRDID doit être fourni (identifiant du fournisseur).

Codes d'erreur spécifiques :

Code Message Description
002 Invalid parameter, inventory JNL not found for warehouse : {STKID} Aucun journal d'inventaire n'est configuré pour le dépôt spécifié. Vérifiez que le dépôt a un journal KI (MODE=0) ou KM (MODE=1) associé.
003 Invalid parameter, THIRDID is EMPTY, mandatory in this mode 'Restock' Le paramètre THIRDID est manquant ou vide alors que le mode Restock est actif.

Relation STKID / Journaux :

Le paramètre STKID doit correspondre à un dépôt ayant un journal d'inventaire ou de mouvement de stock configuré. Les journaux de type K (inventaire/stock) et leur STKID associé sont visibles via jnl_list avec TYPE=K :

Journal Type STKID Compatibilité MODE
INV (Inventaire) KI "" (vide) MODE=0 (mais dépôt par défaut non résolu dans les tests)
MVTSG (Mouvement stock SEGEC) KM SG MODE=1 (Restock)

Structure de la réponse data (succès) :

Champ Type Description
custom_geninv_updatestock string Message de confirmation. Contient l'ARTID, le mode et la quantité appliquée.

Exemple de requête (Restock) :

{
    "ARTID": "003R92572",
    "STKID": "SG",
    "QTY": "5",
    "TOCHECK": "12.50",
    "TOCHECKDETAIL": "Réapprovisionnement fournisseur",
    "MODE": "1",
    "THIRDID": "0100002174"
}

Exemple de réponse (succès) :

{
    "data": {
        "custom_geninv_updatestock": "OK : Change applied - Artid : 003R92572            - Real stock received (Restock mode) : 5.00"
    },
    "metadata": { "rowcount": 1, "issuccess": true },
    "error": null
}

Exemple de réponse en erreur (journal non trouvé) :

{
    "data": {
        "xml": "<VFPData><headererror><errorcode>002</errorcode><description>Invalid parameter, inventory JNL not found for warehouse : A</description></headererror></VFPData>"
    },
    "metadata": { "rowcount": 1, "issuccess": false },
    "error": ["Code: 002, Description: Invalid parameter, inventory JNL not found for warehouse : A"]
}

7. Envoi de données

Les endpoints de cette section permettent de créer ou modifier des données dans le système de gestion via l'API.

7.1 Ajout d'un document

document_add -- Création d'un document

Crée un nouveau document commercial (devis, commande, facture, etc.) dans un journal. Le document est composé d'un en-tête (tiers, date, journal) et d'une ou plusieurs lignes d'articles.

URL POST /{dossier}/document_add
Méthode service LogisticsService::documentAdd(array $params)

Paramètres :

Paramètre Type Obligatoire Description
ThirdId string Oui Identifiant du tiers (champ custid de la table cust). Détermine le client ou fournisseur associé au document.
Date string Oui Date d'encodage du document (ex : "2026-02-20").
Artid array Oui Tableau d'identifiants d'articles (champ artid de la table art). Chaque élément correspond à une ligne du document.
Qty array Oui Tableau de quantités. Correspond position par position au tableau Artid. Chaque élément est un string.
Saleprice array Oui Tableau des prix de vente unitaires. Correspond position par position au tableau Artid. Chaque élément est un string.
JNL string Oui Code du journal dans lequel créer le document (ex : "VEN" pour ventes).
Discount array Non Tableau des réductions de prix (en pourcentage ou montant). Correspond position par position au tableau Artid.
Vatid array Non Tableau des identifiants de code TVA. Correspond position par position au tableau Artid.
Vatpc array Non Tableau des pourcentages de TVA. Correspond position par position au tableau Artid.
Attachments array Non Liste de fichiers joints au document. Voir la structure ci-dessous.

Structure d'un élément Attachments :

Clé Type Description
FileName string Nom du fichier avec extension (ex : "facture.pdf").
FileDesc string Description du fichier (ex : "Bon de commande signé").
FileContentBase64 string Contenu du fichier encodé en base64.

Correspondance des tableaux : les tableaux Artid, Qty, Saleprice, Discount, Vatid et Vatpc fonctionnent par correspondance positionnelle. L'élément à l'index 0 de chaque tableau concerne la première ligne du document, l'élément à l'index 1 la deuxième ligne, etc.

Exemple de requête :

{
    "ThirdId": "CUST001",
    "Date": "2026-02-20",
    "Artid": ["ART001", "ART002"],
    "Qty": ["2", "5"],
    "Saleprice": ["10.00", "25.50"],
    "JNL": "VEN",
    "Discount": ["0", "10"],
    "Vatid": ["TVA21", "TVA21"],
    "Vatpc": ["21", "21"],
    "Attachments": [
        {
            "FileName": "bon.pdf",
            "FileDesc": "Bon de commande",
            "FileContentBase64": "JVBERi0xLjQK..."
        }
    ]
}

7.2 Modification d'un document

document_mod -- Modification d'un document existant

Modifie un document existant identifié par son numéro et son journal. Permet de mettre à jour les lignes d'articles, les prix, le tiers, ou d'ajouter des fichiers joints.

URL POST /{dossier}/document_mod
Méthode service LogisticsService::documentMod(array $params)

Paramètres :

Paramètre Type Obligatoire Description
number string Oui Identifiant du document à modifier.
JNL string Oui Code du journal lié au document.
Thirdid string Non Nouvel identifiant du tiers (si modification du tiers associé).
Artid array Non Tableau d'identifiants d'articles (remplace les lignes existantes).
Qty array Non Tableau de quantités (correspond position par position à Artid).
Saleprice array Non Tableau des prix de vente unitaires (correspond position par position à Artid).
Attachments array Non Liste de fichiers joints (même structure que document_add).

Exemple de requête :

{
    "number": "2026/0001",
    "JNL": "VEN",
    "Artid": ["ART001", "ART003"],
    "Qty": ["3", "1"],
    "Saleprice": ["10.00", "50.00"]
}

8. Relations entre entités

Les entités du système de gestion sont liées entre elles selon le schéma suivant :

Tiers (cust)
  |
  +-- possède un ou plusieurs --> Documents (dochead / docdet)
                                    |
                                    +-- appartient à un --> Journal (jnl)
                                    |
                                    +-- contient un ou plusieurs --> Articles (art)
                                    |
                                    +-- peut avoir des --> Fichiers attachés (attach)
                                    |
                                    +-- peut avoir des --> Paiements (docpay)

Description des relations :

  • Un tiers (cust) est un client ou fournisseur. Il peut être associé à plusieurs documents commerciaux.
  • Un journal (jnl) regroupe plusieurs documents du même type (ventes, achats, retours, etc.). Chaque document appartient à un seul journal.
  • Un document est composé d'un en-tête (dochead) contenant les informations générales (tiers, date, journal, statut, totaux) et de lignes de détail (docdet) contenant les articles.
  • Un article (art) est une référence produit du catalogue. Chaque ligne de document fait référence à un article avec une quantité, un prix unitaire et une TVA.
  • Le stock (stk) contient les quantités en stock par article. Il est consultable via l'endpoint art_getstk.
  • Les fichiers attachés (attach) sont des pièces jointes associées aux documents (factures PDF, bons de commande scannés, etc.).
  • Les paiements (docpay) enregistrent les règlements associés aux documents.
  • Les codes internes (incodes) sont des tables de référence paramétrables utilisées pour les listes déroulantes, les types, les catégories, etc.

9. Remarques et points d'attention

  1. Dossier en minuscules : le nom du dossier dans les URLs doit toujours être en minuscules. Exemple : esigescom, pas EsiGescom. Le non-respect de cette règle provoque une erreur.

  2. Méthode POST uniquement : tous les endpoints utilisent la méthode POST, y compris pour les opérations de lecture. N'utilisez pas GET, PUT ou DELETE.

  3. Paramètres numériques en string : plusieurs paramètres qui représentent des nombres doivent être transmis au format string. Le paramètre QTY dans Document_GetUnitPriceAndVat ("2", pas 2) et le paramètre results dans jnl_list ("50", pas 50) provoquent une erreur HTTP 400 s'ils sont envoyés comme entiers. Toujours caster en string les valeurs numériques en cas de doute.

  4. Paramètre search obligatoire pour third_list : l'endpoint third_list exige le paramètre search. Un appel sans ce paramètre retourne une erreur.

  5. Paramètre results : le comportement de ce paramètre varie selon l'endpoint. Pour art_list, il n'a aucun effet (toujours 5 résultats maximum). Pour third_list, il n'a aucun effet non plus (toujours 10 résultats maximum). En revanche, pour jnl_list et document_list, le paramètre results fonctionne réellement et limite le nombre de résultats retournés. Pour jnl_list, la limite par défaut est de 30, et le paramètre doit être au format string. Pour document_list, la limite par défaut est d'environ 108 résultats. Attention : pour document_list, le paramètre results n'a d'effet que lorsqu'un thirdid est également fourni. Sans thirdid, l'API ignore results et retourne tous les documents disponibles.

  6. Paramètre TYPE obligatoire pour jnl_list : l'endpoint jnl_list exige le paramètre TYPE. Le filtre accepte 1 caractère (filtre large : C pour tous les journaux client) ou 2 caractères (filtre exact : CI pour les factures client uniquement). Un appel sans ce paramètre retourne une erreur.

  7. Format du champ error : le champ error de la réponse API peut être null, une chaîne ou un tableau de chaînes. L'application normalise ce champ automatiquement via ApiErrorTranslator.

  8. Paramètre select : permet de choisir les colonnes à retourner. Les noms de colonnes disponibles pour chaque table s'obtiennent via column_list/{tablename}. Si omis, un jeu de colonnes par défaut est retourné. Attention : les noms de colonnes doivent correspondre exactement à ceux retournés par column_list (ex : name1, pas artname). L'API ignore silencieusement les noms de colonnes invalides sans émettre d'erreur.

  9. Casse des paramètres : la casse des noms de paramètres varie selon les endpoints. Par exemple, l'identifiant du tiers peut être thirdid, Thirdid ou THIRDID selon l'endpoint. Respectez la casse documentée pour chaque endpoint.

  10. Fichiers attachés en base64 : lors de l'ajout ou la modification de documents, les fichiers joints doivent être encodés en base64 dans le champ FileContentBase64. Seul le contenu du fichier est encodé, pas le nom ni la description.

  11. Déduplication des colonnes : l'endpoint column_list retourne chaque colonne en double. L'application effectue une déduplication automatique, mais si vous interrogez l'API directement, vous devez gérer ce doublon.

  12. Correspondance positionnelle des tableaux : dans document_add et document_mod, les tableaux Artid, Qty, Saleprice, Discount, Vatid et Vatpc fonctionnent par correspondance positionnelle. Assurez-vous que tous les tableaux ont la même longueur.

  13. Timeout : certaines requêtes peuvent être lentes selon le volume de données. Le timeout par défaut est configuré à 300 secondes. En cas de timeout, vérifiez la configuration LOGISTICS_API_TIMEOUT.

  14. Format de date obligatoire : les endpoints qui acceptent un paramètre de date (DATE, date) exigent le format YYYY-MM-DD (ex : "2025-07-01"). Tout autre format (DD/MM/YYYY, MM/DD/YYYY, etc.) retourne une erreur HTTP 400 avec le message "Invalid date format. Expected format: YYYY-MM-DD". Les dates dans les réponses API utilisent le format ISO YYYY-MM-DDT00:00:00 (avec composante horaire).

  15. Document_GetPDF et parametre LAYOUT : le parametre LAYOUT de l'endpoint Document_GetPDF doit etre une valeur numerique sous forme de string (ex : "1"). Les valeurs textuelles ("default", "FACTURE", "A4", etc.) provoquent une erreur. La valeur "1" est recommandee par defaut.

  16. Codes de délai de paiement : les valeurs valides pour paydelay (utilisé dans Document_GetDueDate) sont obtenues via l'endpoint codes_list avec code=PAYDELAY. Les codes courants sont : 30, 30F, 45F, 50, 60, 60F, 75F, 90, 90F, 0F. Le suffixe F indique un calcul "fin de mois" (l'échéance tombe le dernier jour du mois de calcul).

  17. Modes de paiement : les valeurs valides pour les modes de paiement sont obtenues via codes_list avec code=PAYMODE. Les codes courants sont : CAS (Cash), VIR (Virement), BC (Bancontact), CBEF (Cash BEF).

  18. Colonnes third_list vs column_list/cust : l'endpoint third_list n'accepte PAS toutes les colonnes de la table cust dans son paramètre select. Seul un sous-ensemble de colonnes est valide : custid, name, name2, vat, email, groupid, website, memo, paydelay, paymode, bankname, iban, bic, custtype, discount. Les colonnes custname, name1, addr1, zip, city, country, phone1 (pourtant présentes dans column_list/cust) sont ignorées silencieusement. La colonne pour le nom du tiers est name (et non custname).

  19. Colonnes de recherche third_list : la recherche textuelle de third_list porte sur les colonnes name, groupid et vat. Il n'est PAS possible de rechercher par custid. Pour retrouver un tiers spécifique par son identifiant, il faut utiliser une autre information (nom, numéro de TVA, groupid).

  20. third_GetArtHistory -- casse du paramètre : le paramètre thirdid doit être en minuscules. THIRDID en majuscules provoque une erreur HTTP 400 "thirdid parameter is required.", comme si le paramètre n'avait pas été fourni. L'endpoint retourne l'intégralité de l'historique sans limite (potentiellement des milliers d'éléments).

  21. codes_list -- correspondance exacte et casse : le paramètre code de l'endpoint codes_list fonctionne par correspondance exacte sur le nom du groupe de codes, pas par préfixe. code=PAY retourne 0 résultats ; il faut code=PAYMODE ou code=PAYDELAY en entier. Le paramètre est sensible à la casse : seules les majuscules fonctionnent (PAYDELAY, pas paydelay). Une chaîne vide (code="") retourne la liste maître de tous les groupes disponibles (42 groupes). Le body vide ({}) provoque une erreur HTTP 400.

  22. codes_list -- structure de réponse variable : la structure de data diffère selon la valeur de code. Avec une chaîne vide, les éléments contiennent name et prompt1. Avec un nom de groupe valide, les éléments contiennent vala1 à vala6 (chaînes) et valn1, valn2 (nombres). La signification de ces champs varie selon le groupe.

  23. custom_geninv_updatestock -- fonctionnel en mode Restock : cet endpoint est fonctionnel en MODE=1 (Restock). Il nécessite 6 paramètres obligatoires (ARTID, STKID, QTY, TOCHECK, TOCHECKDETAIL, MODE) plus THIRDID en mode Restock. Le paramètre STKID correspond à un code de dépôt (obtenu via codes_list avec code=STOCK), et le dépôt doit avoir un journal d'inventaire (KI) ou de mouvement de stock (KM) associé. Le MODE=0 (Inventaire) dépend de la configuration des journaux du dossier.

  24. getserialnumber -- structure de réponse : la clé data de la réponse est un objet { "getserialnumber": "10005826" } (pas une chaîne directe). Le champ contient le numéro de série du dossier comptable.


10. Ressources externes