Boa tarde, Gostaria de tirar uma dúvida, como passar mais de um item no Json via integração Rest. Tentei implementar um exemplo daqui da comunidade, porém tive algumas dificuldades.
Datset responsável pela integração
function createDataset(fields, constraints, sortFields) {
var dataset = DatasetBuilder.newDataset();
dataset.addColumn("status");
dataset.addColumn("detalhe");
var parametros = data();
console.log(parametros);
if(constraints != null){
for(var i = 0; i < constraints.length; i++){
if(constraints[i].fieldName == "cFilialCp"){
parametros["cFilialCp"] = String(constraints[i].initialValue);
}
else if(constraints[i].fieldName == "cCodCli"){
parametros["cCodCli"] = String(constraints[i].initialValue);
}
}
}
var sendData = {
companyId: String(fluigAPI.getSecurityService().getCurrentTenantId()),
serviceCode: "REST",
endpoint: "/",
method: "POST",
params: parametros
}
var clientService = fluigAPI.getAuthorizeClientService();
var vo = clientService.invokeService(JSON.stringify(sendData));
var status = String(vo.getHttpStatusResult())
// Sucesso na integração
if(status == "200"){
dataset.addRow(new Array(
status,
"Oportunidade de Negócio Incluida/Alterada com sucesso"
));
}
// Erro de negocio na Integração
else if (status == "400"){
// Pegar o retorno da API
var parseResult = JSON.parse(vo.getResult());
// A partir do retorno pegar a mensagem de erro
var parseError = JSON.parse(parseResult.errorMessage);
// A partir da mensagem de erro, pegar somente os detalhes do erro
var msg = parseError.detailedMessage
dataset.addRow(new Array(
status,
msg
));
}
// Erro desconhecido/Forbidden
else {
dataset.addRow(new Array(
"403",
"Ops, aconteceu um erro desconhecido, por favor tente mais tarde."
));
}
return dataset;
}
function data(){
return {
"cFilialCp": "",
"cCodCli": "",
"item1":itens
}
}
Serviço
function servicetask2(attempt, message) {
try{
var cFilialCp = hAPI.getCardValue("oportFilial");
var cCodCli = hAPI.getCardValue("oportCodCliente");
var c1 = DatasetFactory.createConstraint("cFilialCp", cFilialCp, cFilialCp, ConstraintType.MUST);
var c2 = DatasetFactory.createConstraint("cCodCli", cCodCli, cCodCli, ConstraintType.MUST);
//Tentando mandar mais de um item
var indexes = hAPI.getChildrenIndexes("tb_Prospeccao_Veiculo");
var children = hAPI.getChildrenFromTable("tb_Prospeccao_Veiculo");
var itens = [];
for (var i = 0; i < indexes.length; i++) {
var index = indexes[i];
var item = {
"cFilGd" : String(hAPI.getCardValue("veicFilial___" + index)),
"cCodGd" : String(hAPI.getCardValue("veicCod___" + index)),
"cCodMarc" : parseInt(hAPI.getCardValue("veicMarca___" + index)),
"cModVei" : String(hAPI.getCardValue("veicModelo___" + index)),
"cQnt" : String(hAPI.getCardValue("veicQtd___" + index)),
"cOperFab" : String(hAPI.getCardValue("veicOpc___" + index)),
"cCodVend" : String(hAPI.getCardValue("veicVendedor___" + index))
}
itens.push(item);
}
var filtro = new Array(c1, c2, itens);
var dataset = DatasetFactory.getDataset("protheus_prospeccao", null, filtro, null);
if(dataset.getValue(0, "status") != "200"){
throw dataset.getValue(0, "detalhe");
}
} catch(e){
log.info("Erro: " + e);
throw("Houve um erro na integração:" + e);
}
}
A estrutura do JSON que preciso enviar
{
"cFilialCp":"",
"cCodCli":"",
"item1":{
"cFilGd":"",
"cCodGd":"",
"cCodMarc":"",
"cModVei":"",
"cQnt":"",
"cOperFab":"",
"cDateInt":"",
"cDateLimt":"",
"cCodVend":"",
"cTipoCon":""
},
"item2":{
"cFilGd":"",
"cCodGd":"",
"cCodMarc":"",
"cModVei":"",
"cQnt":"",
"cOperFab":"",
"cDateInt":"",
"cDateLimt":"",
"cCodVend":"",
"cTipoCon":""
}
}