Criei um Dataset que será executado todo dia, ele deverá ler uma tabela do Banco de Dados e copiar essas informações para o Dataset.
Criei o Dataset e codifiquei os métodos defineStructure, onSync e createDataset. Segue o código abaixo.
function defineStructure() {
addColumn("AGENDA", DatasetFieldType.NUMBER);
addColumn("TIPO_AGENDA");
addColumn("ORIGEM_COD", DatasetFieldType.NUMBER);
addColumn("ORIGEM_DV", DatasetFieldType.NUMBER);
addColumn("DESTINO_COD", DatasetFieldType.NUMBER);
addColumn("DESTINO_DV", DatasetFieldType.NUMBER);
addColumn("NOTA", DatasetFieldType.NUMBER);
addColumn("SERIE");
addColumn("DATA_AGENDA", DatasetFieldType.DATE);
addColumn("TIPO_NOTA");
addColumn("FISCAL_COD", DatasetFieldType.NUMBER);
addColumn("CFOP", DatasetFieldType.NUMBER);
addColumn("COND_PGTO", DatasetFieldType.NUMBER);
setKey([ "AGENDA", "NOTA", "DATA_AGENDA" ]);
addIndex([ "ORIGEM_COD" ]);
addIndex([ "DESTINO_COD" ]);
addIndex([ "NOTA", "ORIGEM_COD", "DATA_AGENDA" ]);
}
function onSync(lastSyncDate) {
var dataset = DatasetBuilder.newDataset();
// Consulta Dataset Fiscal para pegar as Notas de Assistencia Tecnica
var const_fiscal = new Array();
const_fiscal.push(DatasetFactory.createConstraint("FIS_DTA_AGENDA", '01/09/2018', '01/09/2018', ConstraintType.MUST));
//const_fiscal.push(DatasetFactory.createConstraint("FIS_DTA_AGENDA", lastSyncDate, lastSyncDate, ConstraintType.MUST));
var ds_fiscal = DatasetFactory.getDataset("ds_aa1cfisc", null, const_fiscal, null);
// Valida se retornou resultado a consulta
if (ds_fiscal != null && ds_fiscal.values != null && ds_fiscal.values.length > 0) {
var records = ds_fiscal.values;
for ( var index in records ) {
var record = records[index];
dataset.addRow(new Array(record.AGENDA, record.TIPO_AGENDA, record.ORIGEM_COD, record.ORIGEM_DV, record.DESTINO_COD, record.DESTINO_DV,
record.NOTA, record.SERIE, record.DATA_AGENDA, record.TIPO_NOTA, record.FISCAL_COD, record.CFOP, record.COND_PGTO));
}
return dataset;
}
}
function createDataset(fields, constraints, sortFields) {
var dataset = DatasetBuilder.newDataset();
dataset.addColumn("AGENDA", DatasetFieldType.NUMBER);
dataset.addColumn("TIPO_AGENDA");
dataset.addColumn("ORIGEM_COD", DatasetFieldType.NUMBER);
dataset.addColumn("ORIGEM_DV", DatasetFieldType.NUMBER);
dataset.addColumn("DESTINO_COD", DatasetFieldType.NUMBER);
dataset.addColumn("DESTINO_DV", DatasetFieldType.NUMBER);
dataset.addColumn("NOTA", DatasetFieldType.NUMBER);
dataset.addColumn("SERIE");
dataset.addColumn("DATA_AGENDA", DatasetFieldType.DATE);
dataset.addColumn("TIPO_NOTA");
dataset.addColumn("FISCAL_COD", DatasetFieldType.NUMBER);
dataset.addColumn("CFOP", DatasetFieldType.NUMBER);
dataset.addColumn("COND_PGTO", DatasetFieldType.NUMBER);
// Consulta Dataset Fiscal para pegar as Notas de Assistencia Tecnica
var const_fiscal = new Array();
const_fiscal.push(DatasetFactory.createConstraint("FIS_DTA_AGENDA", '01/09/2018', '01/09/2018', ConstraintType.MUST));
//const_fiscal.push(DatasetFactory.createConstraint("FIS_DTA_AGENDA", lastSyncDate, lastSyncDate, ConstraintType.MUST));
var ds_fiscal = DatasetFactory.getDataset("ds_aa1cfisc", null, const_fiscal, null);
// Valida se retornou resultado a consulta
if (ds_fiscal != null && ds_fiscal.values != null && ds_fiscal.values.length > 0) {
var records = ds_fiscal.values;
for ( var index in records ) {
var record = records[index];
dataset.addRow(new Array(record.AGENDA, record.TIPO_AGENDA, record.ORIGEM_COD, record.ORIGEM_DV, record.DESTINO_COD, record.DESTINO_DV,
record.NOTA, record.SERIE, record.DATA_AGENDA, record.TIPO_NOTA, record.FISCAL_COD, record.CFOP, record.COND_PGTO));
}
return dataset;
}
else {
return null;
}
}
Porém, no log do Servidor fica dando o seguinte erro:
Executando evento : onSyncERRO AO EXECUTAR SCRIPT -> NOK - sun.org.mozilla.javascript.internal.EvaluatorException: Java class "[Ljava.lang.Object;" has no public instance field or method named "AGENDA". (#33) in at line number 33
Gostaria que me ajudassem a entender esse erro, pois já vi e revi o código e não consigo mais identificar onde alterar para corrigir esse erro.