Cegid ERP
Comment Qovans communique avec Cegid — API REST, SQL, authentification et gestion d'erreurs.
Qovans se connecte a Cegid MTS de deux facons :
- API REST pour les operations courantes (stocks, prix, commandes)
- SQL direct (read-only) pour les articles GEN/DIM invisibles via l'API
Les deux necessitent le VPN Audaxium. Voir VPN Cegid.
API REST
Configuration
| Variable | Valeur prod |
|---|---|
CEGID_BASE_URL | http://192.168.4.110/CegidMTSWebAPI |
CEGID_FOLDER_ID | CLIPS (prod) / CLIPS_TEST (test) |
CEGID_USERNAME | Audaxium |
CEGID_TIMEOUT | 30 secondes |
L'authentification utilise NTLM (Windows). La librairie httpx-ntlm gere ca automatiquement.
Client HTTP
Le client est un singleton dans backend/app/services/cegid_client.py. Il fournit :
- Retry avec backoff exponentiel — 3 tentatives, delais de 1s, 2s, 4s
- Retry automatique sur erreurs serveur (codes >= 500) et erreurs reseau
- Pas de retry sur erreurs client (4xx)
- Remplacement automatique de
{folderId}dans les endpoints
Pagination
L'API Cegid est limitee a 50 resultats par requete. Pour obtenir plus de resultats, paginer avec le parametre $skip par increments de 50 :
GET /api/v1/{folderId}/products?$top=50&$skip=0 # Page 1
GET /api/v1/{folderId}/products?$top=50&$skip=50 # Page 2
GET /api/v1/{folderId}/products?$top=50&$skip=100 # Page 3Endpoints utilises
| Endpoint | Usage |
|---|---|
GET /products/list | Liste des produits (sync) |
GET /stocks | Stock par depot |
POST /orders | Creation commande (ARC) |
GET /customers/{id} | Infos client |
GET /customers/{id}/addresses | Adresses de livraison |
POST /tariffs/searchTariffSales | Prix client personnalise |
GET /orders/list | Historique commandes |
Gestion d'erreurs
Les erreurs Cegid remontent sous forme de CegidAPIError avec un code HTTP :
from app.services.cegid_client import CegidAPIError
try:
data = await cegid_client.get_products()
except CegidAPIError as e:
# e.status_code : 502 (VPN down), 503 (Cegid eteint), 408 (timeout)
raise HTTPException(status_code=503, detail=str(e))Acces SQL
Certains articles Cegid ont le statut GEN (parent) ou DIM (variante dimensionnelle). Ces articles sont invisibles via l'API REST mais accessibles en SQL.
Configuration
| Variable | Valeur |
|---|---|
CEGID_DB_HOST | 192.168.1.200 |
CEGID_DB_PORT | 1433 (SQL Server) |
CEGID_DB_USER | CLIPS\Audaxium |
CEGID_DB_NAME | CLIPS (prod) / CLIPS_TEST (test) |
CEGID_SQL_ENABLED | true (peut etre desactive pour mode degrade) |
Le client SQL est dans backend/app/services/cegid_sql_client.py. Il utilise pymssql et se connecte via l'authentification Windows (Active Directory).
Tables Cegid importantes
| Table | Cles | Contenu |
|---|---|---|
ARTICLE | GA_ARTICLE, GA_CODEARTICLE | Produits (UNI/GEN/DIM) |
PIECE | GP_NUMERO, GP_TIERS | Documents (commandes, BL, factures) |
LIGNE | GL_NUMERO, GL_ARTICLE | Lignes de documents |
TIERS | T_AUXILIAIRE | Clients/fournisseurs |
Statuts articles
| Statut | Visible API | Visible SQL | Description |
|---|---|---|---|
UNI | Oui | Oui | Produit standard |
GEN | Non | Oui | Produit parent (groupement) |
DIM | Non | Oui | Variante dimensionnelle |
Points d'attention
- Le serveur Cegid peut etre eteint le weekend — les erreurs 502 sont normales
- Le timeout par defaut est 30s — certaines requetes (sync complete) peuvent etre plus longues
- L'acces SQL est read-only — Qovans ne modifie jamais les donnees Cegid en SQL
- Le
CEGID_FOLDER_IDdistingue l'environnement :CLIPSpour la prod,CLIPS_TESTpour les tests