att produção
This commit is contained in:
@@ -0,0 +1,209 @@
|
||||
function createDataset(fields, constraints, sortFields) {
|
||||
var dataset = DatasetBuilder.newDataset();
|
||||
|
||||
dataset.addColumn("PDV");
|
||||
dataset.addColumn("LOJA");
|
||||
dataset.addColumn("RESPONSAVEL_LOJA");
|
||||
dataset.addColumn("REGIONAL");
|
||||
dataset.addColumn("UF");
|
||||
dataset.addColumn("CIDADE");
|
||||
dataset.addColumn("STATUS");
|
||||
dataset.addColumn("CANAL");
|
||||
dataset.addColumn("ID");
|
||||
dataset.addColumn("LOGIN_LOJA");
|
||||
dataset.addColumn("COLLEAGUE_ID");
|
||||
dataset.addColumn("USER_CREATE");
|
||||
|
||||
try {
|
||||
var clientService = fluigAPI.getAuthorizeClientService();
|
||||
var data = {
|
||||
companyId: String(getValue("WKCompany") || "1"),
|
||||
serviceCode: "GINSENG APITESTE", // ajuste para o codigo do servico cadastrado no Fluig
|
||||
endpoint: "/base_pdvs",
|
||||
method: "get",
|
||||
timeoutService: "60000",
|
||||
params: {}
|
||||
};
|
||||
|
||||
var vo = clientService.invoke(JSON.stringify(data));
|
||||
var statusHttp = vo ? String(vo.getHttpStatusResult() || "") : "";
|
||||
var retorno = vo ? String(vo.getResult() || "") : "";
|
||||
|
||||
if (!retorno) {
|
||||
dataset.addRow(["", "Sem resposta da API (HTTP " + statusHttp + ")", "", "", "", "", "", "", "", "", "", ""]);
|
||||
return dataset;
|
||||
}
|
||||
|
||||
var objData = JSON.parse(retorno);
|
||||
var success = !!objData.success;
|
||||
var itens = objData.data || [];
|
||||
|
||||
if (!success || !itens.length) {
|
||||
var msg = trim(objData.message) || trim(objData.error) || "Sem lojas retornadas";
|
||||
dataset.addRow(["", msg + " (HTTP " + statusHttp + ")", "", "", "", "", "", "", "", "", "", ""]);
|
||||
return dataset;
|
||||
}
|
||||
|
||||
var filtros = parseConstraints(constraints);
|
||||
var colleagueCache = {};
|
||||
|
||||
for (var i = 0; i < itens.length; i++) {
|
||||
var item = itens[i] || {};
|
||||
|
||||
var pdv = trim(item["PDV"]);
|
||||
var loja = trim(item["PDV DESC"]);
|
||||
var responsavel = trim(item["GESTAO"]) || trim(item["GESTAO"]);
|
||||
var regional = trim(item["SUPERVISOR"]) || trim(item["SUPERVISOR"]);
|
||||
var uf = trim(item["UF"]);
|
||||
var cidade = trim(item["CIDADE"]);
|
||||
var status = trim(item["STATUS"]);
|
||||
var canal = trim(item["CANAL"]);
|
||||
var id = trim(item["id"]);
|
||||
var loginLoja = pdv ? (pdv + ".ginseng") : "";
|
||||
var colleagueId = resolveColleagueIdByLogin(loginLoja);
|
||||
var userCreate = getUserCreateStatus(loginLoja, colleagueCache);
|
||||
|
||||
if (filtros.onlyAtivo && status.toUpperCase() !== "ATIVO") {
|
||||
continue;
|
||||
}
|
||||
if (filtros.pdv && pdv !== filtros.pdv) {
|
||||
continue;
|
||||
}
|
||||
if (filtros.loja && normalize(loja).indexOf(normalize(filtros.loja)) === -1) {
|
||||
continue;
|
||||
}
|
||||
if (filtros.termoLivre) {
|
||||
var blob = normalize([
|
||||
pdv,
|
||||
loja,
|
||||
responsavel,
|
||||
regional,
|
||||
uf,
|
||||
cidade
|
||||
].join(" "));
|
||||
if (blob.indexOf(normalize(filtros.termoLivre)) === -1) {
|
||||
continue;
|
||||
}
|
||||
}
|
||||
|
||||
dataset.addRow([
|
||||
pdv,
|
||||
loja,
|
||||
responsavel,
|
||||
regional,
|
||||
uf,
|
||||
cidade,
|
||||
status,
|
||||
canal,
|
||||
id,
|
||||
loginLoja,
|
||||
colleagueId,
|
||||
userCreate
|
||||
]);
|
||||
}
|
||||
|
||||
if (dataset.rowsCount === 0) {
|
||||
dataset.addRow(["", "Sem lojas apos filtros (HTTP " + statusHttp + ")", "", "", "", "", "", "", "", "", "", ""]);
|
||||
}
|
||||
|
||||
} catch (e) {
|
||||
dataset = DatasetBuilder.newDataset();
|
||||
dataset.addColumn("ERRO");
|
||||
dataset.addRow([String(e)]);
|
||||
}
|
||||
|
||||
return dataset;
|
||||
}
|
||||
|
||||
function parseConstraints(constraints) {
|
||||
var out = {
|
||||
pdv: "",
|
||||
loja: "",
|
||||
onlyAtivo: true,
|
||||
termoLivre: ""
|
||||
};
|
||||
|
||||
if (!constraints) return out;
|
||||
|
||||
for (var i = 0; i < constraints.length; i++) {
|
||||
var c = constraints[i];
|
||||
if (!c || !c.fieldName) continue;
|
||||
|
||||
var name = String(c.fieldName);
|
||||
var value = trim(c.initialValue);
|
||||
|
||||
if (name === "PDV" && value) out.pdv = value;
|
||||
if (name === "LOJA" && value) out.loja = value;
|
||||
if (name === "onlyAtivo" && value.toLowerCase() === "false") out.onlyAtivo = false;
|
||||
|
||||
// Zoom costuma enviar constraints variadas de busca; capturamos termo livre.
|
||||
if (
|
||||
value &&
|
||||
name !== "onlyAtivo" &&
|
||||
name !== "metadata#id" &&
|
||||
name !== "metadata#active" &&
|
||||
name !== "sqlLimit"
|
||||
) {
|
||||
var cleaned = cleanSearchValue(value);
|
||||
if (cleaned && (!out.termoLivre || cleaned.length > out.termoLivre.length)) {
|
||||
out.termoLivre = cleaned;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return out;
|
||||
}
|
||||
|
||||
function trim(v) {
|
||||
return String(v == null ? "" : v).trim();
|
||||
}
|
||||
|
||||
function normalize(v) {
|
||||
return trim(v).toLowerCase();
|
||||
}
|
||||
|
||||
function cleanSearchValue(v) {
|
||||
var s = trim(v);
|
||||
// remove curingas comuns de busca do Zoom/like
|
||||
s = s.replace(/[%*_]/g, "");
|
||||
return trim(s);
|
||||
}
|
||||
|
||||
function getUserCreateStatus(loginLoja, cache) {
|
||||
var login = trim(loginLoja);
|
||||
if (!login) return "NAO";
|
||||
if (cache.hasOwnProperty(login)) return cache[login];
|
||||
try {
|
||||
var cLogin = DatasetFactory.createConstraint("login", login, login, ConstraintType.MUST);
|
||||
var cActive = DatasetFactory.createConstraint("active", "true", "true", ConstraintType.MUST);
|
||||
var ds = DatasetFactory.getDataset("colleague", null, [cLogin, cActive], null);
|
||||
var exists = !!(ds && ds.rowsCount > 0);
|
||||
|
||||
// fallback para ambientes onde o identificador esta em colleagueId
|
||||
if (!exists) {
|
||||
var cId = DatasetFactory.createConstraint("colleaguePK.colleagueId", login, login, ConstraintType.MUST);
|
||||
ds = DatasetFactory.getDataset("colleague", null, [cId, cActive], null);
|
||||
exists = !!(ds && ds.rowsCount > 0);
|
||||
}
|
||||
|
||||
cache[login] = exists ? "OK" : "NAO";
|
||||
return cache[login];
|
||||
} catch (e) {
|
||||
cache[login] = "NAO";
|
||||
return "NAO";
|
||||
}
|
||||
}
|
||||
|
||||
function resolveColleagueIdByLogin(loginLoja) {
|
||||
var login = trim(loginLoja);
|
||||
if (!login) return "";
|
||||
try {
|
||||
var cLogin = DatasetFactory.createConstraint("login", login, login, ConstraintType.MUST);
|
||||
var cActive = DatasetFactory.createConstraint("active", "true", "true", ConstraintType.MUST);
|
||||
var ds = DatasetFactory.getDataset("colleague", null, [cLogin, cActive], null);
|
||||
if (ds && ds.rowsCount > 0) {
|
||||
return trim(ds.getValue(0, "colleaguePK.colleagueId"));
|
||||
}
|
||||
} catch (e) {}
|
||||
return "";
|
||||
}
|
||||
Reference in New Issue
Block a user