Documentation API – Product Trail

Product Trail API

Gérez les mouvements d’inventaire à travers différents systèmes ERP avec une API REST unifiée.
Effectuez des ajustements de quantité, des entrées et sorties d’inventaire pour Acomba.

POST/Entity/ProductTrail

Aperçu

L’entité ProductTrail représente un mouvement d’inventaire dans votre système ERP.
Cette API permet d’effectuer des opérations de création (POST) sur les mouvements d’inventaire
de manière standardisée, permettant d’ajuster les quantités de produits en stock.

L’API utilise des endpoints REST standards avec les méthodes HTTP appropriées :

  • POST /Entity/ProductTrail – Créer un nouveau mouvement d’inventaire (ajustement de quantité)
💡 Note importante

Les mouvements d’inventaire permettent d’ajuster les quantités de produits en stock. Vous pouvez soumettre un seul mouvement ou une liste de mouvements pour un traitement en lot. Les produits segmentés (avec caractéristiques) sont également supportés.

Matrice de Support

Opérations supportées pour l’entité ProductTrail par système ERP :

Système ERP GET POST PUT
Acomba ✗ Non ✓ Oui ✗ Non
QuickBooks Online ✗ Non ✗ Non ✗ Non
Avantage ✗ Non ✗ Non ✗ Non
Sage 50 ✗ Non ✗ Non ✗ Non
Servex ✗ Non ✗ Non ✗ Non
Servicentre ✗ Non ✗ Non ✗ Non

POST ProductTrail (Création)

Crée un nouveau mouvement d’inventaire (ajustement de quantité) dans le système ERP. Vous pouvez soumettre un seul mouvement ou une liste de mouvements pour un traitement en lot.

POST/Entity/ProductTrail

Champs requis

Champ Type Requis Description
NoProduit string ✓ Required* Numéro du produit à ajuster. Requis si NoProduit_NoUniqueSystemeSource n’est pas fourni.
NoProduit_NoUniqueSystemeSource string Optional* CardPos du produit dans Acomba. Alternative à NoProduit.
Quantitee decimal ✓ Required Quantité à ajuster (positive pour entrée, négative pour sortie)
PrixCoutant decimal Optional Prix coûtant unitaire pour le mouvement
DateMouvement datetime Optional Date du mouvement (par défaut : date du jour)
Commentaire string Optional Commentaire ou note associée au mouvement
💡 Produits segmentés (Items de produit)

Pour les produits segmentés avec des caractéristiques (couleur, taille, etc.), utilisez les champs IsAProductItem, Caracteristique01_ValeurNo, Caracteristique02_ValeurNo, et Caracteristique03_ValeurNo pour cibler l’item de produit spécifique.

Créer un mouvement d’inventaire unique (Acomba)
POST /Entity/ProductTrail
Host: https://v4.api.onlineerp.solution.quebec/api
Content-Type: application/json

{
    "NoProduit": "PROD-001",
    "Quantitee": 10,
    "PrixCoutant": 25.50,
    "DateMouvement": "2024-04-24",
    "Commentaire": "Réception de marchandise - Bon de livraison #12345"
}
Créer plusieurs mouvements d’inventaire (Acomba)
POST /Entity/ProductTrail
Host: https://v4.api.onlineerp.solution.quebec/api
Content-Type: application/json

[
    {
        "NoProduit": "PROD-001",
        "Quantitee": 10,
        "PrixCoutant": 25.50,
        "Commentaire": "Entrée d'inventaire"
    },
    {
        "NoProduit": "PROD-002",
        "Quantitee": -5, // Quantité négative = sortie d'inventaire
        "PrixCoutant": 15.00,
        "Commentaire": "Sortie pour perte/bris"
    },
    {
        "NoProduit": "PROD-003",
        "Quantitee": 100,
        "DateMouvement": "2024-04-24",
        "Commentaire": "Ajustement suite à inventaire physique"
    }
]
Mouvement sur un produit segmenté (Item de produit)
POST /Entity/ProductTrail
Host: https://v4.api.onlineerp.solution.quebec/api
Content-Type: application/json

{
    "NoProduit": "TSHIRT-001",
    "IsAProductItem": true, // Indique que c'est un produit segmenté
    "Caracteristique01_ValeurNo": "BLEU", // Ex: Couleur = Bleu
    "Caracteristique02_ValeurNo": "XL", // Ex: Taille = XL
    "Quantitee": 25,
    "PrixCoutant": 12.99,
    "Commentaire": "Réception T-Shirt Bleu XL"
}
Response – Mouvement unique (201 Created)
{
    "Success": true,
    "ErrorMessage": "",
    "BusinessKey": "PROD-001",
    "ErpInternalId": "PROD-001"
}
Response – Mouvements multiples (201 Created)
[
    {
        "Success": true,
        "ErrorMessage": "",
        "BusinessKey": "MouvInv:1/3 - NoProduit:PROD-001",
        "ErpInternalId": "MouvInv:1/3 - NoProduit:PROD-001"
    },
    {
        "Success": true,
        "ErrorMessage": "",
        "BusinessKey": "MouvInv:2/3 - NoProduit:PROD-002",
        "ErpInternalId": "MouvInv:2/3 - NoProduit:PROD-002"
    },
    {
        "Success": false,
        "ErrorMessage": "Produit 'PROD-003' introuvable",
        "BusinessKey": "MouvInv:3/3 - NoProduit:PROD-003",
        "ErpInternalId": "MouvInv:3/3 - NoProduit:PROD-003"
    }
]
⚠️ Traitement en lot

Lors d’un traitement en lot (array de mouvements), chaque mouvement est traité indépendamment. Si un mouvement échoue, les autres peuvent tout de même réussir. La réponse inclura le statut de chaque mouvement.

Modèle de Données Complet

MouvementInventaire

Champ Type Description
NoMouvementInventaire string Numéro du mouvement d’inventaire (généré par le système)
NoMouvementInventaire_NoUniqueSystemeSource string Identifiant unique interne du système ERP
TypeMouvementInventaire enum Type de mouvement (Ajustement, Entrée, Sortie)
NoProduit string Numéro du produit concerné
NoProduit_NoUniqueSystemeSource string CardPos du produit dans Acomba
DescriptionProduit string Description du produit
Localisation string Emplacement du produit (entrepôt, étagère, etc.)
Localisation_NoUniqueSystemeSource string Identifiant unique de la localisation
DateMouvement datetime Date du mouvement d’inventaire
Commentaire string Note ou commentaire associé au mouvement
Quantitee decimal Quantité ajustée (positive = entrée, négative = sortie)
PrixCoutant decimal Prix coûtant unitaire
PrixVendant decimal Prix de vente unitaire
NoDocumentAssociee string Numéro du document associé (facture, bon de commande, etc.)
NoDocumentAssociee_NoUniqueSystemeSource string Identifiant unique du document associé
NoLigneDocumentAssociee int Numéro de ligne du document associé
UsagerNo string Numéro de l’usager ayant effectué le mouvement
NoProduitFournisseur string Numéro du produit chez le fournisseur
Fiche_DerniereModification datetime? Date de dernière modification de la fiche

Champs de segmentation (Items de produit – Acomba)

Ces champs permettent de cibler un item de produit spécifique lorsque le produit est segmenté par caractéristiques (couleur, taille, etc.).

Champ Type Description
IsAProductItem bool Indique si le mouvement concerne un item de produit segmenté
ItemProduit_no string Numéro de l’item de produit
ItemProduit_NoUniqueSystemeSource string Identifiant unique de l’item de produit
Segment_No string Numéro du segment (catégorie de segmentation)
Segment_Nom string Nom du segment (ex: COULEUR + GRANDEUR)
Caracteristique01_ValeurNo string Valeur de la caractéristique 1 (ex: BLEU)
Caracteristique01_Nom string Nom de la caractéristique 1 (ex: COULEUR)
Caracteristique02_ValeurNo string Valeur de la caractéristique 2 (ex: XL)
Caracteristique02_Nom string Nom de la caractéristique 2 (ex: GRANDEUR)
Caracteristique03_ValeurNo string Valeur de la caractéristique 3
Caracteristique03_Nom string Nom de la caractéristique 3
💡 Recherche automatique de l’item de produit

Lorsque IsAProductItem est à true et que les caractéristiques sont fournies, le système recherchera automatiquement l’item de produit correspondant dans Acomba. Si l’item n’est pas trouvé, une erreur sera retournée.