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;
}
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 2018Diogo, 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.
— FLUIG MAN 24 de Jul de 2018Acho 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