Commande de produit Open API Developer Guide
Utilisez l’API Commande de produit ouverte pour créer, mettre à jour et récupérer des informations sur les commandes de produits.
Ce guide développeur fournit des informations sur la façon d’étendre le API ouverte pour la commande de produits pour effectuer diverses personnalisations.
Extension de l’API ouverte de la commande de produits
L’API Product Order Open peut être étendue en modifiant des script includes.
- TMFProductOrderAPIUtil : contient des fonctions pour gérer les requêtes POST.
- TMFProductOrderGetAPIUtil : contient des fonctions pour gérer les demandes GET.
- ProductOrderExtensionOOB : contient des fonctions d’assistance qui prennent en charge les fonctions dans TMFProductOrderAPIUtil et TMFProductOrderGetAPIUtil.
- ProductOrderProcessor : fichier de script include vide. Utilisez ce fichier pour définir toutes les fonctions que vous souhaitez remplacer à partir de ProductOrderExtensionOOB.
Étendez l’API ouverte de la commande de produit pour effectuer les personnalisations suivantes.
Paramètres requis
Pour modifier les paramètres de corps de demande requis ou non pour créer une commande de produits, remplacez la fonction getProductOrderSchema() contenue dans le script include ProductOrderExtensionOOB .
La fonction getProductOrderSchema() lit le schéma à partir du script include TMFOrderAPIConstants . TMFOrderAPIConstants est protégé et ne peut pas être modifié, vous ne pouvez donc pas simplement mettre à jour le schéma. Au lieu de cela, un nouveau schéma doit être lu à partir d’un fichier différent. Vous pouvez contourner getProductOrderSchema() pour lire un nouveau schéma. Pour remplacer getProductOrderSchema(), écrivez une fonction portant le même nom dans le script include ProductOrderProcessor . La nouvelle fonction de ProductOrderProcessor sera appelée par TMFProductOrderAPIUtil pour remplacer la fonction getProductOrderSchema() par défaut dans ProductOrderExtensionOOB.
getProductOrderSchema() renvoie un schéma personnalisé qui est défini dans un nouveau fichier de constantes. // ProductOrderProcessor
var ProductOrderProcessor = Class.create();
ProductOrderProcessor.prototype = Object.extendsObject(ProductOrderExtensionOOB, {
// Define overriding functions here
// Function name and parameters must be identical to the function it overrides
getProductOrderSchema: function() {
//Define your own custom schema in a new constant file
return JSON.parse(Constants.SCHEMA.CREATE_PRODUCT_ORDER);
},
type: 'ProductOrderProcessor'
});Validation du corps de la demande
true par défaut.validatePostRequest()- Appelé parprocessCreateOrder()dans TMFProductOrderAPIUtil.validateProductObj(): appelé parprocessCreateOrder()dans TMFProductOrderAPIUtil.validateRelatedPartyObj(): appelé parprocessCreateOrder()dans TMFProductOrderAPIUtil.validateGetRequest()- Appelé parprocessGetOrder()dans TMFProductOrderGetAPIUtil.
la valeur false, elle arrête le fonctionnement de l’API. Pour appliquer une validation personnalisée, remplacez les fonctions d’assistance ProductOrderExtensionOOB en créant des fonctions avec des noms et des paramètres identiques dans ProductOrderProcessor. Ces nouvelles fonctions ProductOrderProcessor seront appelées par TMFProductOrderAPIUtil et TMFProductOrderGetAPIUtil pour remplacer les fonctions d’assistance ProductOrderExtensionOOB par défaut.// ProductOrderProcessor
var ProductOrderProcessor = Class.create();
ProductOrderProcessor.prototype = Object.extendsObject(ProductOrderExtensionOOB, {
// Define overriding functions here
// Function name and parameters must be identical to the function it overrides
validatePostRequest: function(orderObject, details) {
// Returning false terminates the POST request
// Make sure to push error message in details array in case of error
if (gs.nil(orderObject.productOrderItem)) {
details.push(new TMFCommonOrderAPIUtil().getErrorDetailsObj(TMFOrderAPIConstants.MESSAGES.MISSING_ORDER_ITEM, '/'));
return false;
}
return true;
},
type: 'ProductOrderProcessor'
});Opérations REST supplémentaires
Pour créer des opérations supplémentaires au-delà des opérations GET et POST existantes, créez des ressources REST scriptées supplémentaires pour l’API Product Order Open. La logique des nouvelles ressources REST scriptées doit être cohérente avec les opérations existantes. Définissez les fonctions pour les nouvelles opérations dans un nouveau script include.
Mappage de champs
Lors de la création d’enregistrements, l’API mappe les paramètres du corps de la demande aux champs d’enregistrement. Lors de la récupération des enregistrements, l’API mappe les champs d’enregistrement aux attributs d’objet de réponse.
transformOrderGr()transformOrdLineItemGr()getLineItemPrice()transformPriceOrderTypeAndState()transformCustLineItmContact()transformOrderItemChar()
transformPostOrderResponse()transformGetOrderResponse()transformProductObj()transformRelatedPartyCustomerLineItem()transformOrderItemRelationship()transformGetOrdLineItmResponse()transformProductCharacteristics()transformProductSpecification()
// ProductOrderProcessor
var ProductOrderProcessor = Class.create();
ProductOrderProcessor.prototype = Object.extendsObject(ProductOrderExtensionOOB, {
// Define overriding functions here
// Function name and parameters must be identical to the function it overrides
transformOrderGr: function(requestObject, orderGr) {
orderGr.external_id = requestObject.externalId;
return orderGr;
},
transformPostOrderResponse: function(orderObject, orderGr) {
orderObject.id = orderGr.getValue('sys_id');
return orderObject;
},
type: 'ProductOrderProcessor'
});