Guia do desenvolvedor da Open API do pedido de produto
Use a API Aberto de pedido de produto para criar, atualizar e recuperar informações de pedido de produto.
Este guia do desenvolvedor fornece informações sobre como estender o API aberta de pedido de produto para fazer várias personalizações.
Como estender a API aberta do pedido de produto
A API Aberta de pedido de produto pode ser estendida editando inclusões de script.
- TMFProductOrderAPIUtil: contém funções para lidar com solicitações POST.
- TMFProductOrderGetAPIUtil: contém funções para lidar com solicitações GET.
- ProductOrderExtensionOOB: contém funções de ajuda que oferecem suporte a funções em TMFProductOrderAPIUtil e TMFProductOrderGetAPIUtil.
- ProductOrderProcessor: um arquivo de inclusão de script vazio. Use este arquivo para definir as funções que você deseja substituir de ProductOrderExtensionOOB.
Estenda a API aberta do pedido de produto para fazer as seguintes personalizações.
Parâmetros obrigatórios
Para mudar quais parâmetros do corpo da solicitação são necessários ou não para criar um pedido de produto, substitua a função getProductOrderSchema() contida na inclusão de script ProductOrderExtensionOOB.
A função getProductOrderSchema() lê o esquema da inclusão de script TMFOrderAPIConstants. TMFOrderAPIConstants está protegido e não pode ser editado, portanto, você não pode apenas atualizar o esquema. Em vez disso, um novo esquema deve ser lido de um arquivo diferente. Você pode substituir getProductOrderSchema() para ler um novo esquema. Para substituir getProductOrderSchema(), grave uma função com o mesmo nome na inclusão de script ProductOrderProcessor. A nova função em ProductOrderProcessor será chamada por TMFProductOrderAPIUtil para substituir a função getProductOrderSchema() padrão em ProductOrderExtensionOOB.
getProductOrderSchema() retorna um esquema personalizado que está definido em um novo arquivo de constante. // 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'
});Solicitar validação do corpo
verdadeiro por padrão.validPostRequest()— Chamado porprocessCreateOrder()em TMFProductOrderAPIUtil.validProductObj()— Chamado porprocessCreateOrder()em TMFProductOrderAPIUtil.validRelatedPartyObj()— Chamado porprocessCreateOrder()em TMFProductOrderAPIUtil.validGetRequest()— Chamado porprocessGetOrder()em TMFProductOrderGetAPIUtil.
falso, ela interromperá a operação de API. Para aplicar a validação personalizada, substitua as funções auxiliares ProductOrderExtensionOOB criando funções com nomes e parâmetros idênticos em ProductOrderProcessor. Essas novas funções ProductOrderProcessor serão chamadas por TMFProductOrderAPIUtil e TMFProductOrderGetAPIUtil para substituir as funções auxiliares ProductOrderExtensionOOB padrão.// 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'
});Operações REST adicionais
Para criar operações adicionais além das operações GET e POST existentes, crie recursos REST de script adicionais para a API aberta de pedido de produto. A lógica dos novos recursos REST de script deve ser consistente com as operações existentes. Defina funções para as novas operações em uma nova inclusão de script.
Mapeamento de campo
Ao criar registros, a API mapeia os parâmetros do corpo da solicitação para campos de registro. Ao recuperar registros, a API mapeia campos de registro para atributos de objeto de resposta.
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'
});