Aller au contenu principal

Créer ou modifier une entité

POST ou PUT ?

  • POST /api/Entity/{Entité} : création exclusivement. Réponse 201 Created avec l'entité complète (le NoUniqueSystemeSource est attribué par l'ERP).
  • PUT /api/Entity/{Entité}/{id} : selon le standard REST, crée OU remplace la ressource à cette adresse. Dans ERPConnector, le PUT fait une mise à jour partielle : seuls les champs fournis sont modifiés. Réponse 200 OK.

Contrôler le comportement : les préconditions HTTP

  • If-Match: *mise à jour uniquement (erreur si la ressource n'existe pas). Recommandé sur les PUT.
  • If-None-Match: *création uniquement (erreur si elle existe déjà). Recommandé sur les POST.

Champs requis par entité (exemples documentés)

  • Customer (POST) : NoClient (requis Acomba ; optionnel QuickBooks — auto-généré) et NomClient (requis partout).
  • CustomerInvoice (POST) : NoFacture (requis Acomba, optionnel QuickBooks), DateFacture, InfoClientFacturerA (objet), LigneFacture (tableau, minimum 1 ligne). Chaque ligne : strNoProduit, QteFacture, PrixFinal requis ; DescriptionLigne optionnel.
  • Product (POST, Acomba seulement) : NoProduit et Description1 obligatoires.
  • GLJournalEntry (POST, Acomba et Sage 50) : DateEcriture et les lignes d'écriture (minimum 2 lignes ; chaque ligne : ComptesGL.NoCompteGL, Direction_DebitCredit (« Debit » / « Credit »), montant). L'écriture doit être balancée (total débits = total crédits), sinon erreur.
  • CustomerInvoicePayment (POST, Acomba seulement) : Client_No, DatePaiement, plus les listes de paiements et de factures réglées.

Exemple : créer un client

POST https://gateway.erpconnector.ca/api/Entity/Customer
Authorization: Basic {base64(CodeLicence:CléSecrète)}
Content-Type: application/json
If-None-Match: *

{ "NoClient": "C999", "NomClient": "XYZ Corp" }

À vérifier avant de créer

Toutes les entités ne sont pas créables sur tous les systèmes (ex. CustomerInvoicePayment en POST = Acomba seulement ; GLAccount = lecture seule partout). Voir l'article Liste des entités supportées, et pour un champ précis, la matrice SDK Capabilities.