Supplier Order API
Gérez les bons de commandes fournisseurs à travers différents systèmes ERP avec une API REST unifiée.
Créez et lisez les bons de commandes pour Acomba, Avantage et autres systèmes ERP supportés.
/Entity/SupplierOrder/Entity/SupplierOrderAperçu
L’entité SupplierOrder représente un bon de commande fournisseur (achat) dans votre système ERP.
Cette API permet d’effectuer des opérations de lecture (GET) et de création (POST) sur les bons de commandes
de manière standardisée, peu importe le système ERP sous-jacent.
L’API utilise des endpoints REST standards avec les méthodes HTTP appropriées :
GET /Entity/SupplierOrder– Récupérer une liste de bons de commandes fournisseursGET /Entity/SupplierOrder/{id}– Récupérer un bon de commande spécifiquePOST /Entity/SupplierOrder– Créer un nouveau bon de commande fournisseur
Les champs disponibles et requis varient selon le système ERP. Les bons de commandes incluent généralement un en-tête avec les informations fournisseur, ainsi que des lignes de détail pour chaque produit commandé.
Matrice de Support
Opérations supportées pour l’entité SupplierOrder par système ERP :
| Système ERP | GET | POST | PUT |
|---|---|---|---|
| Acomba | ✓ Oui | ✓ Oui | ✗ Non |
| Avantage | ✓ Oui | ✗ Non | ✗ Non |
| QuickBooks Online | ✗ Non | ✗ Non | ✗ Non |
| Sage 50 | ✗ Non | ✗ Non | ✗ Non |
| Servex | ✗ Non | ✗ Non | ✗ Non |
| Servicentre | ✗ Non | ✗ Non | ✗ Non |
GET SupplierOrder
Récupère une liste de bons de commandes fournisseurs avec support de filtrage, pagination et sélection de champs.
/Entity/SupplierOrderParamètres de requêtes
| Paramètre | Type | Requis | Description |
|---|---|---|---|
| $filter | string | Optionnel | Expression de filtrage de style OData |
| $select | string | Optionnel | Champs à retourner (séparés par des virgules) |
| $expand | string | Optionnel | Champs à épandre |
| $orderby | string | Optionnel | Permet de trier les résultats |
| $top | integer | Optionnel | Nombre maximum de résultats |
| $skip | integer | Optionnel | Nombre de résultats à ignorer (pagination) |
Pour plus de détails sur la composition des requêtes, consultez : Composer une requête à l’API d’ERP Connector
GET /Entity/SupplierOrder?$filter=DateFacture ge '2024-01-01'&$select=NoFacture,DateFacture,Fournisseur_No,TotalFacture Host: https://v4.api.onlineerp.solution.quebec/api Content-Type: application/json
[
{
"NoFacture": "BC-2024-001",
"DateFacture": "2024-01-15T00:00:00",
"TotalFacture": 2500.00,
"SousTotalFacture": 2173.91,
"Fournisseur_No": "FOUR001",
"Référence": "PO-EXT-12345",
"LigneFacture": [
{
"NoLigneFacture": 1,
"strNoProduit": "PROD-001",
"DescriptionLigne": "Matière première A",
"QteCommande": 100,
"PrixFinal": 15.00,
"Montant_SousTotalLigne": 1500.00
},
{
"NoLigneFacture": 2,
"strNoProduit": "PROD-002",
"DescriptionLigne": "Composant électronique B",
"QteCommande": 50,
"PrixFinal": 13.48,
"Montant_SousTotalLigne": 673.91
}
]
},
{
"NoFacture": "BC-2024-002",
"DateFacture": "2024-01-18T00:00:00",
"TotalFacture": 875.50,
"SousTotalFacture": 761.30,
"Fournisseur_No": "FOUR002",
"Référence": "PO-EXT-12346",
"LigneFacture": [
{
"NoLigneFacture": 1,
"strNoProduit": "PROD-003",
"DescriptionLigne": "Fourniture de bureau",
"QteCommande": 25,
"PrixFinal": 30.45,
"Montant_SousTotalLigne": 761.30
}
]
}
]
POST SupplierOrder (Création)
Crée un nouveau bon de commande fournisseur dans le système ERP. Le bon de commande doit inclure au moins une ligne de détail.
/Entity/SupplierOrderUtilisez le header If-None-Match: * pour garantir que la création échouera si l’entité existe déjà.
Champs requis (Acomba)
| Champ | Type | Requis | Description |
|---|---|---|---|
| TypeDoc | string | ✓ Required | Doit être "ACHATS" pour un bon de commande fournisseur |
| DateFacture | datetime | ✓ Required | Date du bon de commande |
| Fournisseur_No | string | ✓ Required | Numéro du fournisseur |
| LigneFacture | array | ✓ Required | Liste des lignes de détail du bon de commande |
Structure d’une ligne de détail
| Champ | Type | Requis | Description |
|---|---|---|---|
| strNoProduit | string | ✓ Required | Numéro du produit à commander |
| QteCommande | decimal | ✓ Required | Quantité commandée |
| PrixFinal | decimal | Optional | Prix unitaire (si non spécifié, le prix coûtant du produit sera utilisé) |
| DescriptionLigne | string | Optional | Description personnalisée de la ligne |
POST /Entity/SupplierOrder
Host: https://v4.api.onlineerp.solution.quebec/api
Content-Type: application/json
If-None-Match: *
{
"Facture": {
"TypeDoc": "ACHATS", // Type doc OBLIGATOIRE pour bon de commande fournisseur
"Référence": "PO-EXT-12345",
"Description": "Commande matières premières Q1",
"DateFacture": "2024-04-24", // Date du bon de commande
// Le numéro du fournisseur
"Fournisseur_No": "FOUR001",
/***************************************************/
// Array des LIGNES du bon de commande à créer
"LigneFacture": [
{ // Ligne simple : NoProduit et Qté. Le prix coûtant sera utilisé
"QteCommande": 100,
"strNoProduit": "PROD-001"
},
{ // Ligne avec prix explicite
"QteCommande": 50,
"strNoProduit": "PROD-002",
"PrixFinal": 13.48,
"DescriptionLigne": "Composant électronique B - Promotion"
},
{ // Une ligne de commentaire
"DescriptionLigne": "Livraison urgente demandée"
},
{ // Ligne avec groupe de produit
"QteCommande": 25,
"strNoGroupeProduit": "200",
"DescriptionLigne": "Fournitures diverses",
"PrixFinal": 30.45
}
]
/***************************************************/
},
// ReturnFullTransaction : peut être omis. Demande au Connecteur de nous retourner 100% du payload de la transaction créée
"ReturnFullTransaction": true
}
{
"OrigRemoteTaskID": 129015,
"ResultType": "Success",
"ErrorType": "None",
"ResultMessage": "Tâche terminée avec succès",
"ResultPayload": {
"Message": "OK - Bon de commande créé sous le numéro : BC-2024-003",
"NoFacture": "BC-2024-003",
"RecCardPos": "256",
"SousTotal": 2935.21,
"Total": 3376.14,
"FullTransaction": {
"NoFacture": "BC-2024-003",
"NoUniqueSystemeSource": "256",
"TypeDoc": 4,
"Référence": "PO-EXT-12345",
"Description": "Commande matières premières Q1",
"DateFacture": "2024-04-24T00:00:00",
"Fournisseur_No": "FOUR001",
"SousTotalFacture": 2935.21,
"TotalFacture": 3376.14,
"ListeDesTaxes": [
{
"Taxe_Numero": "T.P.S. 100%",
"Taxe_Description": "Taxe sur les produits et services",
"MontantTaxe": 146.76,
"Taxe_NumeroLegalGouv": "RT100393939933"
},
{
"Taxe_Numero": "T.V.Q. 100%",
"Taxe_Description": "Taxe de Vente Québec",
"MontantTaxe": 294.17,
"Taxe_NumeroLegalGouv": "TQ1000292929922"
}
],
"LigneFacture": [
{
"NoLigneFacture": 1,
"strNoProduit": "PROD-001",
"strNoGroupeProduit": "100",
"DescriptionLigne": "Matière première A",
"QteCommande": 100,
"PrixFinal": 15.00,
"PrixCoutant": 15.00,
"Montant_SousTotalLigne": 1500.00,
"Montant_TotalLigne": 1725.11
},
{
"NoLigneFacture": 2,
"strNoProduit": "PROD-002",
"strNoGroupeProduit": "100",
"DescriptionLigne": "Composant électronique B - Promotion",
"QteCommande": 50,
"PrixFinal": 13.48,
"Montant_SousTotalLigne": 674.00,
"Montant_TotalLigne": 775.24
},
{
"NoLigneFacture": 3,
"strNoProduit": "",
"DescriptionLigne": "Livraison urgente demandée",
"QteCommande": 0,
"Montant_SousTotalLigne": 0
},
{
"NoLigneFacture": 4,
"strNoProduit": "",
"strNoGroupeProduit": "200",
"DescriptionLigne": "Fournitures diverses",
"QteCommande": 25,
"PrixFinal": 30.45,
"Montant_SousTotalLigne": 761.21,
"Montant_TotalLigne": 875.79
}
],
"NbLignes": 4
}
},
"IsTaskCompleted": true
}
Pour les bons de commandes fournisseurs Acomba, le TypeDoc doit être "ACHATS". Les taxes sont calculées automatiquement selon le groupe de taxes configuré pour le fournisseur dans le système.
Modèle de Données Complet
En-tête de Bon de Commande (FicheTransactions)
| Champ | Type | Description |
|---|---|---|
| NoFacture | string | Numéro du bon de commande |
| NoUniqueSystemeSource | string | Identifiant unique du système source ERP |
| TypeDoc | enum | Type de document (ACHATS pour bon de commande fournisseur) |
| DateFacture | datetime | Date du bon de commande |
| Référence | string | Numéro de référence externe (ex: PO du système appelant) |
| Description | string | Description générale du bon de commande |
| Fournisseur_No | string | Numéro du fournisseur |
| Fournisseur_NoUniqueSystemeSource | string | Identifiant unique du fournisseur dans l’ERP |
| TotalFacture | decimal? | Montant total incluant les taxes |
| SousTotalFacture | decimal? | Sous-total avant taxes |
| FraisDeTransport | decimal | Frais de livraison ou de transport |
| NoProjet | string | Numéro de projet associé |
| EmployeResponsable_No | string | Numéro de l’employé responsable de la commande |
| LigneFacture | List<LigneTransactions> | Liste des lignes de détail du bon de commande |
| ListeDesTaxes | List<InfoTaxe> | Détail des taxes calculées |
| EstActif | bool | Indique si le bon de commande est actif |
| DateExpirationDocument | datetime? | Date d’expiration du bon de commande |
Lignes de Détail (LigneTransactions)
| Champ | Type | Description |
|---|---|---|
| NoLigneFacture | int | Numéro de séquence de la ligne |
| strNoProduit | string | Numéro du produit |
| strNoGroupeProduit | string | Numéro du groupe de produit |
| DescriptionLigne | string | Description de la ligne |
| QteCommande | decimal | Quantité commandée |
| QteFacture | decimal | Quantité reçue/facturée |
| PrixFinal | decimal | Prix unitaire |
| PrixCoutant | decimal | Prix coûtant du produit |
| Montant_SousTotalLigne | decimal | Sous-total de la ligne avant taxes |
| Montant_TotalLigne | decimal | Montant total de la ligne incluant les taxes |
| NoGroupeTaxe | string | Numéro du groupe de taxes à appliquer |
| NoCompteGL | string | Numéro de compte du Grand Livre |
| NoProjet | string | Numéro de projet associé à la ligne |
| UniteMesure | string | Unité de mesure (unité, kg, m², etc.) |
| TypeLigne | enum | Type de ligne (produit, commentaire, sous-total, etc.) |
| ListeDesTaxes | List<InfoTaxe> | Détail des taxes calculées pour cette ligne |
Les objets FicheTransactions et LigneTransactions supportent également un dictionnaire ExtendedProperties pour des propriétés personnalisées ou spécifiques à un ERP.