Como passar mais de um item no Json via integração Rest

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":""
   }
}
compartilhar
  1. Você vai ver essas setas em qualquer página de pergunta. Com elas, você pode dizer se uma pergunta ou uma resposta foram relevantes ou não.
  2. Edite sua pergunta ou resposta caso queira alterar ou adicionar detalhes.
  3. Caso haja alguma dúvida sobre a pergunta, adicione um comentário. O espaço de respostas deve ser utilizado apenas para responder a pergunta.
  4. Se o autor da pergunta marcar uma resposta como solucionada, esta marca aparecerá.
  5. Clique aqui para mais detalhes sobre o funcionamento do fluig Forum!

0 resposta

Não é a resposta que estava procurando? Procure outras perguntas com as tags rest protheus integracao ou faça a sua própria pergunta.