Comprendre la commande de pièces
Cette section s'appuie sur les informations fournies dans le Commencer section et entre dans plus de détails sur les différents services de l'API de commande de pièces.
Aperçu du processus commercial de commande de pièces
Cette section présente un aperçu du processus commercial de commande de pièces. Les systèmes backend de BRP gèrent les commandes de pièces, principalement en utilisant SAP, et leur impact sur votre DMS se fait sentir à travers l'API de commande de pièces.

Le processus commence lorsque le concessionnaire crée une commande de pièce dans son DMS.
Votre DMS doit appeler le API des concessionnaires pour récupérer les méthodes d'expédition disponibles pour le concessionnaire et les afficher à l'écran.
Le concessionnaire devrait avoir accès au catalogue de pièces BRP, obtenu par le biais de API des pièces, pour rechercher et sélectionner les pièces à commander.
Si ce n'est pas déjà fait, le concessionnaire se connecte à BOSSWeb en utilisant ses identifiants via votre DMS, et vous enregistrez le access_token retourné par le API d'authentification du concessionnaire.
Le concessionnaire utilise le Valider fonction dans votre DMS pour soumettre la commande de pièces pour validation.
- L'API de commande de pièces reçoit la charge utile et l'envoie à SAP.
- SAP valide la commande de pièces et renvoie le résultat à l'API de commande de pièces.
- Votre DMS reçoit la réponse et affiche le résultat au concessionnaire.
- Si des messages d'erreur apparaissent, ils sont affichés au concessionnaire, qui doit corriger la commande de pièces et valider la commande modifiée.
- Le concessionnaire vérifie la commande de pièces et les coûts résultants, y compris les frais de livraison, pour s'assurer qu'ils sont conformes aux attentes.
🛑 Vous devez gérer le délai d'attente dans le Valider fonction qui se produit s'il y a plus de 30 articles dans la commande de pièces.
Voir le Vérifier le flux de données section ci-dessous pour des informations sur la gestion du délai d'attente.
Lorsque le concessionnaire est satisfait de la commande de pièces, il utilise le Créer fonction dans votre DMS.
- L'API de commande de pièces reçoit la charge utile et l'envoie à SAP.
- SAP valide la commande de pièces, et si elle est valide, elle crée et enregistre la commande.
- Le résultat est renvoyé à l'API de commande de pièces : soit la commande de pièces créée, soit un message d'erreur est renvoyé.
- Si la commande de pièces est créée, vous l'enregistrez dans la base de données du DMS. Si un message d'erreur apparaît, il est affiché au concessionnaire.
🛑 Vous devez gérer le délai d'attente dans le Créer une fonction qui se produit s'il y a plus de 25 articles dans la commande de pièces.
Voir le Vérifier le flux de données section ci-dessous pour des informations sur la gestion du délai d'attente.
La commande de pièces retournée est non terminée lorsque SAP la retourne pour la première fois. Par exemple, les informations de livraison ne sont pas disponibles lorsque la commande de pièces est créée.
🚴♂️ En moyenne, cela prend 2 secondes par ligne d'article pour que SAP traite la commande de pièces. Donc, traiter une commande de pièces avec 60 lignes d'articles prend au moins 2 minutes.
Votre interface utilisateur DMS doit gérer ce long traitement en arrière-plan.
SAP fonctionne en arrière-plan pour compléter la commande de pièces. Les principales activités sont :
- Confirmez la disponibilité des pièces et dans quel entrepôt elles sont disponibles.
- Préparez la demande d'expédition depuis l'entrepôt (ou les entrepôts) où les pièces sont disponibles vers le concessionnaire.
- Veuillez noter que les pièces peuvent être expédiées depuis différents entrepôts ; dans ce cas, le concessionnaire recevra plus d'un envoi.
- Si une pièce n'est pas disponible, SAP essaie de déterminer une date de disponibilité et de mettre à jour la commande de pièces avec l'information.
Votre DMS doit appeler l'API de commande de pièces Obtenir le service pour mettre à jour les informations de commande de pièces. Un appel au Obtenir le service doit être effectué tant que la commande de pièces est ouverte (non complétée).
L'appel peut être effectué régulièrement ou lorsque la commande de pièces est affichée au concessionnaire. Le concessionnaire peut voir les informations de livraison pour chaque article en mettant à jour la commande de pièces.
En fonction du nombre de lignes dans la commande de pièces, SAP peut prendre 10 à 15 minutes pour la traiter complètement.
Lorsque SAP prépare la commande de pièces, les informations de livraison sont envoyées à l'entrepôt (ou aux entrepôts) et les articles sont livrés au concessionnaire.
Les principales informations à retenir dans le processus commercial :
- Il faut du temps à SAP pour traiter la commande de pièces, et l'API de commande de pièces renvoie un délai d'attente s'il y a plus de 25 lignes lors de l'appel du service de création.
- Il faut du temps à SAP pour traiter la commande de pièces, et votre DMS doit appeler le service Get pour mettre à jour la commande de pièces dans la base de données du DMS.
- SAP traite la commande de pièces en moyenne en 2 secondes par ligne, donc une commande de pièces avec 60 lignes prend au moins 2 minutes à traiter.
Dans votre DMS, le bouton soumettre/créer ne doit pas être activé si la validation n'a pas été effectuée pour toutes les commandes de pièces avec 30 lignes ou moins.
Connexion du concessionnaire
La première fois que le concessionnaire utilise une opération de l'API de commande de pièces, il doit se connecter à BOSSWeb via le API d'authentification du concessionnaire. Le processus de connexion vous fournit un access_token et refresh_token.
❗ ❗ Les sections suivantes fournissent des informations essentielles sur le processus d'authentification des concessionnaires ❗ ❗
👉 Prenez le temps de toutes les lire !
Authentification des concessionnaires et plusieurs magasins de concessionnaires
Certaines concessions font partie d'un groupe de concessionnaires avec plusieurs emplacements. Dans certains cas, chaque concession gère ses commandes, tandis que dans d'autres cas, l'un des emplacements crée des commandes pour toutes les concessions.
Dans le premier scénario, chaque concessionnaire doit obtenir un access_token le API d'authentification du concessionnaire.
Dans le deuxième scénario, le concessionnaire gérant les commandes pour tous les emplacements doit obtenir un access_token le API d'authentification du concessionnaire.
❗❗ L'information vitale à retenir est que le access_token obtenu par le biais de l'API d'authentification du concessionnaire doit être pour le concessionnaire dont le numéro de concessionnaire est utilisé dans le dealer_no champ de la charge utile ou de l'en-tête ❗❗
Par exemple, disons que nous avons les concessionnaires 000069001 et 0000690002, et que le concessionnaire 000069001 crée des commandes pour les deux emplacements.
Le access_token doit être obtenu pour le concessionnaire 000069001, et le dealer_no champ dans la charge utile doit être 0000690001.
Lors de la commande pour un autre emplacement, le partner.bill_to_no et partner.ship_to_no champs sont utilisés pour spécifier le concessionnaire pour lequel la commande est créée.
❗❗ En résumé, nous ne pouvons pas utiliser un access_token pour tous vos concessionnaires à moins qu'ils ne fassent partie du groupe avec un concessionnaire créant des commandes pour tous les emplacements ❗❗
Permissions des concessionnaires dans BOSSWeb
Les identifiants de toute personne de concession peuvent être utilisés pour se connecter à BOSSWeb via le API d'authentification du concessionnaire.
Cependant, pour que le Dealer Authentication access_token soit utilisé dans les appels à l'API de commande de pièces, la personne du concessionnaire qui se connecte doit avoir les permissions de commande PAA.
❗ ❗ Si la personne du concessionnaire qui se connecte à BOSSWebb n'a pas les permissions de commande PAA, vous recevrez un code d'état 401 Non autorisé lors de l'appel à l'API de commande de pièces ❗ ❗

Jeton de rafraîchissement
Comme décrit dans la Authentification du concessionnaire section, le access_token retourné par le API d'authentification du concessionnaire expire après 2 heures.
Le refresh_token, également retourné par le API d'authentification du concessionnaire, doit être sauvegardé et utilisé pour obtenir un nouveau access_token lorsque, ou avant, que l'actuel expire.
Un seul ensemble de access_token et refresh_token doit être utilisé pour accéder à l'API de commande de pièces.
Cela signifie qu'une seule personne de la concession peut se connecter à BOSSWeb, et tous les utilisateurs DMS qui ont accès aux fonctions de commande de pièces peuvent utiliser le même ensemble de jetons.
Pour rappel, le refresh_token n'expire jamais à moins que vos identifiants DMS ne soient révoqués.
Opérations
Cette section présente des détails sur les opérations de l'API de commande de pièces.
Valider, Créer et Vérifier
L'API de commande de pièces Valider et Créer sont les opérations les plus critiques, et une compréhension approfondie de celles-ci est essentielle pour fournir aux concessionnaires la fonctionnalité attendue et pour répondre aux exigences de certification.
Le flux de processus commence par le concessionnaire préparant une commande de pièces dans votre DMS, comme indiqué à l'étape 1 de la section Aperçu du processus commercial de commande de pièces.
La deuxième étape consiste à obtenir le access_token et le refresh_token si vous les avez déjà.
Les appels au Valider et Créer le service peuvent alors être effectués.
❗ Une fois qu'une commande de pièces a été créée avec un appel au Créer une commande service, il ne peut pas être modifié ❗
Vous ne pouvez pas ajouter ou supprimer des articles de la commande de pièces créée.
La seule action est d'annuler un article en appelant le Annuler la ligne de commande service.
Seul un article de ligne dans le retard ou bloqué peut être annulé si la commande est complétée !
Si l'état de la commande est en cours ou en attente, tout article peut être annulé.
Scénario 1 : Moins de 25 articles de ligne
Dans ce scénario, le concessionnaire crée une commande avec moins de 25 articles de ligne.
Le diagramme de séquence montre que la première étape consiste à appeler le Valider service pour vérifier la commande. L'API de commande de pièces renvoie la réponse reçue de SAP au DMS.
Votre DMS doit afficher la réponse reçue, y compris les messages d'avertissement et d'erreur, ainsi que les frais d'expédition.
Une fois que le concessionnaire a apporté les corrections nécessaires, il soumettra la commande, et votre DMS appellera l'API pour la créer.
S'il n'y a pas d'erreurs, l'API renvoie la commande de pièces créée par SAP à votre DMS. Cette commande de pièces doit être enregistrée dans la base de données DMS pour une consultation ultérieure.
En cas d'erreurs, elles sont affichées au concessionnaire.
sequenceDiagram
DMS->>DMS: Le concessionnaire prépare la commande
DMS->>DMS: Le concessionnaire valide la commande
DMS->>BOSSWeb: Connexion
BOSSWeb-->>DMS: Code d'accès
DMS->>API: Valider
API->>SAP: Valider
SAP-->>API: Réponse de validation
API-->>DMS: Réponse de validation
DMS->>DMS: Afficher les messages d'avertissement et d'erreur
DMS->>DMS: Le concessionnaire effectue des corrections et valide la commande
DMS->>API: Valider
API->>SAP: Valider
SAP-->>API: Réponse de validation
API-->>DMS: Réponse de validation
DMS->>DMS: Le concessionnaire soumet la commande
DMS->>API: Créer
API->>SAP: Créer
SAP-->>API: Réponse de création
API-->>DMS: Réponse de création
DMS->>DMS: Mettre à jour la commande dans la base de données Scénario 2 : 26 à 30 lignes d'articles
Le concessionnaire crée une commande avec 26 à 30 lignes d'articles dans ce scénario.
Dans ce scénario, le problème clé est que le service de validation fonctionne correctement (il est légèrement plus rapide que Créer), mais le Créer service renvoie un délai d'attente de passerelle 504.
Le diagramme de séquence montre que la première étape consiste à appeler le service de validation pour vérifier la commande. L'API de commande de pièces renvoie la réponse reçue de SAP au DMS.
Votre DMS doit afficher la réponse reçue, y compris tous les messages d'avertissement et d'erreur, ainsi que les frais d'expédition.
Une fois que le concessionnaire a effectué les corrections nécessaires, il soumettra la commande, et votre DMS appellera l'API pour créer la commande.
Dans ce scénario, l'appel au service de création renvoie un code d'état de délai d'attente de passerelle 504.
Pour gérer le délai d'attente, attendez un moment puis appelez le service de vérification..
Nous suggérons d'attendre une période calculée comme suit :
attendre = (nombre d'articles * 2 secondes) + 10 secondes
Puisque SAP prend environ 2 secondes par article pour créer la commande, c'est la manière la plus efficace d'attendre.
Le Vérifier service renvoie la commande de pièces créée s'il n'y a pas d'erreurs. Cette commande de pièces doit être enregistrée dans la base de données DMS pour une consultation ultérieure.
Si des erreurs se produisent, elles sont affichées au concessionnaire.
sequenceDiagram
DMS->>DMS: Le concessionnaire prépare la commande
DMS->>DMS: Le concessionnaire valide la commande
DMS->>BOSSWeb: Connexion
BOSSWeb-->>DMS: Code d'accès
DMS->>API: Valider
API->>SAP: Valider
SAP-->>API: Réponse de validation
API-->>DMS: Réponse de validation
DMS->>DMS: Afficher les messages d'avertissement et d'erreur
DMS->>DMS: Le concessionnaire effectue des corrections et valide la commande
DMS->>API: Valider
API->>SAP: Valider
SAP-->>API: Réponse de validation
API-->>DMS: Réponse de validation
DMS->>DMS: Le concessionnaire soumet la commande
DMS->>API: Créer
API->>SAP: Créer
API-->>DMS: Statut 504 Gateway Timeout
DMS->>DMS: Attendre (2 secondes x nombre d'articles) + 10 secondes
DMS->>API: Vérifier
API->>SAP: Vérifier
SAP-->>API: Réponse de vérification
API-->>DMS: Réponse de vérification
DMS->>DMS: Mettre à jour la commande dans la base de données Scénario 3 : Plus de 30 articles
Dans ce scénario, le concessionnaire crée une commande avec plus de 30 lignes d'articles.
Comme montré dans le diagramme de séquence, la première étape est, comme d'habitude, d'appeler le service de validation pour vérifier la commande.
Cependant, le service de validation renvoie une erreur 504 Gateway Timeout dans ce cas.
sequenceDiagram
DMS->>DMS: Le concessionnaire prépare la commande
DMS->>DMS: Le concessionnaire valide la commande
DMS->>BOSSWeb: Connexion
BOSSWeb-->>DMS: Code d'accès
DMS->>API: Valider
API->>SAP: Valider
API-->>DMS: Statut 504 Gateway Timeout
DMS->>DMS: Attendre 2 secondes x nombre de lignes d'articles
DMS->>API: Vérifier
API->>SAP: Vérifier
SAP-->>API: Réponse de vérification/validation
API-->>DMS: Réponse de vérification/validation
DMS->>DMS: Afficher des avertissements et des messages d'erreur
DMS->>DMS: Le concessionnaire effectue des corrections et valide la commande
DMS->>API: Valider
API->>SAP: Valider
API-->>DMS: Statut 504 Gateway Timeout
DMS->>DMS: Attendre 2 secondes x nombre de lignes d'articles
DMS->>API: Vérifier
API->>SAP: Vérifier
SAP-->>API: Réponse de vérification
API-->>DMS: Réponse de vérification
DMS->>DMS: Le concessionnaire soumet la commande
DMS->>API: Créer
API->>SAP: Créer
API-->>DMS: Statut 504 Gateway Timeout
DMS->>DMS: Attendre 2 secondes x nombre de lignes d'articles
DMS->>API: Vérifier
API->>SAP: Vérifier
SAP-->>API: Réponse de vérification
API-->>DMS: Réponse de vérification
DMS->>DMS: Mettre à jour la commande dans la base de données Si la commande de pièces contient plus de 30 lignes, vous devez utiliser le Vérifier service pour obtenir le Valider statut de la réponse.
Dans ce scénario, l'appel au Créer service renvoie un code d'état 504 Gateway Timeout.
Pour gérer le timeout, attendez un moment puis appelez le Vérifier service.
❗ ❗ Ne laissez pas le concessionnaire soumettre à nouveau la commande de pièces après un timeout ❗ ❗
Cela entraînerait la création de la même commande plusieurs fois dans SAP!
Nous suggérons d'attendre 20 à 30 secondes entre les appels au Vérifier service jusqu'à ce que la commande soit traitée.
👉 Notez qu'il peut falloir plus de 2 secondes à SAP pour traiter un article de ligne pour certaines pièces! De plus, le Vérifier service peut renvoyer une erreur indiquant que la commande n'est pas prête.
Le Vérifier service renvoie la commande de pièces créée s'il n'y a pas d'erreurs. Cette commande de pièces doit être enregistrée dans la base de données DMS pour une consultation ultérieure.
Si des erreurs se produisent, elles sont affichées au concessionnaire.
Scénario 4 : Erreurs de validation et création
L'étape de validation de la commande de pièces a deux objectifs principaux :
- Détecter les erreurs et les avertissements avant que le service soit appelé, permettant au concessionnaire d'apporter les modifications nécessaires.
- Exemple d'erreurs :
- Numéro de pièce invalide (numéro de pièce non-BRP).
- Pièce obsolète ou non vendable.
- Pièce vintage.
- Pièce discontinuée.
- Pièce dans une gamme de produits non autorisée pour le concessionnaire.
- Exemple d'avertissements :
- Article en rupture de stock.
- Frais de transport.
- Statut spécial.
- Paquets.
- Arrondi de la quantité à la quantité minimum de commande (MoQ).
- Afficher les frais d'expédition et le coût total de la commande au revendeur. Le revendeur peut alors modifier la commande de pièces pour réduire les frais d'expédition et/ou le prix total.
Le mode d'expédition du revendeur affecte les frais d'expédition lorsque la commande de pièces est créée.
Voir le API des concessionnaires pour des informations sur les méthodes d'expédition.
sequenceDiagram
DMS->>DMS: Le revendeur prépare la commande
DMS->>DMS: Le revendeur valide la commande
DMS->>BOSSWeb: Connexion
BOSSWeb-->>DMS: Code d'accès
DMS->>API: Valider
API->>SAP: Valider
SAP-->>API: Réponse de validation
API-->>DMS: Réponse de validation
DMS->>DMS: Afficher les messages d'avertissement et d'erreur
DMS->>DMS: Le revendeur effectue des corrections et valide la commande
DMS->>API: Valider
API->>SAP: Valider
SAP-->>API: Réponse de validation
API-->>DMS: Réponse de validation
DMS->>DMS: Le revendeur soumet la commande
DMS->>API: Créer
API->>SAP: Créer
SAP-->>API: Réponse de création
API-->>DMS: Réponse de création
DMS->>DMS: Mettre à jour la commande dans la base de données Scénario 5 : Créer des erreurs
L'API ne doit pas renvoyer d'erreur si la commande de pièces est validée avant le méthode Create est appelée.
Cependant, vous devez gérer toutes les erreurs renvoyées par l'API dans tous les scénarios.
Dans ce cas, le Create peut renvoyer une erreur, par exemple :
- Numéro de pièce invalide (numéro de pièce non-BRP).
- Pièce obsolète ou non vendable.
- Pièce vintage.
- Pièce discontinuée.
- Pièce dans une gamme de produits non autorisée pour le concessionnaire.
S'il y a une erreur, le Create le service renvoie un statut 400 Bad Request, comme celui-ci renvoyé lorsque le concessionnaire inclut une pièce discontinuée dans la commande :
{
"status": 400,
"id": "rrt-034a69794cf75546f-d-ea-6489-65327577-1.1",
"title": "not_found",
"meta": [
{
"service": "07",
"payload": {
"errors": [
{
"code": "Not Saleable",
"title": "PAA Order Validate (API/Method)",
"detail": "Part number is not saleable- please contact your PAA analyst",
"meta": {
"product_code": "1301200012",
"item_id": "16137d90-a062-4465-9e42-4e6c91c6f595",
"message": "014 - Warning - Your part is not available for item_id = 16137d90-a062-4465-9e42-4e6c91c6f595 product_code = 1301200012 (/BRP/PART_ORDER/061)"
}
}
]
}
}
]
}Cela signifie que la commande de pièces n'est pas créée.
Dans ce cas, le concessionnaire peut apporter les corrections nécessaires en supprimant la pièce discontinuée et en soumettant à nouveau la commande.
Obtenir des commandes
Le Obtenir service est utilisé pour récupérer une ou plusieurs commandes de pièces soumises par le concessionnaire.
👉Un appel au Obtenir service pour récupérer une liste de commandes de pièces, par exemple, en utilisant une plage de dates, renvoie également les commandes de pièces créées par le concessionnaire dans BOSSWeb.
❗❗ Le Obtenir service est essentiel pour aider le concessionnaire dans son processus de réception des commandes de pièces. ❗❗
Si les commandes de pièces ne sont pas chargées et mises à jour dans votre base de données DMS, le API des livraisons et API des factures ne peuvent pas être utilisés pour lier les pièces reçues à la commande de pièces.
La recherche se fait à l'aide d'un ensemble de paramètres :
- L'ID de commande de pièces renvoyé par le Créer appel.
- Le numéro de commande de vente qui a été renvoyé par le Créer appel.
- Le numéro de commande du concessionnaire.
- Le type de commande.
- Une plage de dates de création (de/à).
- Le statut de la commande.
Vous pouvez trouver plus d'informations sur les Obtenir paramètres de service dans le Lister les commandes documentation d'appel.
Lors de la récupération d'une commande de pièces avec un appel à Obtenir, les informations non disponibles dans le Créer la réponse du service est obtenue.
Dans le Créer réponse, la livraisons propriété d'un article lignes d'expédition ne contient pas les informations de facturation.
Dans le Créer réponse, la livraisons propriété ressemble à ceci.
"deliveries": [
{
"status_code": "allocated",
"status_date": "2023-07-18T10:14:42Z",
"status_descr": "",
"qty": 1,
"availability_date": "2023-07-20",
"no": "",
"item_no": "",
"delivery_qty": 0,
"creation_date": null,
"carrier_name": "",
"billings": []
}
],Le status_code propriété alloué indique que la pièce a été assignée à la commande de pièces mais n'a pas encore été expédiée.
Appelant le Get service plus tard pour récupérer la commande de pièces, la livraisons propriété ressemble à ceci.
"deliveries": [
{
"status_code": "shipped",
"status_date": "2022-01-27T13:42:35.000Z",
"status_descr": null,
"qty": 1,
"availability_date": "2022-01-27",
"no": "8020007398",
"item_no": "000030",
"delivery_qty": 1,
"creation_date": "2022-01-27T06:39:28.000Z",
"carrier_name": "FEDEX",
"billings": [
{
"billing_no": "9027150046",
"billing_item_no": "000803",
"billing_creation_date": "2022-01-27T17:59:56.000Z",
"billing_qty": 1,
"is_cancelled": false
}
]
}
],La livraisons propriété contient maintenant le numéro de document de livraison (no), le nom du transporteur, et les informations de facturation, y compris le numéro de facture (billing_no).
👉 Notez que le status_code de l'article est maintenant expédié.
Cette section explique pourquoi il est essentiel d'appeler le Obtenez service pour mettre à jour les informations de commande de pièces, même si certains articles sont encore attribués.
Le mieux est de mettre à jour la commande de pièces dans votre DMS par lots à intervalles réguliers, ou lorsque la commande de pièces est affichée au concessionnaire.
Vous devez appeler le Obtenez service pour mettre à jour la commande jusqu'à ce que son statut soit expédié.
"header_statuses": [
{
"type": "success",
"code": "completed",
"descr": "Your order has been shipped"
}
],Annuler l'article
Le Annuler service permet au concessionnaire d'annuler un article d'une commande de pièces si l'article est en rupture de stock ou bloqué.
Seul un article dans le retard ou bloqué peut être annulé si la commande est complétée !
Si l'état de la commande est 'en cours' ou 'en attente', tout article peut être annulé.
Le statut de la commande de pièces se trouve dans le header_statuses tableau. Si l'un des statuts est en_cours ou en attente, tout article peut être annulé.
"header_statuses": [
{
"type": "success",
"code": "in_process",
"descr": "Your order is in process"
},
{
"type": "warning",
"code": "",
"descr": "Pay special attention to the status of certain parts"
},
{
"type": "warning",
"code": "",
"descr": "If your order is blocked for more info please open a case"
}
],L'appel est simple : vous fournissez la liste des articles à annuler dans un Annulation de Commande de Pièces ressource. Si les articles sont annulables, vous recevez une commande de pièces mise à jour qui doit être enregistrée dans votre base de données DMS.
sequenceDiagram
DMS->>DMS: Le concessionnaire sélectionne une commande
DMS->>DMS: Le concessionnaire sélectionne un ou plusieurs articles
DMS->>DMS: Le concessionnaire annule les articles
DMS->>BOSSWeb: Connexion
BOSSWeb-->>DMS: Code d'accès
DMS->>API: Annuler
API->>SAP: Annuler
SAP-->>API: Réponse d'annulation
API-->>DMS: Réponse d'annulation
DMS->>DMS: Mettre à jour la commande dans la base de données👉 Puisque vous avez mis à jour la commande de pièces avec un appel au Obtenir service lorsque la commande de pièces est affichée, vous pouvez activer la fonction d'annulation uniquement sur les articles qui ont un statut de en attente ou bloqué. 😁
Notez que si tous les articles sont annulés, la commande de pièces elle-même est annulée, et cela est reflété dans le header_statuses propriété.
"header_statuses": [
{
"type": "success",
"code": "completed",
"descr": "Your order has been cancelled"
}Commande de pièces
Cette section explique les informations essentielles sur la commande de pièces trouvées dans le Ressource:Commande de pièces section.
Méthodes d'expédition
Un champ important de la Commande de pièces ressource est la condition d'expédition propriété (également appelée méthode d'expédition, qui est la même chose), qui indique comment la commande de pièces est expédiée au concessionnaire.
La méthode d'expédition sélectionnée affecte directement le coût total de la commande de pièces, car certaines méthodes sont plus coûteuses que d'autres.
Les méthodes d'expédition disponibles pour le concessionnaire sont listées dans le Concessionnaires ressource du API des concessionnaires.
Les méthodes d'expédition disponibles pour le concessionnaire peuvent changer en fonction du niveau de certification du concessionnaire.
Votre DMS doit appeler le API des concessionnaires au moins une fois par jour pour récupérer la dernière liste des méthodes d'expédition disponibles pour le concessionnaire.
La première méthode d'expédition dans le shipping_methods tableau est celle par défaut, et votre DMS doit la sélectionner par défaut.
Ceci est une API des concessionnaires réponse pour le concessionnaire 0000690095.
{
"dealer_no": "0000690095",
"dealer_name": "ENGELHART SPORTS CENTER",
"legal_name": "ENGELHART, INC.",
"address": {
"street": "1589 GREENWAY CROSS",
"city": "MADISON",
"state": "WI",
"country": "US",
"postal_code": "53713-3112"
},
"language": "EN",
"time_zone": "UTC-06000",
"partners": [
{
"partner_type": "BP",
"partner_no": "0000690095",
"partner_name": "ENGELHART SPORTS CENTER",
"address": {
"street": "1589 GREENWAY CROSS",
"city": "MADISON",
"state": "WI",
"country": "US",
"postal_code": "53713-3112"
}
},
{
"partner_type": "SH",
"partner_no": "0000690095",
"partner_name": "ENGELHART SPORTS CENTER",
"address": {
"street": "1589 GREENWAY CROSS",
"city": "MADISON",
"state": "WI",
"country": "US",
"postal_code": "53713-3112"
}
}
],
"shipping_methods": [
{
"shipping_method": "S2",
"shipping_method_descr": "Vehicle Down"
},
{
"shipping_method": "S3",
"shipping_method_descr": "Veh. Down Saturday"
}
],
"product_lines": [
"SNO",
"ATV",
"3WV"
]
}L'écran de commande de pièces correspondant dans BOSSWeb, avec la méthode d'expédition par défaut sélectionnée, est également inclus.

Les informations pour un autre concessionnaire (0000694380) sont indiquées ci-dessous et indiquent que seulement 2 méthodes d'expédition sont disponibles pour le concessionnaire.
{
"dealer_no": "0000694380",
"dealer_name": "BAYCO SALES RENTALS LIMITED",
"legal_name": "BAYCO SALES RENTALS LIMITED",
"address": {
"street": "12-16 WATER STREET",
"city": "BAIE VERTE",
"state": "NL",
"country": "CA",
"postal_code": "A0K 1B0"
},
"language": "EN",
"partners": [
{
"partner_type": "BP",
"partner_no": "0000694380",
"partner_name": "BAYCO SALES & RENTALS LIMITED",
"address": {
"street": "12-16 WATER STREET",
"city": "BAIE VERTE",
"state": "NL",
"country": "CA",
"postal_code": "A0K 1B0"
}
},
{
"partner_type": "SH",
"partner_no": "0000694380",
"partner_name": "BAYCO SALES & RENTALS LIMITED",
"address": {
"street": "12-16 WATER STREET",
"city": "BAIE VERTE",
"state": "NL",
"country": "CA",
"postal_code": "A0K 1B0"
}
}
],
"shipping_methods": [
{
"shipping_method": "S1",
"shipping_method_descr": "Expedited Ground"
},
{
"shipping_method": "S2",
"shipping_method_descr": "Rush"
}
],
"product_lines": [
"SNO",
"ATV",
"SSV"
],
"ev_qualification_level": "E1",
"business_hours": [
"Mon: 09:00-17:00",
"Tue: 09:00-17:00",
"Wed: 09:00-17:00",
"Thu: 09:00-17:00",
"Fri: 09:00-17:00",
"Sat: 00:00-00:00",
"Sun: 00:00-00:00"
],
"service_hours": [
"Mon: 09:00-17:00",
"Tue: 09:00-17:00",
"Wed: 09:00-17:00",
"Thu: 09:00-17:00",
"Fri: 09:00-17:00",
"Sat: 00:00-00:00",
"Sun: 00:00-00:00"
],
"sales_attributes": {
"sales_territory_code": "001",
"sales_district": "NA0001",
"sales_office": "NA01",
"sales_group": "NAA"
}
}Cela se reflète dans BOSSWeb.

Votre DMS doit se comporter de manière similaire : présenter uniquement les méthodes d'expédition disponibles pour le concessionnaire et sélectionner celle par défaut.
🛑 Les méthodes d'expédition varient d'une région à l'autre. Vérifiez la liste des méthodes d'expédition par région.
Dans tous les cas, la source de vérité est l'information retournée par le API des concessionnaires.
Partenaires
Lors de la validation ou de la création d'une commande de pièces, la partenaire propriété indique où la commande est expédiée (ship_to_no) et le concessionnaire qui est facturé (bill_to_no).
Dans la plupart des cas, le ship_to_no et bill_to_no les numéros de concessionnaire sont les mêmes que le dealer_no, le concessionnaire soumettant la commande.
{
"pac_order_id": "guid",
"dealer_no": "0000700710",
"dealer_po_no": "PO inter1234",
"shipping_carrier": {
"shipping_condition": "30"
},
"partner": {
"bill_to_no": "0000700710",
"ship_to_no": "0000700710"
},L'API de commande de pièces permet qu'une commande soit expédiée et facturée à un numéro de concessionnaire différent de celui soumettant la commande de pièces.
Cette fonctionnalité n'est pas souvent utilisée, mais elle permet à un concessionnaire multi-magasin de gérer les commandes de pièces depuis un emplacement central et de les expédier à divers endroits.
Les numéros de concessionnaires partenaires sont configurés pour le concessionnaire et ne peuvent pas être sélectionnés au hasard.
Un concessionnaire peut choisir de facturer quelqu'un d'autre pour sa commande de pièces...
Si le concessionnaire a différents numéros de concessionnaires partenaires disponibles, ils sont listés dans le Concessionnaires ressource, comme indiqué dans l'exemple fictif ci-dessous.
{
"dealer_no": "0000700754",
"dealer_name": "NEW 3 LACS LE MANS",
"legal_name": "NEW TROIS LACS SARL",
"address": {
"street": "AVENUE DU PANORAMA",
"city": "LE MANS",
"state": "59",
"country": "FR",
"postal_code": "72100"
},
"language": "FR",
"partners": [
{
"partner_type": "SH",
"partner_no": "0000700754",
"partner_name": "N3L NANTES SARL NEW 3 LACS NANTES",
"address": {
"street": "AVENUE DU PANORAMA",
"city": "LE MANS",
"state": "59",
"country": "FR",
"postal_code": "72100"
}
},
{
"partner_type": "BP",
"partner_no": "0000700800",
"partner_name": "NEW 3 LACS LE MANS NEW TROIS LACS SARL",
"address": {
"street": "15 RUE DES MOULINS",
"city": "KEDANGE SUR CANNER",
"state": "",
"country": "FR",
"postal_code": "57920"
}
}
],
"shipping_methods": [
{
"shipping_method": "30",
"shipping_method_descr": "BRPED-RÉGULIER"
},
{
"shipping_method": "33",
"shipping_method_descr": "BRPED-RUSH"
}
],
"product_lines": [
"PWC",
"ATV",
"SSV",
"3WV",
"PTN"
]
}Si le concessionnaire a un numéro de concessionnaire différent pour l'expédition, il doit être en mesure de sélectionner soit son adresse, soit l'adresse de livraison pour l'expédition.
Réponse de commande de pièces
Cette section explique les informations importantes sur la commande de pièces trouvées dans le Ressource : Réponse de commande de pièces section.
Variations entre V3 et V4
ID de commande PAC
Dans la réponse renvoyée par le Créer service, la première propriété est le pac_order_id.
Le pac_order_id est l'identifiant unique pour la commande de pièces utilisé par SAP.
Dans la version V3 , la valeur GUID fournie par votre DMS dans le pac_order_id propriété est utilisée par SAP et renvoyée dans le Valider et Créer réponses.
Dans la version V4 , SAP utilise la valeur GUID fournie par votre DMS dans le pac_order_id propriété et la renvoie dans le Réponse de validation.
Cependant, SAP renvoie une valeur différente dans la réponse de création.
🛑 Le pac_order_id propriété retournée dans le Créer la réponse doit être sauvegardée car elle est nécessaire pour identifier la commande de pièces dans un appel à la Annuler et Obtenir services.
Numéro de commande de vente
Le sales_order_no propriété contient le numéro du document de vente que le concessionnaire peut utiliser pour suivre la commande.
Dans la V3 version de l'API, la sales_order_no propriété est répétée dans chaque objet d'élément de ligne.
Dans la V4 version de l'API, la sales_order_no propriété se trouve uniquement dans l'en-tête.
ID de l'élément de ligne commandé
La item_id propriété d'un article identifie de manière unique l'article dans SAP dans toutes les commandes.
Dans la V3 version, la valeur GUID fournie par votre DMS dans la item_id propriété est utilisée par SAP et retournée dans le Valider et Créer réponses.
Dans la V4 version, SAP utilise la valeur GUID fournie par votre DMS dans la propriété item_id et la retourne dans le Valider réponse.
Cependant, SAP renvoie une valeur différente dans la réponse de création.
🛑 L'item_id propriété renvoyée dans la réponse de création doit être sauvegardée car elle est nécessaire pour identifier la commande de pièces dans un appel aux services d'annulation et de récupération .
Statut de la commande
Le statut global de la commande se trouve dans le header_statuses champ.
"header_statuses": [
{
"type": "success",
"code": "in_process",
"descr": "Your order is in process"
},
{
"type": "warning",
"code": "",
"descr": "Pay special attention to the status of certain parts"
},
{
"type": "warning",
"code": "",
"descr": "Your PAA order is less than 250.00$, handling fee of 40.00$ will be applied to the invoice."
}
],La première entrée du tableau est le statut global de la commande. S'il y a d'autres entrées, elles contiennent généralement un message d'avertissement pour le revendeur.
Statut de l'en-tête
Lorsque le header_statuses.type a la valeur succès, le header_statuses.codele champ contient l'une des valeurs ci-dessous.
Code | Description |
|---|---|
en attente | Le traitement de la commande n'a pas commencé. |
en cours | La commande est en cours de livraison. |
terminé | Le traitement de la commande est terminé et a été expédié. Cela ne signifie pas que tous les articles ont été alloués et expédiés ! Vous devez vérifier le statut de chaque article. Voir ci-dessous. |
en attente | La commande est en attente, et le revendeur doit contacter le service d'assistance de BRP. Lorsque la commande est en attente, cela est causé par une règle commerciale. Les revendeurs en sont conscients et savent quoi faire. |
Lorsque le header_statuses.code est terminé, le statut de chaque article peut être vérifié.
❗ Cela ne signifie pas que tous les articles ont été alloués et expédiés ! Vous devez vérifier le statut de chaque article ❗
Statut de Livraison des Articles
Pour chaque élément, le champ items.shipping_lines.deliveries.status_code contient l'une des valeurs ci-dessous.
Code | Description |
|---|---|
attribué | La pièce est disponible, il y a du stock, et elle sera expédiée. |
non_attribué | La pièce est indisponible ; le concessionnaire doit contacter le service d'assistance de BRP. |
bloqué | La pièce est bloquée, et le concessionnaire doit contacter le service d'assistance de BRP. |
commande en attente | La pièce est en commande et sera expédiée plus tard. |
rejeté | La pièce est rejetée. La pièce peut être obsolète, ou le concessionnaire n'a pas la gamme de produits où la pièce est utilisée. |
expédié | La pièce a été expédiée. |
Exemple avec BOSSWeb
Dans BOSSWeb, le concessionnaire peut récupérer le statut d'une ou plusieurs pièces d'une commande. BOSSWeb affiche un écran récapitulatif avec les commandes des pièces trouvées.
Dans l'exemple ci-dessous, le statut de la commande des pièces est Terminé, indiquant que le traitement est terminé.

Si le concessionnaire clique sur le Numéro de commande lien, BOSSWeb affiche le statut détaillé de la commande de pièces.

Dans cet exemple, la commande de pièces ne contient qu'un seul article, qui a été annulé, c'est pourquoi le statut de la commande de pièces est Terminé.
Si vous regardez la même commande de pièces via l'API de commande de pièces, la charge utile suivante est reçue.
{
"items": [
{
"pac_order_id": "VzdGH9}I7k{O{zPIwQJddW",
"sales_order_no": "1031037087",
"creation_date": "2024-08-26T19:09:20Z",
"dealer_po_no": "BU089431",
"dealer_no": "0000690095",
"order_type": "regular",
"shipping_carrier": {
"shipping_condition": "S0",
"shipping_condition_descr": "Standard Ground"
},
"payment_terms": "F030",
"payment_terms_descr": "Fin. (PA&A) - Due in 30 days",
"partners": [],
"pricings": [
{
"condition_type": "gross_amt",
"total_amount": 1134.8,
"currency": "USD"
},
{
"condition_type": "subtotal_amt",
"total_amount": 1134.8,
"currency": "USD"
},
{
"condition_type": "tax_amt",
"total_amount": 62.41,
"currency": "USD"
}
],
"header_texts": [],
"header_statuses": [
{
"type": "success",
"code": "completed",
"descr": "Your order has been cancelled"
},
{
"type": "warning",
"code": "",
"descr": "Pay special attention to the status of certain parts"
}
],
"items": [
{
"ordered_line": {
"item_id": "7FD9D0449FD21EEF98FBD652E9A5279E",
"item_no": "000100",
"parent_item_no": "000000",
"product_code": "278001882",
"product_descr": "BATTERY_12 VOLT 30AH",
"order_qty": 10,
"dealer_po_item_no": "1",
"dealer_product_code": "278001882",
"sales_uom": "PC",
"min_order_qty": 1,
"is_sales_bom": false,
"product_line": "SNO",
"product_type": "30",
"texts": []
},
"shipping_lines": [
{
"item_no": "000101",
"parent_item_no": "000100",
"product_code": "415130650",
"product_descr": "BATTERY_12 VOLT 30AH",
"ship_qty": 10,
"sales_uom": "PC",
"price_uom": "PC",
"package_uom": "PC",
"in_package": {
"qty": 1,
"uom": "PC"
},
"package_count": 10,
"msrp_unit_price": 174.99,
"wholesale_unit_price": 113.48,
"net_unit_price": 113.48,
"currency": "USD",
"is_substitute_product": true,
"substituted_product_code": "278001882",
"product_line": "SNO",
"product_type": "30",
"plant": {
"name": "BRP - BELOIT",
"city": "BELOIT",
"state": "WI",
"country": "US"
},
"pricings": [
{
"condition_type": "gross_amt",
"total_amount": 1134.8,
"currency": "USD"
},
{
"condition_type": "subtotal_amt",
"total_amount": 1134.8,
"currency": "USD"
},
{
"condition_type": "tax_amt",
"total_amount": 62.41,
"currency": "USD"
}
],
"deliveries": [
{
"status_code": "rejected",
"status_date": "2024-08-26T15:09:20Z",
"status_descr": "Cancelled by customer",
"qty": 10,
"availability_date": "2024-08-27",
"no": "",
"item_no": "",
"delivery_qty": 0,
"creation_date": "",
"carrier_name": "",
"split_delivery_no": "",
"split_delivery_item_no": "",
"billings": []
}
],
"statuses": [
{
"type": "success",
"code": "in_process",
"descr": "Your part is in process"
}
]
}
]
}
]
}
],
"links": {
"previous": null,
"next": null
}
}Le header_statuses montre que la commande de pièces est terminée et a été annulée. En regardant l'état de l'article, le informations sur les livraisons montrent que l'article a été annulé.
Partenaires
Dans l'en-tête de la commande de pièces, le dealer_no indique quel concessionnaire a soumis la commande.
La section des partenaires fournit des informations sur l'endroit où la commande de pièces est expédiée (Expédier à) et qui est facturé pour la commande de pièces (Facturer à).
"partners": [
{
"type": "BP",
"no": "0000702933",
"name": "PERFORMANCE NC - GRANBY",
"address": {
"street": "125 PIERRE-PARADIS",
"city": "ST-ALPHONSE DE GRANBY",
"state": "QC",
"country": "CA",
"postal_code": "J0E 2A0"
}
},
{
"type": "SH",
"no": "0000702933",
"name": "PERFORMANCE NC - GRANBY",
"address": {
"street": "125 PIERRE-PARADIS",
"city": "ST-ALPHONSE DE GRANBY",
"state": "QC",
"country": "CA",
"postal_code": "J0E 2A0"
}
}
],La plupart du temps, les adresses de livraison et de facturation sont les mêmes que celles figurant sur la commande de pièces.
Tarification
L'en-tête de la commande de pièces contient le tableau des prix qui documente les coûts globaux de la commande, comme indiqué ci-dessous.
Le même tableau des prix est trouvé pour chaque article de la commande de pièces pour documenter les coûts des articles.
Il existe différents types de montants, et tous ne sont pas toujours présents. Au minimum, le pricings tableau contient les montant_brut , montant_sous_total, et montant_taxe objets de montant.
"pricings": [
{
"condition_type": "gross_amt",
"total_amount": 68.48,
"currency": "USD"
},
{
"condition_type": "tax_amt",
"total_amount": 6.32,
"currency": "USD"
},
{
"condition_type": "handling_fee",
"total_amount": 20,
"currency": "USD"
},
{
"condition_type": "subtotal_amt",
"total_amount": 90.25,
"currency": "USD"
},
{
"condition_type": "surcharge_amt",
"total_amount": 1.77,
"currency": "USD"
}
],Montant Brut
Le montant brut (montant_brut ) est le coût total de la commande ou de l'article, hors autres coûts tels que les frais de manipulation, le fret, les surtaxes, les taxes, etc.
Montant du sous-total
Le montant du sous-total ( subtotal_amt ) est le coût total de la commande ou de l'article, y compris tous les autres coûts tels que les frais de manutention, le fret, les surtaxes, etc., mais excluant les taxes.
Montant de la taxe
Le montant de la taxe ( tax_amt ) est la taxe totale facturée pour la commande ou l'article. S'il y a plus d'une taxe facturée, le montant total est indiqué dans cette propriété.
Montant total
Il n'y a pas de champ qui contient le montant total de l'article ou de la commande. Si vous souhaitez afficher le montant total dans votre DMS, vous pouvez ajouter le gross_amt et tax_amt champs.
Lignes d'articles
Pour chaque article dans la commande de pièces, deux sections sont présentes :
- Ligne commandée pour documenter ce qui est commandé par le concessionnaire.
- Lignes d'expédition pour documenter ce qui est expédié au concessionnaire.
Pourquoi y a-t-il une différence ?
Parce que le concessionnaire peut avoir commandé une pièce qui ne peut pas être expédiée.
Par exemple, si le concessionnaire a commandé une pièce de substitution, cela est documenté dans la ligne_commandée section, mais la ligne_d'expédition section contient les informations sur la pièce de substitution.
👉 En général, vous devez afficher les informations sur les lignes d'expédition au concessionnaire.
Vous pouvez afficher à la fois la ligne_commandée et les lignes_d'expédition si vous le souhaitez, mais les lignes_d'expédition doivent être affichées puisque le document montre les pièces que le concessionnaire recevra.
Ligne Commandée
Documents ce que le concessionnaire a commandé pour cet article. L'objet fournit également des informations sur la pièce, telles que la quantité minimale de commande (min_order_qty), si la pièce est un kit (BOM), etc.
"ordered_line": {
"item_id": "005056840C891EEE89B74E33AF157B9B",
"item_no": "000100",
"parent_item_no" : "000000",
"product_code": "250300016",
"product_descr": "STUD_BALL M5 X 15",
"order_qty": 1,
"dealer_po_item_no": "A-0010",
"dealer_product_code": "BRP-250300016",
"sales_uom": "PC",
"min_order_qty": 1,
"is_sales_bom": false,
"product_line": "PWC",
"product_type": "30",
"texts": [
{
"code": "memo_field",
"descr": "Multi valid"
}
]
},Lignes d'expédition
Vous avez peut-être vu que shipping_lines est un tableau d'objets.
Pourquoi ?
Parce qu'un ordered_line peut représenter plusieurs pièces expédiées ou des expéditions partielles.
Dans l'exemple ci-dessous, l'article commandé est un kit (is_sales_bom est vrai), donc une pièce commandée représente plusieurs pièces expédiées. Dans cet exemple, cinq pièces sont expédiées.
👉 Lorsque la pièce commandée est un kit, dans la réponse, le premier ordered_line objet est pour la pièce du kit.
❗ Puisque cette pièce n'est pas celle qui est expédiée, il n'y a pas de shipping_lines ❗
Voir la section Kits (BOM) ci-dessous pour plus d'informations sur les kits.
"items": [
{
"ordered_line": {
"item_id": "99D2429AE98C1EEFA09E88AE04114FF7",
"item_no": "000100",
"parent_item_no": "000000",
"product_code": "267000084",
"product_descr": "IMPELLER HOUSING",
"order_qty": 1,
"dealer_po_item_no": "",
"dealer_product_code": "",
"sales_uom": "PC",
"min_order_qty": 1,
"is_sales_bom": true,
"product_line": "PWC",
"product_type": "30",
"texts": [
{
"code": "memo_field",
"descr": "Kit part"
}
]
},
"shipping_lines": []
},
{
"ordered_line": {
"item_id": "99D2429AE98C1EEFA09E88AE0411AFF7",
"item_no": "000200",
"parent_item_no": "000100",
"product_code": "267000417",
"product_descr": "IMPELLER HOUSING",
"order_qty": 1,
"dealer_po_item_no": "",
"dealer_product_code": "",
"sales_uom": "PC",
"min_order_qty": 1,
"is_sales_bom": false,
"product_line": "PWC",
"product_type": "30",
"texts": []
},
"shipping_lines": [
{
"item_no": "000201",
"parent_item_no": "000200",
"product_code": "271002161",
"product_descr": "HOUSING IMPELLER ANODIZED",
"ship_qty": 1,
"sales_uom": "PC",
"price_uom": "PC",
"package_uom": "PC",
"in_package": {
"qty": 1,
"uom": "PC"
},
"package_count": 1,
"msrp_unit_price": 289.99,
"wholesale_unit_price": 172.98,
"net_unit_price": 190.22,
"currency": "USD",
"is_substitute_product": true,
"substituted_product_code": "267000417",
"product_line": "PWC",
"product_type": "30",
"plant": {
"name": "BRP - BELOIT",
"city": "BELOIT",
"state": "WI",
"country": "US"
},
"pricings": [
{
"condition_type": "gross_amt",
"total_amount": 172.98,
"currency": "USD"
},
{
"condition_type": "tax_amt",
"total_amount": 10.46,
"currency": "USD"
},
{
"condition_type": "subtotal_amt",
"total_amount": 190.22,
"currency": "USD"
},
{
"condition_type": "handling_fee",
"total_amount": 17.24,
"currency": "USD"
}
],
"deliveries": [
{
"status_code": "allocated",
"status_date": "2024-10-02T15:26:53Z",
"status_descr": "",
"qty": 1,
"availability_date": "2024-10-07",
"no": "",
"item_no": "",
"delivery_qty": 0,
"creation_date": "",
"carrier_name": "",
"split_delivery_no": "",
"split_delivery_item_no": "",
"billings": []
}
],
"statuses": []
}
]
},
{
"ordered_line": {
"item_id": "99D2429AE98C1EEFA09E88AE04120FF7",
"item_no": "000300",
"parent_item_no": "000100",
"product_code": "267000469",
"product_descr": "PLUG PLASTIC, BLACK",
"order_qty": 1,
"dealer_po_item_no": "",
"dealer_product_code": "",
"sales_uom": "PC",
"min_order_qty": 1,
"is_sales_bom": false,
"product_line": "SNO",
"product_type": "30",
"texts": []
},
"shipping_lines": [
{
"item_no": "000301",
"parent_item_no": "000300",
"product_code": "267000469",
"product_descr": "PLUG PLASTIC, BLACK",
"ship_qty": 1,
"sales_uom": "PC",
"price_uom": "PC",
"package_uom": "PC",
"in_package": {
"qty": 1,
"uom": "PC"
},
"package_count": 1,
"msrp_unit_price": 6.79,
"wholesale_unit_price": 4.09,
"net_unit_price": 4.5,
"currency": "USD",
"is_substitute_product": false,
"substituted_product_code": null,
"product_line": "SNO",
"product_type": "30",
"plant": {
"name": "BRP - BELOIT",
"city": "BELOIT",
"state": "WI",
"country": "US"
},
"pricings": [
{
"condition_type": "gross_amt",
"total_amount": 4.09,
"currency": "USD"
},
{
"condition_type": "tax_amt",
"total_amount": 0.25,
"currency": "USD"
},
{
"condition_type": "subtotal_amt",
"total_amount": 4.5,
"currency": "USD"
},
{
"condition_type": "handling_fee",
"total_amount": 0.41,
"currency": "USD"
}
],
"deliveries": [
{
"status_code": "allocated",
"status_date": "2024-10-02T15:26:53Z",
"status_descr": "",
"qty": 1,
"availability_date": "2024-10-07",
"no": "",
"item_no": "",
"delivery_qty": 0,
"creation_date": "",
"carrier_name": "",
"split_delivery_no": "",
"split_delivery_item_no": "",
"billings": []
}
],
"statuses": []
}
]
},
{
"ordered_line": {
"item_id": "99D2429AE98C1EEFA09E88C8DD752FF7",
"item_no": "000400",
"parent_item_no": "000100",
"product_code": "271000785",
"product_descr": "WATER OUTLET",
"order_qty": 1,
"dealer_po_item_no": "",
"dealer_product_code": "",
"sales_uom": "PC",
"min_order_qty": 1,
"is_sales_bom": false,
"product_line": "PWC",
"product_type": "30",
"texts": []
},
"shipping_lines": [
{
"item_no": "000401",
"parent_item_no": "000400",
"product_code": "271000785",
"product_descr": "WATER OUTLET",
"ship_qty": 1,
"sales_uom": "PC",
"price_uom": "PC",
"package_uom": "PC",
"in_package": {
"qty": 1,
"uom": "PC"
},
"package_count": 1,
"msrp_unit_price": 3.59,
"wholesale_unit_price": 2.13,
"net_unit_price": 2.34,
"currency": "USD",
"is_substitute_product": false,
"substituted_product_code": null,
"product_line": "PWC",
"product_type": "30",
"plant": {
"name": "BRP - BELOIT",
"city": "BELOIT",
"state": "WI",
"country": "US"
},
"pricings": [
{
"condition_type": "gross_amt",
"total_amount": 2.13,
"currency": "USD"
},
{
"condition_type": "tax_amt",
"total_amount": 0.13,
"currency": "USD"
},
{
"condition_type": "subtotal_amt",
"total_amount": 2.34,
"currency": "USD"
},
{
"condition_type": "handling_fee",
"total_amount": 0.21,
"currency": "USD"
}
],
"deliveries": [
{
"status_code": "allocated",
"status_date": "2024-10-02T15:26:53Z",
"status_descr": "",
"qty": 1,
"availability_date": "2024-10-07",
"no": "",
"item_no": "",
"delivery_qty": 0,
"creation_date": "",
"carrier_name": "",
"split_delivery_no": "",
"split_delivery_item_no": "",
"billings": []
}
],
"statuses": []
}
]
},
{
"ordered_line": {
"item_id": "99D2429AE98C1EEFA09E88C8DD758FF7",
"item_no": "000500",
"parent_item_no": "000100",
"product_code": "267000428",
"product_descr": "IMPELLER COVER",
"order_qty": 1,
"dealer_po_item_no": "",
"dealer_product_code": "",
"sales_uom": "PC",
"min_order_qty": 1,
"is_sales_bom": false,
"product_line": "PWC",
"product_type": "30",
"texts": []
},
"shipping_lines": [
{
"item_no": "000501",
"parent_item_no": "000500",
"product_code": "267000428",
"product_descr": "IMPELLER COVER",
"ship_qty": 1,
"sales_uom": "PC",
"price_uom": "PC",
"package_uom": "PC",
"in_package": {
"qty": 1,
"uom": "PC"
},
"package_count": 1,
"msrp_unit_price": 16.49,
"wholesale_unit_price": 9.88,
"net_unit_price": 10.86,
"currency": "USD",
"is_substitute_product": false,
"substituted_product_code": null,
"product_line": "PWC",
"product_type": "30",
"plant": {
"name": "BRP - BELOIT",
"city": "BELOIT",
"state": "WI",
"country": "US"
},
"pricings": [
{
"condition_type": "gross_amt",
"total_amount": 9.88,
"currency": "USD"
},
{
"condition_type": "tax_amt",
"total_amount": 0.6,
"currency": "USD"
},
{
"condition_type": "subtotal_amt",
"total_amount": 10.86,
"currency": "USD"
},
{
"condition_type": "handling_fee",
"total_amount": 0.98,
"currency": "USD"
}
],
"deliveries": [
{
"status_code": "allocated",
"status_date": "2024-10-02T15:26:53Z",
"status_descr": "",
"qty": 1,
"availability_date": "2024-10-07",
"no": "",
"item_no": "",
"delivery_qty": 0,
"creation_date": "",
"carrier_name": "",
"split_delivery_no": "",
"split_delivery_item_no": "",
"billings": []
}
],
"statuses": []
}
]
},
{
"ordered_line": {
"item_id": "99D2429AE98C1EEFA09E88C8DD75EFF7",
"item_no": "000600",
"parent_item_no": "000100",
"product_code": "205562560",
"product_descr": "SOCKET HEAD SCREW M6 X 25, SCOTCH GRIP",
"order_qty": 10,
"dealer_po_item_no": "",
"dealer_product_code": "",
"sales_uom": "PC",
"min_order_qty": 1,
"is_sales_bom": false,
"product_line": "SNO",
"product_type": "30",
"texts": []
},
"shipping_lines": [
{
"item_no": "000601",
"parent_item_no": "000600",
"product_code": "205562560",
"product_descr": "SOCKET HEAD SCREW M6 X 25, SCOTCH GRIP",
"ship_qty": 10,
"sales_uom": "PC",
"price_uom": "PC",
"package_uom": "PAC",
"in_package": {
"qty": 10,
"uom": "PC"
},
"package_count": 10,
"msrp_unit_price": 1.99,
"wholesale_unit_price": 1.16,
"net_unit_price": 1.28,
"currency": "USD",
"is_substitute_product": false,
"substituted_product_code": null,
"product_line": "SNO",
"product_type": "30",
"plant": {
"name": "BRP - BELOIT",
"city": "BELOIT",
"state": "WI",
"country": "US"
},
"pricings": [
{
"condition_type": "gross_amt",
"total_amount": 11.6,
"currency": "USD"
},
{
"condition_type": "tax_amt",
"total_amount": 0.7,
"currency": "USD"
},
{
"condition_type": "subtotal_amt",
"total_amount": 12.76,
"currency": "USD"
},
{
"condition_type": "handling_fee",
"total_amount": 1.16,
"currency": "USD"
}
],
"deliveries": [
{
"status_code": "allocated",
"status_date": "2024-10-02T15:26:53Z",
"status_descr": "",
"qty": 10,
"availability_date": "2024-10-07",
"no": "",
"item_no": "",
"delivery_qty": 0,
"creation_date": "",
"carrier_name": "",
"split_delivery_no": "",
"split_delivery_item_no": "",
"billings": []
}
],
"statuses": [
{
"type": "success",
"code": "",
"descr": "Your part has been created successfully"
}
]
}
]
}
]De plus, si la pièce est remplacée, les lignes_de_livraison contiennent les pièces expédiées en remplacement de la pièce commandée. Voir la section Remplacement ci-dessous pour plus d'informations.
Vous voyez dans l'exemple que les livraisons sont principalement vides.
C'est toujours le cas dans la charge utile de réponse renvoyée par le Créer service. Comme mentionné dans le Obtenir les commandes section, vous devez appeler le Obtenir service pour récupérer la commande de pièces mise à jour avec les livraisons propriétés mises à jour.
Une fois la commande de pièces entièrement traitée, le Obtenir service renvoie la commande de pièces complétée, et les livraisons propriétés sont disponibles, comme indiqué ci-dessous.
"deliveries": [
{
"status_code": "shipped",
"status_date": "2022-01-04T16:12:37.000Z",
"status_descr": null,
"qty": 1,
"availability_date": "2022-01-03",
"no": "8019846141",
"item_no": "000020",
"delivery_qty": 1,
"creation_date": "2022-01-03T09:33:59.000Z",
"carrier_name": "FEDEX",
"billings": [
{
"billing_no": "9026960406",
"billing_item_no": "002005",
"billing_creation_date": "2022-01-06T01:03:15.000Z",
"billing_qty": 1,
"is_cancelled": false
}
]
}Informations spéciales sur l'article
Kits (BOM)
Un kit (ou BOM) est un numéro de pièce qui est un ensemble de pièces vendues et expédiées ensemble.
Un exemple est la pièce 505074936, "AMORTISSEUR AVANT," pour une motoneige. Deux pièces sont expédiées au concessionnaire lorsqu'elles sont commandées, donc il y a trois articles dans le tableau d'articles .
👉 Il est essentiel d'afficher les informations dans l'objet shipping_lines au concessionnaire pour s'assurer que tous les articles expédiés dans le kit sont visibles.
La réponse suivante est renvoyée pour une commande avec le numéro de pièce 505074936 (certains champs sont supprimés pour simplifier l'exemple).
Comme indiqué, la réponse contient :
- Le premier élément a un ordered_line pour la pièce du kit et un vide shipping_lines. Les shipping_lines sont vides car aucune expédition n'est effectuée pour la pièce du kit.
- Chaque pièce du kit a un élément avec un ordered_line et un shipping_lines tableau avec les pièces étant expédiées.
{
"pac_order_id": "919f2871-ec31-4b4a-9218-e96516d88186",
"sales_order_no": "",
"creation_date": "2024-10-02T16:38:22Z",
"dealer_po_no": "PO 0001234",
"dealer_no": "0000690012",
"order_type": "regular",
... some fields removed ....
"items": [
{
"ordered_line": {
"item_id": "19afa98d-67f6-412c-88bc-99eda7740691",
"item_no": "000100",
"parent_item_no": "000000",
"product_code": "505074936",
"product_descr": "FRONT SHOCK",
"order_qty": 1,
"dealer_po_item_no": "",
"dealer_product_code": "",
"sales_uom": "PC",
"min_order_qty": 1,
"is_sales_bom": true,
"product_line": "SNO",
"product_type": "30",
"texts": [
{
"code": "memo_field",
"descr": "Kit part"
}
]
},
"shipping_lines": []
},
{
"ordered_line": {
"item_id": "",
"item_no": "000200",
"parent_item_no": "000100",
"product_code": "505074897",
"product_descr": "FRONT SHOCK",
"order_qty": 1,
"dealer_po_item_no": "",
"dealer_product_code": "",
"sales_uom": "PC",
"min_order_qty": 1,
"is_sales_bom": false,
"product_line": "SNO",
"product_type": "30",
"texts": []
},
"shipping_lines": [
{
"item_no": "000201",
"parent_item_no": "000200",
"product_code": "505074897",
"product_descr": "FRONT SHOCK",
"ship_qty": 1,
"sales_uom": "PC",
"price_uom": "PC",
"package_uom": "PC",
"in_package": {
"qty": 1,
"uom": "PC"
},
"package_count": 1,
"msrp_unit_price": 819.99,
"wholesale_unit_price": 573.98,
"net_unit_price": 573.98,
"currency": "USD",
"is_substitute_product": false,
... some fields removed ....
}
]
},
{
"ordered_line": {
"item_id": "",
"item_no": "000300",
"parent_item_no": "000100",
"product_code": "505074898",
"product_descr": "FRONT SHOCK",
"order_qty": 1,
"dealer_po_item_no": "",
"dealer_product_code": "",
"sales_uom": "PC",
"min_order_qty": 1,
"is_sales_bom": false,
"product_line": "SNO",
"product_type": "30",
"texts": []
},
"shipping_lines": [
{
"item_no": "000301",
"parent_item_no": "000300",
"product_code": "505074898",
"product_descr": "FRONT SHOCK",
"ship_qty": 1,
"sales_uom": "PC",
"price_uom": "PC",
"package_uom": "PC",
"in_package": {
"qty": 1,
"uom": "PC"
},
"package_count": 1,
"msrp_unit_price": 819.99,
"wholesale_unit_price": 573.98,
"net_unit_price": 573.98,
"currency": "USD",
"is_substitute_product": false,
... some fields removed ....
}
]
}
]
}👉 Notez ce qui suit pour les pièces incluses dans un kit, comme toute pièce.
- Le code_produit dans la ligne_d'expédition l'article peut être différent de la ligne_commandée code_produit. Cela se produit lorsque la pièce est automatiquement remplacée.
- Une pièce peut avoir plus d'une ligne_d'expédition dans un article. Cela se produit lorsque les pièces sont expédiées depuis différents entrepôts.
Paquet
Un paquet est une pièce qui est vendue uniquement dans une boîte avec une quantité spécifique. Par exemple, les rondelles sont généralement vendues en paquets : lorsque le revendeur en commande un, il reçoit un paquet de 10.
Dans l'exemple ci-dessous, le revendeur a commandé 2 pièces (20037), mais vous pouvez voir dans les lignes d'expédition qu'une quantité de 10 est expédiée.
"ordered_line": {
"item_id": "005056840C891EEE89B666B2DB26B162",
"item_no": "000100",
"product_code": "20037",
"product_descr": "Washers A4,3 DIN9021-St m Zne(1=10pcs)",
"order_qty": 10,
"dealer_po_item_no": "A-0010",
"dealer_product_code": "BRP-20037",
"sales_uom": "PC",
"min_order_qty": 1,
"is_sales_bom": false,
"product_line": "ATV",
"product_type": "30",
"texts": [
{
"code": "memo_field",
"descr": "Multi valid"
}
]
},
"shipping_lines": [
{
"item_no": "000101",
"product_code": "20037",
"product_descr": "Washers A4,3 DIN9021-St m Zne(1=10pcs)",
"ship_qty": 10,
"sales_uom": "PC",
"price_uom": "PC",
"package_uom": "PAC",
"in_package": {
"qty": 10,
"uom": "PC"
},
"package_count": 10,
"msrp_unit_price": 1.79,
"wholesale_unit_price": 1.09,
"net_unit_price": 1.11,
"currency": "USD",Supersession
Une supersession se produit lorsqu'une pièce est remplacée par une autre. Vous pouvez trouver une description complète de la supersession dans la Supersession de pièce section de la API des pièces page.
Si le concessionnaire commande une pièce remplacée, le lignes_d'expédition documente la pièce qui remplace la pièce remplacée.
Dans l'exemple, le concessionnaire a commandé la pièce 20104, qui est remplacée par la pièce 23408141. Le lignes_d'expédition indique que la pièce 20104 est remplacée (est_produit_substitut est vrai).
{
"ordered_line": {
"item_id": "005056840C891EEE89B644DA48AC301E",
"item_no": "000100",
"product_code": "20104",
"product_descr": "RONDELLE*FLAT WASHER",
"order_qty": 1,
"dealer_po_item_no": "A-0010",
"dealer_product_code": "BRP-20104",
"sales_uom": "PC",
"min_order_qty": 1,
"is_sales_bom": false,
"product_line": "SNO",
"product_type": "30",
"texts": [
{
"code": "memo_field",
"descr": "Multi valid"
}
]
},
"shipping_lines": [
{
"item_no": "000101",
"product_code": "234081410",
"product_descr": "FLAT WASHER 8 MM",
"ship_qty": 1,
"sales_uom": "PC",
"price_uom": "PC",
"package_uom": "PAC",
"in_package": {
"qty": 10,
"uom": "PC"
},
"package_count": 1,
"msrp_unit_price": 0.95,
"wholesale_unit_price": 0.57,
"net_unit_price": 0.57,
"currency": "CAD",
"is_substitute_product": true,
"substituted_product_code": "20104",
"product_line": "PTN",
"product_type": "30",
"plant": {
"name": "BRP - SAINT-JEAN-SUR-RICHELIEU",
"city": "ST-JEAN-SUR-RICHELIEU",
"state": "QC",
"country": "CA"
},
"pricings": [
{
"condition_type": "gross_amt",
"total_amount": 0.57,
"currency": "CAD"
},
{
"condition_type": "tax_amt",
"total_amount": 0.09,
"currency": "CAD"
},
{
"condition_type": "subtotal_amt",
"total_amount": 0.57,
"currency": "CAD"
}
],
"deliveries": [
{
"status_code": "allocated",
"status_date": "2023-07-18T17:29:04Z",
"status_descr": "",
"qty": 1,
"availability_date": "2023-07-20",
"no": "",
"item_no": "",
"delivery_qty": 0,
"creation_date": null,
"carrier_name": "",
"billings": []
}
],
"statuses": [
{
"type": "success",
"code": null,
"descr": "Your part has been created successfully"
}
]
}
]
}Récupération de la commande de pièces
Délai d'attente des commandes
Le Obtenir les commandes point de terminaison est utilisé pour récupérer une liste de commandes de pièces en fonction de critères, comme la date de création de la commande de pièces ou le statut de la commande.
Disons que vous souhaitez récupérer les commandes de pièces pour les 30 derniers jours pour un grand concessionnaire avec de nombreuses commandes de pièces de 50, 60 et plus d'articles. Votre DMS utilise l'appel suivant à l'API de commande de pièces.
curl --location 'https://cloud-api.brp.com/dcp/v4/parts/orders?dealer_no=0000690012&limit=100&creation_date_from=2024-01-01&creation_date_to=2024-02-01' \
--header 'Authorization-Dealer: THE_ACCESS_TOKEN' \
--header 'Authorization: Bearer REPLACE_ME'Disons que l'API de commande de pièces renvoie une erreur de délai d'attente 504 Gateway parce que SAP met trop de temps à répondre en arrière-plan.
Une option est de demander la commande de pièces pour une période plus courte, comme deux jours à la fois.
Cela pourrait fonctionner, mais l'API de commande de pièces peut toujours renvoyer un délai d'attente si de nombreuses grandes commandes de pièces sont créées en un jour.
👉 Lors des tests, nous avons également reçu l'erreur 413 Contenu trop volumineux, ce qui signifie que le backend a renvoyé une réponse plus grande que 10 Mo...
Résumé des commandes de pièces
La solution est de demander le résumé de la commande de pièces résumé au lieu de la réponse complète.
Le résumé de la commande de pièces est obtenu en utilisant le résumé paramètre de requête dans l'appel à l'Obtenir les commandes point de terminaison.
L'approche consiste à appeler le Obtenir les commandes point de terminaison pour obtenir la section d'en-tête de la commande de pièces.
curl --location 'https://cloud-api.brp.com/dcp/v4/parts/orders?dealer_no=0000690012&creation_date_from=2024-01-01&creation_date_to=2024-02-01&summary=header_status,pricing&limit=3' \
--header 'Authorization-Dealer: THE_ACCESS_TOKEN' \
--header 'Authorization: Bearer REPLACE_ME'Lorsque le concessionnaire souhaite voir les détails de la commande de pièces, vous appelez le Obtenir la commande point de terminaison pour récupérer la commande de pièces complète en utilisant le numéro de commande de vente.
curl --location 'https://cloud-api.brp.com/dcp/v4/parts/order/1030781664?dealer_no=0000690012' \
--header 'Authorization-Dealer: THE_ACCESS_TOKEN' \
--header 'Authorization: Bearer REPLACE_ME'