Pesquisa dupla no campo ZOOM

Caros, Como realizar uma pesquisa de duas informações que estão no fiedlname do zoom. Por exemplo num campo que me retorna uma cadastro de cliente eu quero digitar tanto nome como cpf no zoom me retornar a pesquisa.

Campo zoom do Formulário:

  <input
             type="zoom" 
             id = "Id_fcfo_nomefantasia"
             name="nm_fcfo_nomefantasia"
             data-zoom="{
                    'displayKey':'NOME',
                    'datasetId':'ds_totvs_fcfo_sgc',
                    'fields':[
                        {
                            'field':'CODCFO',
                            'label':'Código'
                        },{
                            'field':'NOME',
                            'label':'Nome',
                            'search':'true'
                        },{
                            'field':'CGCCFO',
                            'label':'CPF/CNPJ',
                            'standard':'true',
                            'search':'true'
                        },{
                            'field':'PESSOAFISOUJUR',
                            'label':'Tipo',
                            'standard':'true'
                        }
                    ]
             }"  />

Dataset do Campo zoom acima:

/***********************************************************************************************
* @Nome            ds_totvs_fcfo_sgc
* @author         Italo Ribeiro
* @data           04/07/2017
* @Descricao    Listar os Fornecedores cadastrados consulta SQL RM
* @Ambiente     Homologacao
***********************************************************************************************/

function createDataset(fields, constraints, sortFields) {
    log.info("X-10");
    var INTEGRADOR = "webservice.FLUIG"; log.info("X-11");
    var SENHA = "fluig@2017"; log.info("X-12");
    var NOME_SERVICO = "wsconsultasql"; log.info("X-13");
    var CAMINHO_SERVICO = "com.totvs.WsConsultaSQL"; log.info("X-14");
    var COLUNAS = new Array("CODCFO","NOME","CGCCFO","PESSOAFISOUJUR"); log.info("X-15");

    var dataset = DatasetBuilder.newDataset(); log.info("X-17");

    for (var i=0; i < COLUNAS.length; i++ ) { 
    log.info("X-21");
        dataset.addColumn(COLUNAS[i]);
    }
    log.info("X-24");

    var filtroNome;
    var filtroId;


     if (constraints != null) {

         for (var i = 0; i < constraints.length; i++) {

         if (constraints[i].fieldName == "NOME") {

         filtroNome += " AND NOME like UPPER('%" +constraints[i].initialValue + "%')";

             } else if (constraints[i].fieldName == "CGCCFO") { 

         filtroId += " AND CGCCFO like UPPER('%" +constraints[i].initialValue + "%')";

           }


         }

     }

     var CREDENCIAMENTO = "1";
     var PARAMS="CREDENCIAMENTO="+CREDENCIAMENTO;

     log.info("X-38");

    var servico = ServiceManager.getService(NOME_SERVICO);
    var instancia = servico.instantiate(CAMINHO_SERVICO);
    var ws = instancia.getRMIwsConsultaSQL();
    var serviceHelper = servico.getBean();
    var authService = serviceHelper.getBasicAuthenticatedClient(ws, "com.totvs.IwsConsultaSQL",INTEGRADOR, SENHA);
    var result = authService.realizarConsultaSQL("TOTVS.F006.03", 1, "F", PARAMS);
    var JSONObj = org.json.XML.toJSONObject(result);
    var dados = JSONObj.get("NewDataSet").get("Resultado");
    log.info("X-48");

    for (var i = 0; i < dados.length(); i++) {
        var registro = dados.get(i);
        dataset.addRow(new Array(

                registro.get("CODCFO"),
                registro.get("NOME"),
                registro.get("CGCCFO"),
                registro.get("PESSOAFISOUJUR")




                           )
        );

    }
    log.info("X-61");
    return dataset;
}
compartilhar
  • Boa tarde Italo, creio que teria que adicionar o valor das constraints na sua variável PARAMS, só não sei como que ficaria isso para utilizar como LIKE na consulta, se seria só colocar o % mesmo tipo var PARAMS="CREDENCIAMENTO="+CREDENCIAMENTO+";NOME=%"+NOME+"%";.

    Diogo Boegershausen   24 de Jul de 2018
  • Diogo, não preciso passar, eu fixei o valor, é pra ficar assim mesmo, somente credenciado do tipo 1. Eu preciso entender como fazer com que se eu digitar tanto CPF ou Nome ele retorna na pesquisa. Ja vi o filtervalues mas nao funcionou.

    ITALO MOTA RIBEIRO   24 de Jul de 2018
  • Acho que o zoom interno só permite buscar em um campo que geralmente é o que você informa ali no displayKey no seu caso é o NOME, talvez com o zoom externo que Felipe citou ali na resposta você consiga utilizar mais de um campo.

    Diogo Boegershausen   24 de Jul de 2018
  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!

3 respostas

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