- Introduced new endpoints for creating and modifying articles (`art_add`, `art_mod`) and tiers (`third_add`, `third_mod`), allowing users to manage these entities effectively. - Updated the Articles and Tiers pages to include forms for adding and modifying records, complete with parameter tables for clear guidance on required inputs. - Enhanced the API documentation to include detailed descriptions, examples, and metadata for the new endpoints, improving usability and understanding for developers. - Created a new rule for writing conventions with French accents to ensure consistency across the project. - Updated existing documentation to reflect structural changes and added a summary table for CRUD operations. - Added tests to verify the functionality of the new features and ensure robust error handling.
2865 lines
130 KiB
Markdown
2865 lines
130 KiB
Markdown
# Documentation API Logistics (Flex/ESI Gescom)
|
|
|
|
Dernière mise à jour : 2026-02-23
|
|
|
|
---
|
|
|
|
## Table des matières
|
|
|
|
1. [Pré-requis](#1-pré-requis)
|
|
- [Connexion VPN](#connexion-vpn)
|
|
- [Accès au serveur](#accès-au-serveur)
|
|
- [Clé API](#clé-api)
|
|
- [Dossier](#dossier)
|
|
- [Variables d'environnement](#variables-denvironnement)
|
|
- [Configuration Laravel](#configuration-laravel)
|
|
2. [Environnements d'utilisation](#2-environnements-dutilisation)
|
|
- 2.1 [Projet local avec VPN](#21-projet-local-avec-vpn)
|
|
- 2.2 [Bureau à distance (Postman)](#22-bureau-à-distance-postman)
|
|
- 2.3 [Récapitulatif des différences](#23-récapitulatif-des-différences)
|
|
3. [Comment effectuer des requêtes](#3-comment-effectuer-des-requêtes)
|
|
- [Méthode HTTP](#méthode-http)
|
|
- [Format de l'URL](#format-de-lurl)
|
|
- [Headers obligatoires](#headers-obligatoires)
|
|
- [Exemple de requête complète](#exemple-de-requête-complète)
|
|
- [Paramètres des requêtes](#paramètres-des-requêtes)
|
|
- [Gestion des erreurs](#gestion-des-erreurs)
|
|
- [Validation des champs](#validation-des-champs)
|
|
4. [Structure de réponse](#4-structure-de-réponse)
|
|
- [Format standard](#format-standard)
|
|
- [Description des clés](#description-des-clés)
|
|
- [Exemple de réponse réussie](#exemple-de-réponse-réussie)
|
|
- [Exemple de réponse en erreur](#exemple-de-réponse-en-erreur)
|
|
- [Métadonnées spécifiques par endpoint](#métadonnées-spécifiques-par-endpoint)
|
|
5. [Tables et colonnes disponibles](#5-tables-et-colonnes-disponibles)
|
|
- [Liste des tables](#liste-des-tables)
|
|
- [Types de colonnes](#types-de-colonnes)
|
|
- [Colonnes systeme communes](#colonnes-systeme-communes)
|
|
- [Colonnes detaillees par table](#colonnes-detaillees-par-table)
|
|
- [Exploration des colonnes](#exploration-des-colonnes)
|
|
6. [Récupération de données](#6-récupération-de-données)
|
|
- 6.1 [Structure de la base de données (tables_list, column_list)](#61-structure-de-la-base-de-données)
|
|
- 6.2 [Articles (art_list, art_getstk)](#62-articles)
|
|
- 6.3 [Journaux (jnl_list)](#63-journaux)
|
|
- 6.4 [Documents (document_list, document_detail, Document_GetStatusList, Document_GetUnitPriceAndVat, Document_GetDueDate, Document_GetAttachListThumbnail, Document_GetPDF)](#64-documents)
|
|
- 6.5 [Tiers (third_list, third_GetArtHistory)](#65-tiers)
|
|
- 6.6 [Divers (getserialnumber, codes_list, custom_geninv_updatestock)](#66-divers)
|
|
7. [Envoi de données](#7-envoi-de-données)
|
|
- 7.1 [Documents (document_add, document_mod)](#71-documents)
|
|
- 7.2 [Articles (art_add, art_mod)](#72-articles)
|
|
- 7.3 [Tiers (third_add, third_mod)](#73-tiers)
|
|
- 7.4 [Divers (custom_geninv_updatestock)](#74-divers)
|
|
8. [Relations entre entités](#8-relations-entre-entités)
|
|
9. [Remarques et points d'attention](#9-remarques-et-points-dattention)
|
|
10. [Ressources externes](#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
|
|
|
|
```http
|
|
POST /esigescom/art_list HTTP/1.1
|
|
Host: tse-10-test.esiweb.pro:5186
|
|
X-API-KEY: votre-cle-api
|
|
Content-Type: application/json
|
|
|
|
```
|
|
|
|
### 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 :
|
|
|
|
```json
|
|
{
|
|
"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
|
|
|
|
```json
|
|
{
|
|
"data": [
|
|
{ "artid": "ART001", "name1": "Chaise bureau" },
|
|
{ "artid": "ART002", "name1": "Chaise visiteur" }
|
|
],
|
|
"metadata": {
|
|
"rowcount": 2,
|
|
"issuccess": true
|
|
},
|
|
"error": null
|
|
}
|
|
```
|
|
|
|
### Exemple de réponse en erreur
|
|
|
|
```json
|
|
{
|
|
"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** :
|
|
|
|
```json
|
|
{}
|
|
```
|
|
|
|
**Exemple de réponse** :
|
|
|
|
```json
|
|
{
|
|
"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** :
|
|
|
|
```json
|
|
{
|
|
"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** :
|
|
|
|
```json
|
|
{
|
|
"search": "chaise",
|
|
"select": "artid,name1,saleprice"
|
|
}
|
|
```
|
|
|
|
**Exemple de réponse** :
|
|
|
|
```json
|
|
{
|
|
"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** :
|
|
|
|
```json
|
|
{
|
|
"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** :
|
|
|
|
```json
|
|
{
|
|
"TYPE": "C",
|
|
"select": "JNL,NAME,TYPE,NUMBER",
|
|
"results": "50"
|
|
}
|
|
```
|
|
|
|
**Exemple de réponse** :
|
|
|
|
```json
|
|
{
|
|
"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** :
|
|
|
|
```json
|
|
{
|
|
"select": "jnl,number,thirdid,date,status,topay",
|
|
"thirdid": "_@00025009",
|
|
"results": "20"
|
|
}
|
|
```
|
|
|
|
**Exemple de réponse** :
|
|
|
|
```json
|
|
{
|
|
"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** :
|
|
|
|
```json
|
|
{
|
|
"jnl": "03VEN",
|
|
"number": "25105397"
|
|
}
|
|
```
|
|
|
|
**Exemple de réponse** (simplifié) :
|
|
|
|
```json
|
|
{
|
|
"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** :
|
|
|
|
```json
|
|
{
|
|
"jnl": "03VEN"
|
|
}
|
|
```
|
|
|
|
**Exemple de réponse** :
|
|
|
|
```json
|
|
{
|
|
"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** :
|
|
|
|
```json
|
|
{
|
|
"ARTID": "DI21",
|
|
"QTY": "4",
|
|
"JNL": "03VEN",
|
|
"THIRDID": "_@00025009",
|
|
"DATE": "2025-07-01"
|
|
}
|
|
```
|
|
|
|
**Exemple de réponse** :
|
|
|
|
```json
|
|
{
|
|
"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** :
|
|
|
|
```json
|
|
{
|
|
"paydelay": "30",
|
|
"date": "2025-07-01"
|
|
}
|
|
```
|
|
|
|
**Exemple de réponse** :
|
|
|
|
```json
|
|
{
|
|
"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** :
|
|
|
|
```json
|
|
{
|
|
"JNL": "03VEN",
|
|
"NUMBER": "25105397"
|
|
}
|
|
```
|
|
|
|
**Exemple de réponse en erreur (pas d'image)** :
|
|
|
|
```json
|
|
{
|
|
"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** :
|
|
|
|
```json
|
|
{
|
|
"JNL": "03VEN",
|
|
"NUMBER": "25105397",
|
|
"LAYOUT": "1"
|
|
}
|
|
```
|
|
|
|
**Exemple de reponse** :
|
|
|
|
```json
|
|
{
|
|
"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** :
|
|
|
|
```json
|
|
{
|
|
"search": "ESI",
|
|
"select": "custid,name,vat,groupid"
|
|
}
|
|
```
|
|
|
|
**Exemple de réponse** :
|
|
|
|
```json
|
|
{
|
|
"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** :
|
|
|
|
```json
|
|
{
|
|
"thirdid": "0100002174"
|
|
}
|
|
```
|
|
|
|
**Exemple de réponse** :
|
|
|
|
```json
|
|
{
|
|
"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** :
|
|
|
|
```json
|
|
{}
|
|
```
|
|
|
|
**Exemple de réponse** :
|
|
|
|
```json
|
|
{
|
|
"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** :
|
|
|
|
```json
|
|
{
|
|
"code": ""
|
|
}
|
|
```
|
|
|
|
**Exemple de réponse -- liste maître** (extrait) :
|
|
|
|
```json
|
|
{
|
|
"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** :
|
|
|
|
```json
|
|
{
|
|
"code": "PAYMODE"
|
|
}
|
|
```
|
|
|
|
**Exemple de réponse -- valeurs d'un groupe** :
|
|
|
|
```json
|
|
{
|
|
"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)** :
|
|
|
|
```json
|
|
{
|
|
"ARTID": "003R92572",
|
|
"STKID": "SG",
|
|
"QTY": "5",
|
|
"TOCHECK": "12.50",
|
|
"TOCHECKDETAIL": "Réapprovisionnement fournisseur",
|
|
"MODE": "1",
|
|
"THIRDID": "0100002174"
|
|
}
|
|
```
|
|
|
|
**Exemple de réponse (succès)** :
|
|
|
|
```json
|
|
{
|
|
"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é)** :
|
|
|
|
```json
|
|
{
|
|
"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.
|
|
|
|
**Récapitulatif des opérations d'écriture par page** :
|
|
|
|
| Page | Création | Modification | Suppression |
|
|
|------|:--------:|:------------:|:-----------:|
|
|
| **Documents** | `document_add` | `document_mod` | Non disponible |
|
|
| **Articles** | `art_add` | `art_mod` | Non disponible |
|
|
| **Tiers** | `third_add` | `third_mod` | Non disponible |
|
|
| **Divers** | -- | `custom_geninv_updatestock` | Non disponible |
|
|
| **Journaux** | Non disponible | Non disponible | Non disponible |
|
|
|
|
**Remarque** : aucun endpoint de suppression n'est disponible via l'API. Les endpoints `art_del`, `third_del`, `jnl_add`, `jnl_mod`, `jnl_del` et `document_del` n'existent pas (HTTP 404).
|
|
|
|
### 7.1 Documents
|
|
|
|
#### `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 au format `YYYY-MM-DD` (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.
|
|
|
|
**Métadonnées retournées** :
|
|
|
|
| Clé | Type | Description |
|
|
|-----|------|-------------|
|
|
| `rowcount` | `int` | Nombre d'éléments dans `data` (1 en cas de succès). |
|
|
| `issuccess` | `bool` | Indique si l'opération a réussi. |
|
|
|
|
**Exemple de requête** :
|
|
|
|
```json
|
|
{
|
|
"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..."
|
|
}
|
|
]
|
|
}
|
|
```
|
|
|
|
**Exemple de réponse (succès)** :
|
|
|
|
```json
|
|
{
|
|
"data": {
|
|
"number": "2026/0002"
|
|
},
|
|
"metadata": { "rowcount": 1, "issuccess": true },
|
|
"error": null
|
|
}
|
|
```
|
|
|
|
**Exemple de réponse (erreur -- tiers inexistant)** :
|
|
|
|
```json
|
|
{
|
|
"data": {
|
|
"xml": "<VFPData><headererror><errorcode>001</errorcode><description>Thirdid 'INEXISTANT' does not exist !</description></headererror></VFPData>"
|
|
},
|
|
"metadata": { "rowcount": 1, "issuccess": false },
|
|
"error": ["Code: 001, Description: Thirdid 'INEXISTANT' does not exist !"]
|
|
}
|
|
```
|
|
|
|
**Remarque** : tous les tableaux (`Artid`, `Qty`, `Saleprice`, `Discount`, `Vatid`, `Vatpc`) doivent avoir la même longueur. Un décalage entre les tableaux peut provoquer des erreurs silencieuses ou des données incorrectes.
|
|
|
|
---
|
|
|
|
#### `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. Les lignes d'articles fournies **remplacent** les lignes existantes du document.
|
|
|
|
| | |
|
|
|---|---|
|
|
| **URL** | `POST /{dossier}/document_mod` |
|
|
| **Méthode service** | `LogisticsService::documentMod(array $params)` |
|
|
|
|
**Paramètres** :
|
|
|
|
| Paramètre | Type | Obligatoire | Description |
|
|
|-----------|------|:-----------:|-------------|
|
|
| `number` | `string` | Oui | Numéro 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`). |
|
|
|
|
**Métadonnées retournées** :
|
|
|
|
| Clé | Type | Description |
|
|
|-----|------|-------------|
|
|
| `rowcount` | `int` | Nombre d'éléments dans `data` (1 en cas de succès). |
|
|
| `issuccess` | `bool` | Indique si l'opération a réussi. |
|
|
|
|
**Exemple de requête** :
|
|
|
|
```json
|
|
{
|
|
"number": "2026/0001",
|
|
"JNL": "VEN",
|
|
"Artid": ["ART001", "ART003"],
|
|
"Qty": ["3", "1"],
|
|
"Saleprice": ["10.00", "50.00"]
|
|
}
|
|
```
|
|
|
|
**Exemple de réponse (succès)** :
|
|
|
|
```json
|
|
{
|
|
"data": {
|
|
"updated": true
|
|
},
|
|
"metadata": { "rowcount": 1, "issuccess": true },
|
|
"error": null
|
|
}
|
|
```
|
|
|
|
**Exemple de réponse (erreur -- document inexistant)** :
|
|
|
|
```json
|
|
{
|
|
"data": {
|
|
"xml": "<VFPData><headererror><errorcode>001</errorcode><description>Document not found</description></headererror></VFPData>"
|
|
},
|
|
"metadata": { "rowcount": 1, "issuccess": false },
|
|
"error": ["Code: 001, Description: Document not found"]
|
|
}
|
|
```
|
|
|
|
**Attention** : lorsque des tableaux `Artid`, `Qty` et `Saleprice` sont fournis, ils **remplacent intégralement** les lignes existantes du document. Pour ajouter une ligne sans supprimer les existantes, il faut inclure toutes les lignes (anciennes + nouvelles) dans les tableaux.
|
|
|
|
---
|
|
|
|
### 7.2 Articles
|
|
|
|
#### `art_add` -- Création d'un article
|
|
|
|
Crée un nouvel article dans le catalogue. L'identifiant de l'article (`ARTID`) doit être unique. Les autres champs sont optionnels et correspondent aux colonnes de la table `art` (160 colonnes disponibles via `column_list/art`).
|
|
|
|
| | |
|
|
|---|---|
|
|
| **URL** | `POST /{dossier}/art_add` |
|
|
| **Méthode service** | `LogisticsService::artAdd(array $params)` |
|
|
|
|
**Paramètres** :
|
|
|
|
| Paramètre | Type | Obligatoire | Description |
|
|
|-----------|------|:-----------:|-------------|
|
|
| `ARTID` | `string` | Oui | Identifiant unique de l'article à créer. Doit être unique dans la table `art`. |
|
|
| `NAME1` | `string` | Non | Nom / libellé de l'article. |
|
|
| `SALEPRICE` | `string` | Non | Prix de vente unitaire (format string, ex : `"49.99"`). |
|
|
|
|
**Remarque** : d'autres colonnes de la table `art` peuvent être passées en paramètre (en MAJUSCULES). La liste complète des colonnes est disponible via `column_list/art`.
|
|
|
|
**Métadonnées retournées** :
|
|
|
|
| Clé | Type | Description |
|
|
|-----|------|-------------|
|
|
| `rowcount` | `int` | Nombre d'éléments dans `data` (1 en cas de succès). |
|
|
| `issuccess` | `bool` | Indique si l'opération a réussi. |
|
|
|
|
**Exemple de requête** :
|
|
|
|
```json
|
|
{
|
|
"ARTID": "ART001",
|
|
"NAME1": "Clavier sans fil Bluetooth",
|
|
"SALEPRICE": "49.99"
|
|
}
|
|
```
|
|
|
|
**Exemple de réponse (succès)** :
|
|
|
|
```json
|
|
{
|
|
"data": {
|
|
"artid": "ART001"
|
|
},
|
|
"metadata": { "rowcount": 1, "issuccess": true },
|
|
"error": null
|
|
}
|
|
```
|
|
|
|
**Exemple de réponse (erreur -- ARTID déjà existant)** :
|
|
|
|
```json
|
|
{
|
|
"data": {
|
|
"xml": "<VFPData><headererror><errorcode>001</errorcode><description>Artid 'ART001' already exist ! Please use Art_Mod function</description></headererror></VFPData>"
|
|
},
|
|
"metadata": { "rowcount": 1, "issuccess": false },
|
|
"error": ["Code: 001, Description: Artid 'ART001' already exist ! Please use Art_Mod function"]
|
|
}
|
|
```
|
|
|
|
**Exemple de réponse (erreur -- ARTID manquant)** :
|
|
|
|
Requête avec body vide `{}` ou sans `ARTID` :
|
|
|
|
```
|
|
HTTP 400 -- ARTID is required and cannot be empty.
|
|
```
|
|
|
|
---
|
|
|
|
#### `art_mod` -- Modification d'un article existant
|
|
|
|
Modifie un article existant identifié par son `ARTID`. Seuls les champs fournis sont mis à jour ; les champs omis restent inchangés.
|
|
|
|
| | |
|
|
|---|---|
|
|
| **URL** | `POST /{dossier}/art_mod` |
|
|
| **Méthode service** | `LogisticsService::artMod(array $params)` |
|
|
|
|
**Paramètres** :
|
|
|
|
| Paramètre | Type | Obligatoire | Description |
|
|
|-----------|------|:-----------:|-------------|
|
|
| `ARTID` | `string` | Oui | Identifiant de l'article à modifier. Doit exister dans la table `art`. |
|
|
| `NAME1` | `string` | Non | Nouveau nom / libellé de l'article. |
|
|
| `SALEPRICE` | `string` | Non | Nouveau prix de vente unitaire (format string). |
|
|
|
|
**Remarque** : d'autres colonnes de la table `art` peuvent être passées en paramètre (en MAJUSCULES).
|
|
|
|
**Métadonnées retournées** :
|
|
|
|
| Clé | Type | Description |
|
|
|-----|------|-------------|
|
|
| `rowcount` | `int` | Nombre d'éléments dans `data` (1 en cas de succès). |
|
|
| `issuccess` | `bool` | Indique si l'opération a réussi. |
|
|
|
|
**Exemple de requête** :
|
|
|
|
```json
|
|
{
|
|
"ARTID": "ART001",
|
|
"NAME1": "Clavier Bluetooth Premium",
|
|
"SALEPRICE": "59.99"
|
|
}
|
|
```
|
|
|
|
**Exemple de réponse (succès)** :
|
|
|
|
```json
|
|
{
|
|
"data": {
|
|
"artid": "ART001"
|
|
},
|
|
"metadata": { "rowcount": 1, "issuccess": true },
|
|
"error": null
|
|
}
|
|
```
|
|
|
|
**Exemple de réponse (erreur -- ARTID inexistant)** :
|
|
|
|
```json
|
|
{
|
|
"data": {
|
|
"xml": "<VFPData><headererror><errorcode>001</errorcode><description>Artid 'INEXISTANT' does not exist !</description></headererror></VFPData>"
|
|
},
|
|
"metadata": { "rowcount": 1, "issuccess": false },
|
|
"error": ["Code: 001, Description: Artid 'INEXISTANT' does not exist !"]
|
|
}
|
|
```
|
|
|
|
---
|
|
|
|
### 7.3 Tiers
|
|
|
|
#### `third_add` -- Création d'un tiers
|
|
|
|
Crée un nouveau tiers (client ou fournisseur) dans la base de données. L'API génère automatiquement un identifiant unique au format `_@NNNNNNNN` (ex : `_@00036051`). Aucun paramètre n'est strictement obligatoire, mais il est recommandé de fournir au minimum un nom (`NAME`).
|
|
|
|
| | |
|
|
|---|---|
|
|
| **URL** | `POST /{dossier}/third_add` |
|
|
| **Méthode service** | `LogisticsService::thirdAdd(array $params)` |
|
|
|
|
**Paramètres** :
|
|
|
|
| Paramètre | Type | Obligatoire | Description |
|
|
|-----------|------|:-----------:|-------------|
|
|
| `NAME` | `string` | Non | Nom du tiers (raison sociale ou nom complet). |
|
|
| `VAT` | `string` | Non | Numéro de TVA (ex : `"BE0123456789"`). |
|
|
| `EMAIL` | `string` | Non | Adresse e-mail du tiers. |
|
|
|
|
**Remarque** : d'autres colonnes de la table `cust` peuvent être passées en paramètre (en MAJUSCULES). La liste complète des colonnes est disponible via `column_list/cust`. Attention : toutes les colonnes de `column_list/cust` ne sont pas nécessairement acceptées (voir la remarque 18 sur `third_list`).
|
|
|
|
**Métadonnées retournées** :
|
|
|
|
| Clé | Type | Description |
|
|
|-----|------|-------------|
|
|
| `rowcount` | `int` | Nombre d'éléments dans `data` (1 en cas de succès). |
|
|
| `issuccess` | `bool` | Indique si l'opération a réussi. |
|
|
|
|
**Exemple de requête** :
|
|
|
|
```json
|
|
{
|
|
"NAME": "DUPONT SPRL",
|
|
"VAT": "BE0123456789",
|
|
"EMAIL": "contact@dupont.be"
|
|
}
|
|
```
|
|
|
|
**Exemple de réponse (succès)** :
|
|
|
|
```json
|
|
{
|
|
"data": {
|
|
"thirdid": "_@00036051"
|
|
},
|
|
"metadata": { "rowcount": 1, "issuccess": true },
|
|
"error": null
|
|
}
|
|
```
|
|
|
|
**Attention** : l'endpoint `third_add` est très permissif. Un appel avec un body vide `{}` ou avec des champs vides crée tout de même un nouveau tiers avec un identifiant généré. Vérifiez les données avant l'envoi pour éviter de créer des fiches vides.
|
|
|
|
---
|
|
|
|
#### `third_mod` -- Modification d'un tiers existant
|
|
|
|
Modifie un tiers existant identifié par son `CUSTID`. Seuls les champs fournis sont mis à jour ; les champs omis restent inchangés.
|
|
|
|
| | |
|
|
|---|---|
|
|
| **URL** | `POST /{dossier}/third_mod` |
|
|
| **Méthode service** | `LogisticsService::thirdMod(array $params)` |
|
|
|
|
**Paramètres** :
|
|
|
|
| Paramètre | Type | Obligatoire | Description |
|
|
|-----------|------|:-----------:|-------------|
|
|
| `CUSTID` | `string` | Oui | Identifiant du tiers à modifier (champ `custid` de la table `cust`). Doit exister. |
|
|
| `NAME` | `string` | Non | Nouveau nom du tiers. |
|
|
| `VAT` | `string` | Non | Nouveau numéro de TVA. |
|
|
| `EMAIL` | `string` | Non | Nouvelle adresse e-mail. |
|
|
|
|
**Remarque** : d'autres colonnes de la table `cust` peuvent être passées en paramètre (en MAJUSCULES).
|
|
|
|
**Métadonnées retournées** :
|
|
|
|
| Clé | Type | Description |
|
|
|-----|------|-------------|
|
|
| `rowcount` | `int` | Nombre d'éléments dans `data` (1 en cas de succès). |
|
|
| `issuccess` | `bool` | Indique si l'opération a réussi. |
|
|
|
|
**Exemple de requête** :
|
|
|
|
```json
|
|
{
|
|
"CUSTID": "_@00036051",
|
|
"NAME": "DUPONT SA",
|
|
"EMAIL": "nouveau@dupont.be"
|
|
}
|
|
```
|
|
|
|
**Exemple de réponse (succès)** :
|
|
|
|
```json
|
|
{
|
|
"data": {
|
|
"thirdid": "_@00036051"
|
|
},
|
|
"metadata": { "rowcount": 1, "issuccess": true },
|
|
"error": null
|
|
}
|
|
```
|
|
|
|
**Exemple de réponse (erreur -- CUSTID inexistant)** :
|
|
|
|
```json
|
|
{
|
|
"data": {
|
|
"xml": "<VFPData><headererror><errorcode>001</errorcode><description>Custid 'INEXISTANT' not exist !</description></headererror></VFPData>"
|
|
},
|
|
"metadata": { "rowcount": 1, "issuccess": false },
|
|
"error": ["Code: 001, Description: Custid 'INEXISTANT' not exist !"]
|
|
}
|
|
```
|
|
|
|
**Exemple de réponse (erreur -- CUSTID manquant)** :
|
|
|
|
Requête avec body vide `{}` ou sans `CUSTID` :
|
|
|
|
```
|
|
HTTP 400 -- CUSTID is required and cannot be empty.
|
|
```
|
|
|
|
---
|
|
|
|
### 7.4 Divers
|
|
|
|
#### `custom_geninv_updatestock` -- Mise à jour du stock
|
|
|
|
Met à jour le stock d'un article dans un dépôt. Deux modes de fonctionnement sont disponibles : Inventaire (MODE=0) et Restock (MODE=1). Le mode Restock crée un mouvement de stock entrant associé à un fournisseur.
|
|
|
|
| | |
|
|
|---|---|
|
|
| **URL** | `POST /{dossier}/custom_geninv_updatestock` |
|
|
| **Méthode service** | `LogisticsService::customGeninvUpdatestock(array $params)` |
|
|
|
|
**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. Valeurs obtenues via `codes_list` avec `code=STOCK` (ex : `"A"`, `"SG"`). |
|
|
| `QTY` | `string` | Oui | Quantité à ajouter au stock. Peut être négatif pour retirer du stock (ex : `"-5"`). |
|
|
| `MODE` | `string` | Oui | Mode de mise à jour : `"0"` = Inventaire (journal KI), `"1"` = Restock (journal KM). |
|
|
| `THIRDID` | `string` | Si MODE=1 | Identifiant du tiers / fournisseur (champ `custid` de la table `cust`). Obligatoire en mode Restock. |
|
|
| `TOCHECK` | `string` | Oui | Prix de contrôle. Stocké avec le mouvement mais n'affecte pas la quantité de stock. |
|
|
| `TOCHECKDETAIL` | `string` | Oui | Remarque / détail de contrôle. Texte libre stocké avec le mouvement. |
|
|
|
|
**Modes de fonctionnement** :
|
|
|
|
| Mode | Valeur | Journal | Description |
|
|
|------|--------|---------|-------------|
|
|
| Inventaire | `"0"` | KI | Ajustement d'inventaire. Nécessite un journal KI configuré pour le dépôt. |
|
|
| Restock | `"1"` | KM | Réapprovisionnement. Nécessite `THIRDID` (fournisseur) et un journal KM configuré. |
|
|
|
|
**Métadonnées retournées** :
|
|
|
|
| Clé | Type | Description |
|
|
|-----|------|-------------|
|
|
| `rowcount` | `int` | Nombre d'éléments dans `data` (1 en cas de succès). |
|
|
| `issuccess` | `bool` | Indique si l'opération a réussi. |
|
|
|
|
**Exemple de requête (mode Restock)** :
|
|
|
|
```json
|
|
{
|
|
"ARTID": "003R92572",
|
|
"STKID": "SG",
|
|
"QTY": "5",
|
|
"MODE": "1",
|
|
"THIRDID": "0100002174",
|
|
"TOCHECK": "12.50",
|
|
"TOCHECKDETAIL": "Réapprovisionnement fournisseur"
|
|
}
|
|
```
|
|
|
|
**Exemple de réponse (succès)** :
|
|
|
|
```json
|
|
{
|
|
"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 (erreur -- dépôt sans journal KI)** :
|
|
|
|
```json
|
|
{
|
|
"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"]
|
|
}
|
|
```
|
|
|
|
**Remarques** :
|
|
|
|
- Le paramètre `STKID` correspond à un code de dépôt obtenu via `codes_list` avec `code=STOCK`. Les dépôts disponibles dépendent de la configuration du dossier.
|
|
- Le MODE=0 (Inventaire) dépend de la configuration des journaux KI du dossier. Dans certains environnements, aucun journal KI n'est configuré pour les dépôts, ce qui rend le MODE=0 non fonctionnel.
|
|
- Le champ `QTY` peut être négatif pour retirer du stock.
|
|
- Les champs `TOCHECK` et `TOCHECKDETAIL` sont toujours envoyés (même vides). Ils servent de traçabilité et n'affectent pas la quantité de stock.
|
|
|
|
---
|
|
|
|
## 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
|
|
|
|
- [Documentation Postman](https://documenter.getpostman.com/view/40440561/2sB2qaj2Pz)
|