152 lines
4.7 KiB
JavaScript
152 lines
4.7 KiB
JavaScript
function createDataset(fields, constraints, sortFields) {
|
|
var ds = DatasetBuilder.newDataset();
|
|
ds.addColumn("documentid");
|
|
ds.addColumn("dataAuditoria");
|
|
ds.addColumn("dataLimite");
|
|
ds.addColumn("ciclo");
|
|
ds.addColumn("auditor");
|
|
ds.addColumn("usuarioRetorno");
|
|
ds.addColumn("responsavelLoja");
|
|
ds.addColumn("loja");
|
|
ds.addColumn("regional");
|
|
ds.addColumn("saidaAnalise");
|
|
ds.addColumn("status");
|
|
ds.addColumn("qtdNaoConforme");
|
|
ds.addColumn("listaNaoConforme");
|
|
|
|
try {
|
|
var filtros = parseConstraints(constraints);
|
|
var formDs = DatasetFactory.getDataset("checklist", null, null, null);
|
|
if (!formDs || formDs.rowsCount < 1) {
|
|
return ds;
|
|
}
|
|
|
|
var linhas = [];
|
|
|
|
for (var i = 0; i < formDs.rowsCount; i++) {
|
|
var status = val(formDs, i, "saidaAnalise").toUpperCase();
|
|
if (status !== "CONFORME" && status !== "NAO_CONFORME") {
|
|
continue;
|
|
}
|
|
|
|
var dataAuditoria = val(formDs, i, "dataAuditoria");
|
|
var dataLimite = val(formDs, i, "dataLimite");
|
|
var ciclo = val(formDs, i, "ciclo");
|
|
var regional = val(formDs, i, "regional");
|
|
var loja = val(formDs, i, "loja");
|
|
|
|
if (filtros.loja && norm(loja).indexOf(norm(filtros.loja)) === -1) {
|
|
continue;
|
|
}
|
|
if (filtros.ciclo && norm(ciclo).indexOf(norm(filtros.ciclo)) === -1) {
|
|
continue;
|
|
}
|
|
if (filtros.regional && norm(regional).indexOf(norm(filtros.regional)) === -1) {
|
|
continue;
|
|
}
|
|
if (filtros.dataInicio || filtros.dataFim) {
|
|
var faixaAuditoria = dataNaFaixa(dataAuditoria, filtros.dataInicio, filtros.dataFim);
|
|
var faixaLimite = dataNaFaixa(dataLimite, filtros.dataInicio, filtros.dataFim);
|
|
if (!faixaAuditoria && !faixaLimite) {
|
|
continue;
|
|
}
|
|
}
|
|
|
|
linhas.push({
|
|
documentid: val(formDs, i, "documentid"),
|
|
dataAuditoria: dataAuditoria,
|
|
dataLimite: dataLimite,
|
|
ciclo: ciclo,
|
|
auditor: val(formDs, i, "auditor"),
|
|
usuarioRetorno: val(formDs, i, "usuarioRetorno"),
|
|
responsavelLoja: val(formDs, i, "responsavelLoja"),
|
|
loja: loja,
|
|
regional: regional,
|
|
saidaAnalise: status,
|
|
status: status,
|
|
qtdNaoConforme: val(formDs, i, "qtdNaoConforme"),
|
|
listaNaoConforme: val(formDs, i, "listaNaoConforme")
|
|
});
|
|
}
|
|
|
|
linhas.sort(function (a, b) {
|
|
if (a.dataAuditoria < b.dataAuditoria) return 1;
|
|
if (a.dataAuditoria > b.dataAuditoria) return -1;
|
|
if (a.documentid < b.documentid) return 1;
|
|
if (a.documentid > b.documentid) return -1;
|
|
return 0;
|
|
});
|
|
|
|
for (var j = 0; j < linhas.length; j++) {
|
|
var r = linhas[j];
|
|
ds.addRow([
|
|
r.documentid,
|
|
r.dataAuditoria,
|
|
r.dataLimite,
|
|
r.ciclo,
|
|
r.auditor,
|
|
r.usuarioRetorno,
|
|
r.responsavelLoja,
|
|
r.loja,
|
|
r.regional,
|
|
r.saidaAnalise,
|
|
r.status,
|
|
r.qtdNaoConforme,
|
|
r.listaNaoConforme
|
|
]);
|
|
}
|
|
} catch (e) {
|
|
ds = DatasetBuilder.newDataset();
|
|
ds.addColumn("ERRO");
|
|
ds.addRow([String(e)]);
|
|
}
|
|
|
|
return ds;
|
|
}
|
|
|
|
function parseConstraints(constraints) {
|
|
var out = {
|
|
dataInicio: "",
|
|
dataFim: "",
|
|
loja: "",
|
|
ciclo: "",
|
|
regional: ""
|
|
};
|
|
|
|
if (!constraints) return out;
|
|
|
|
for (var i = 0; i < constraints.length; i++) {
|
|
var c = constraints[i];
|
|
if (!c) continue;
|
|
|
|
var name = String(c.fieldName || c._field || "");
|
|
var value = String(c.initialValue || c._initialValue || "").trim();
|
|
if (!name || !value) continue;
|
|
|
|
if (name === "dataInicio") out.dataInicio = value;
|
|
if (name === "dataFim") out.dataFim = value;
|
|
if (name === "loja") out.loja = value;
|
|
if (name === "ciclo") out.ciclo = value;
|
|
if (name === "regional") out.regional = value;
|
|
}
|
|
|
|
return out;
|
|
}
|
|
|
|
function val(ds, row, col) {
|
|
var v = ds.getValue(row, col);
|
|
return String(v == null ? "" : v).trim();
|
|
}
|
|
|
|
function norm(v) {
|
|
return String(v || "").toLowerCase().trim();
|
|
}
|
|
|
|
function dataNaFaixa(data, inicio, fim) {
|
|
var d = String(data || "").trim();
|
|
if (!d) return false;
|
|
if (inicio && d < inicio) return false;
|
|
if (fim && d > fim) return false;
|
|
return true;
|
|
}
|