Qovans Docs
Integrations

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

VariableValeur prod
CEGID_BASE_URLhttp://192.168.4.110/CegidMTSWebAPI
CEGID_FOLDER_IDCLIPS (prod) / CLIPS_TEST (test)
CEGID_USERNAMEAudaxium
CEGID_TIMEOUT30 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 3

Endpoints utilises

EndpointUsage
GET /products/listListe des produits (sync)
GET /stocksStock par depot
POST /ordersCreation commande (ARC)
GET /customers/{id}Infos client
GET /customers/{id}/addressesAdresses de livraison
POST /tariffs/searchTariffSalesPrix client personnalise
GET /orders/listHistorique 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

VariableValeur
CEGID_DB_HOST192.168.1.200
CEGID_DB_PORT1433 (SQL Server)
CEGID_DB_USERCLIPS\Audaxium
CEGID_DB_NAMECLIPS (prod) / CLIPS_TEST (test)
CEGID_SQL_ENABLEDtrue (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

TableClesContenu
ARTICLEGA_ARTICLE, GA_CODEARTICLEProduits (UNI/GEN/DIM)
PIECEGP_NUMERO, GP_TIERSDocuments (commandes, BL, factures)
LIGNEGL_NUMERO, GL_ARTICLELignes de documents
TIERST_AUXILIAIREClients/fournisseurs

Statuts articles

StatutVisible APIVisible SQLDescription
UNIOuiOuiProduit standard
GENNonOuiProduit parent (groupement)
DIMNonOuiVariante 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_ID distingue l'environnement : CLIPS pour la prod, CLIPS_TEST pour les tests