Tenho um Dataset customizado que roda uma consulta no RM
function createDataset(fields, constraints, sortFields) {
var NOME_SERVICO = "WSCONSSQL";
var CAMINHO_SERVICO = "com.totvs.WsConsultaSQL";
var dataset = DatasetBuilder.newDataset();
try{
var servico = ServiceManager.getServiceInstance(NOME_SERVICO);
log.info("Servico: " + servico);
log.info("Iniciando...");
var serviceHelper = servico.getBean();
log.info("Helper: " + serviceHelper);
var instancia = servico.instantiate(CAMINHO_SERVICO);
log.info("Instancia: " + instancia);
var ws = instancia.getRMIwsConsultaSQL();
log.info("WS: " + ws);
var processo = getValue("WKNumProces"); //Número da solicitação de processo. PROBLEMA!!!!
log.info("Processo: " + processo);
//var serviceHelper = servico.getBean();
var authService = serviceHelper.getBasicAuthenticatedClient(ws, "com.totvs.IwsConsultaSQL", 'usuario', 'senha');
//log.info("Params: " + "NSEQITMMOV="+fields[3]+ ";CODCOLIGADA="+fields[1] + ";IDMOV="+fields[0] + ";TIPOAPROVACAOFLUIG="+fields[2]+ ";VALORLIQUIDO="+fields[4]);
// Executa uma consulta previamente disponibilizada e cadastrada no RM
var result = authService.realizarConsultaSQL("BORDERO", 1, "F", "IDFLUIG="+processo);
log.info("result BORDERO: " + result);
if ((result != null) && (result.indexOf("===") != -1))
{
var msgErro = result.substring(0, result.indexOf("==="));
throw msgErro;
}
var xmlResultados = new XML(result);
dataset.addColumn("IDFLUIG");
dataset.addColumn("IDBORDERO");
dataset.addColumn("DESC_BORDERO");
dataset.addColumn("IDLAN");
dataset.addColumn("FAVORECIDO");
dataset.addColumn("NUMERODOCUMENTO");
dataset.addColumn("DATAPREVBAIXA");
dataset.addColumn("DATAVENCIMENTO");
dataset.addColumn("VALORORIGINAL");
dataset.addColumn("VALORLIQUIDO");
for each(lan in xmlResultados.Resultado) {
dataset.addRow(new Array(lan.IDFLUIG.toString(),
lan.IDBORDERO.toString(),
lan.DESC_BORDERO.toString(),
lan.IDLAN.toString(),
lan.FAVORECIDO.toString(),
lan.NUMERODOCUMENTO.toString(),
lan.DATAPREVBAIXA.toString(),
lan.DATAVENCIMENTO.toString(),
lan.VALORORIGINAL.toString(),
lan.VALORLIQUIDO.toString()));
}
return dataset;
}
catch (e)
{
if (e == null)
e = "Erro desconhecido, verifique o log do AppServer.";
var mensagemErro = "Erro na comunicação com o TOTVS TBC: " + e;
log.error(mensagemErro);
dataset.addColumn("ERROR");
dataset.addRow(new Array(mensagemErro));
return dataset;
}
}
function ValidaCampo(campo, valor)
{
if ((valor != null) && (valor != ""))
{
return "<"+campo+">"+valor+"</"+ campo + "> ";
}
else
return "";
}
function parseContext(constraints)
{
var context = "";
if ((constraints != null) && (constraints.length > 0) && (constraints[0].getFieldName() == "RMSContext"))
{
context = constraints[0].getInitialValue();
}
return context;
}
// Transforma o conceito de constraints do Fluig para o Filtro do TBC.
function parseConstraints(constraints)
{
var filter = "";
for each(con in constraints) {
if (con.getFieldName().toUpperCase() == "RMSCONTEXT")
continue;
filter += "(";
if (con.getFieldName().toUpperCase() == "RMSFILTER")
{
filter += con.getInitialValue();
}
else if (con.getConstraintType() == ConstraintType.SHOULD)
{
filter += "(";
filter += con.getFieldName();
filter += "=";
filter += con.getInitialValue();
filter += ")";
filter += " OR ";
filter += "(";
filter += con.getFieldName();
filter += "=";
filter += con.getFinalValue()();
filter += ")";
}
else
{
if (con.getInitialValue() == con.getFinalValue())
{
filter += con.getFieldName();
if (ConstraintType.MUST == con.getConstraintType())
{
filter += " = ";
}
else if (ConstraintType.MUST_NOT == con.getConstraintType())
{
filter += " <> ";
}
filter += con.getInitialValue();
}
else
{
filter += con.getFieldName();
filter += " BETWEEN ";
filter += con.getInitialValue();
filter += " AND ";
filter += con.getFinalValue()
}
}
filter += ")";
filter += " AND ";
}
if (filter.length == 0)
{
filter = "1=1";
}
else
filter = filter.substring(0, filter.length-5);
return filter;
}
Criei um script no form que apresenta o resultado em dataTable, mas o filtro não funciona
<script>
// Preparacao de filtro para consulta
var constraint = DatasetFactory.createConstraint("IDFLUIG", processo, processo, ConstraintType.MUST);
var filtros = new Array(constraint);
// coleta dados do dataset, utlizando filtro
var datasetReturned = DatasetFactory.getDataset("RM_DS_BORDERO", null, filtros, null);
var records = datasetReturned.values;
mydata = [];
for (var index in records) {
var record = records[index];
mydata.push({
Documento: record.NUMERODOCUMENTO,
Favorecido: record.FAVORECIDO,
ValorLiquido: record.VALORLIQUIDO,
noResults: false
});
}
// preenchimento da tabela do formulario
var myTable = FLUIGC.datatable('#target', {
dataRequest: mydata,
renderContent: ['Documento', 'Favorecido', 'ValorLiquido'],
header: [
{'title': 'Número Doc.'},
{'title': 'Favorecido'},
{'title': 'Valor Líquido'}
]
}, function(err, data) {
// DO SOMETHING (error or success)
});
</script>