att
This commit is contained in:
@@ -44,42 +44,73 @@ function recalcTotal() {
|
||||
|
||||
}
|
||||
|
||||
/* Parse "fieldName___index" IDs used by Fluig Zoom child items */
|
||||
function parseZoomItemId(rawId) {
|
||||
const sep = (rawId || "").indexOf("___");
|
||||
if (sep >= 0) {
|
||||
return { inputId: rawId.substring(0, sep), indice: rawId.substring(sep + 3) };
|
||||
}
|
||||
return { inputId: rawId || "", indice: "" };
|
||||
}
|
||||
|
||||
function setSelectedZoomItem(selectedItem) {
|
||||
if (selectedItem.inputId === "estabelecimento") {
|
||||
// dsFiliais: guarda dados da filial e define gestor da próxima atividade
|
||||
var codigoProtheus = String(selectedItem.PROTHEUS || selectedItem.protheus || "").trim();
|
||||
const { inputId, indice } = parseZoomItemId(selectedItem.inputId);
|
||||
|
||||
if (inputId === "estabelecimento") {
|
||||
const codigoProtheus = String(selectedItem.PROTHEUS || selectedItem.protheus || "").trim();
|
||||
const gestorLoja = String(selectedItem.COLLEAGUE_ID || selectedItem.LOGIN_LOJA || "").trim();
|
||||
|
||||
$("#filialdest").val(selectedItem.LOJA || "");
|
||||
$("#filialest").val(selectedItem.UF || "");
|
||||
$("#filialprotheus").val(codigoProtheus);
|
||||
$("#centro_custo").val(selectedItem.RESPONSAVEL_LOJA || selectedItem.LOJA || "");
|
||||
$("#codigocentroCusto").val(codigoProtheus);
|
||||
|
||||
var gestorLoja = (selectedItem.COLLEAGUE_ID || selectedItem.LOGIN_LOJA || "").trim();
|
||||
$("#gestor_cc").val(gestorLoja);
|
||||
|
||||
if (!codigoProtheus) {
|
||||
console.warn("Filial selecionada sem campo PROTHEUS no dsFiliais.");
|
||||
console.warn("[ZoomHandler] Filial sem PROTHEUS:", selectedItem);
|
||||
}
|
||||
}
|
||||
|
||||
if (inputId === "centroCusto") {
|
||||
$("#gestorNome").val(selectedItem.gestorCentroCusto || "");
|
||||
$("#gestorEmail").val(selectedItem.emailGestor || "");
|
||||
$("#gestor_cc").val(selectedItem.idGestor || "");
|
||||
}
|
||||
|
||||
}
|
||||
if (inputId === "userSolicitante") {
|
||||
$("#emailSolicitante").val(selectedItem.mail || "");
|
||||
}
|
||||
|
||||
function removedZoomItem(removedItem) {
|
||||
if (removedItem.inputId === "estabelecimento") {
|
||||
// Quando remover a filial, limpa os campos relacionados
|
||||
$("#filialdest").val("");
|
||||
$("#filialest").val("");
|
||||
$("#filialprotheus").val("");
|
||||
$("#centro_custo").val("");
|
||||
$("#codigocentroCusto").val("");
|
||||
$("#gestor_cc").val("");
|
||||
if (inputId === "descricao") {
|
||||
$("#codigoItem___" + indice).val(selectedItem.descricao || "");
|
||||
}
|
||||
}
|
||||
|
||||
/* ========= Config ========= */
|
||||
const DATASET_PRODUTOS = "dsComprasProdutos"; // dataset de produtos
|
||||
function removedZoomItem(removedItem) {
|
||||
const { inputId, indice } = parseZoomItemId(removedItem.inputId);
|
||||
|
||||
if (inputId === "estabelecimento") {
|
||||
$("#filialdest, #filialest, #filialprotheus, #centro_custo, #codigocentroCusto, #gestor_cc").val("");
|
||||
}
|
||||
|
||||
if (inputId === "centroCusto") {
|
||||
$("#gestorNome, #gestorEmail, #gestor_cc").val("");
|
||||
}
|
||||
|
||||
if (inputId === "userSolicitante") {
|
||||
$("#emailSolicitante").val("");
|
||||
}
|
||||
|
||||
if (inputId === "descricao") {
|
||||
$("#codigoItem___" + indice + ", #quantidadeItem___" + indice).val("");
|
||||
}
|
||||
}
|
||||
|
||||
/* ========= Config (centralizada em compras_config.js) ========= */
|
||||
const DATASET_PRODUTOS = (typeof ComprasConfig !== "undefined")
|
||||
? ComprasConfig.datasets.produtos
|
||||
: "dsComprasProdutos";
|
||||
let todosProdutos = [];
|
||||
let paginaAtual = 1;
|
||||
const itensPorPagina = 10;
|
||||
@@ -266,9 +297,9 @@ function toggleBotaoAddItem() {
|
||||
}
|
||||
/* ========= Adicionar Item ========= */
|
||||
function adicionarItem() {
|
||||
const cod = $('#produtoCod').val();
|
||||
const cod = $('#produtoCod').val();
|
||||
const desc = $('#descProduto').val();
|
||||
const qtd = $('#quantidade').val();
|
||||
const qtd = $('#quantidade').val() || '1';
|
||||
|
||||
if (!cod) {
|
||||
FLUIGC.toast({ title: 'Atenção', message: 'Selecione um produto/serviço', type: 'warning' });
|
||||
@@ -277,20 +308,17 @@ function adicionarItem() {
|
||||
|
||||
const idx = wdkAddChild('tbItens');
|
||||
|
||||
setTimeout(() => {
|
||||
setTimeout(function () {
|
||||
$('input[name="Codproduto___' + idx + '"]').val(cod);
|
||||
|
||||
const somenteDesc = desc.includes('-') ? desc.split('-').slice(1).join('-').trim() : desc;
|
||||
const somenteDesc = desc.indexOf('-') >= 0 ? desc.split('-').slice(1).join('-').trim() : desc;
|
||||
$('input[name="produtoDesc___' + idx + '"]').val(somenteDesc);
|
||||
$('input[name="qtd___' + idx + '"]').val(qtd).on('input', function () { recalcLinha(this); });
|
||||
$('input[name="ultimoPreco___' + idx + '"]').val(prec).on('input', function () { recalcLinha(this); });
|
||||
$('input[name="qtd___' + idx + '"]').val(qtd);
|
||||
|
||||
atualizarIndex();
|
||||
atualizarTotais();
|
||||
}, 0);
|
||||
|
||||
FLUIGC.toast({ title: 'Item', message: 'Adicionado à lista', type: 'success' });
|
||||
|
||||
limparCamposPrincipais();
|
||||
}
|
||||
|
||||
@@ -380,16 +408,16 @@ $(function () {
|
||||
var step = steps[index];
|
||||
if (!step) return;
|
||||
|
||||
// 👉 se já estava ativo, mostra tudo de novo
|
||||
// se já estava ativo, mostra tudo de novo
|
||||
if ($(this).hasClass("active") && $(".activity:visible").length === 1) {
|
||||
$(".activity").show();
|
||||
$(".activity").css("display", "block");
|
||||
$("#wizard-steps .step-item").removeClass("active");
|
||||
return;
|
||||
}
|
||||
|
||||
// senão, mostra só a activity clicada
|
||||
$(".activity").hide();
|
||||
$(".activity-" + step.state).show();
|
||||
$(".activity").css("display", "none");
|
||||
$(".activity-" + step.state).css("display", "block");
|
||||
|
||||
$("#wizard-steps .step-item").removeClass("active");
|
||||
$(this).addClass("active");
|
||||
@@ -408,30 +436,32 @@ function setLabel(id, valor) {
|
||||
|
||||
function badgeClassByStatus(status) {
|
||||
var s = String(status || "").toLowerCase();
|
||||
if (!s) return "badge bg-secondary";
|
||||
if (s.indexOf("erro") >= 0 || s.indexOf("reprov") >= 0 || s.indexOf("cancel") >= 0) return "badge bg-danger";
|
||||
if (s.indexOf("aguard") >= 0 || s.indexOf("pend") >= 0) return "badge bg-warning";
|
||||
if (s.indexOf("sucesso") >= 0 || s.indexOf("aprov") >= 0 || s.indexOf("gerad") >= 0 || s.indexOf("liberad") >= 0) return "badge bg-success";
|
||||
if (s.indexOf("bloque") >= 0 || s.indexOf("rejeit") >= 0) return "badge bg-danger";
|
||||
return "badge bg-info";
|
||||
if (!s || s === "sem cotacao" || s === "sem pedido" || s === "-") return "badge-status badge-waiting";
|
||||
if (s.indexOf("erro") >= 0 || s.indexOf("reprov") >= 0 || s.indexOf("cancel") >= 0) return "badge-status badge-rejected";
|
||||
if (s.indexOf("bloque") >= 0 || s.indexOf("rejeit") >= 0) return "badge-status badge-blocked";
|
||||
if (s.indexOf("aguard") >= 0 || s.indexOf("pend") >= 0) return "badge-status badge-pending";
|
||||
if (s.indexOf("sucesso") >= 0 || s.indexOf("aprov") >= 0 || s.indexOf("gerad") >= 0 || s.indexOf("liberad") >= 0 || s.indexOf("conclui") >= 0) return "badge-status badge-approved";
|
||||
return "badge-status badge-processing";
|
||||
}
|
||||
|
||||
var BADGE_VARIANTS = "badge-waiting badge-pending badge-approved badge-rejected badge-blocked badge-processing";
|
||||
|
||||
function setBadge(selector, valor) {
|
||||
var texto = String(valor || "").trim() || "-";
|
||||
var classe = badgeClassByStatus(texto);
|
||||
var textoLower = texto.toLowerCase();
|
||||
var classe = badgeClassByStatus(texto);
|
||||
|
||||
// Mantem os badges de resumo da SC sem destaque verde para sucesso/geracao.
|
||||
// Mantém badges de resumo da SC como "em andamento" para não inflar expectativa visual.
|
||||
if (
|
||||
(selector === "#statusSCProtheus_label" && textoLower.indexOf("sc cadastrada com sucesso") >= 0) ||
|
||||
(selector === "#statusSC_label" && textoLower.indexOf("pedido gerado") >= 0)
|
||||
) {
|
||||
classe = "badge bg-info";
|
||||
classe = "badge-status badge-processing";
|
||||
}
|
||||
|
||||
$(selector)
|
||||
.text(texto)
|
||||
.removeClass("bg-secondary bg-success bg-danger bg-warning bg-info")
|
||||
.removeClass(BADGE_VARIANTS)
|
||||
.addClass(classe);
|
||||
}
|
||||
|
||||
@@ -734,7 +764,7 @@ function renderizarResultadoCotacao(resumo) {
|
||||
var statusApiTxt = escapeHTML(linha.statusApi || "-");
|
||||
var statusRaw = String(linha.label || "").trim();
|
||||
var statusTxt = escapeHTML(statusRaw);
|
||||
var badgeStatus = linha.badge || "badge bg-secondary";
|
||||
var badgeStatus = linha.badge || "badge-status badge-waiting";
|
||||
var classeCard = classeCardCotacao(linha.tipo);
|
||||
var qtdTxt = escapeHTML(String(linha.quantidade || "-"));
|
||||
var entregaTxt = escapeHTML(normalizarDataProtheus(linha.dataPrevista || ""));
|
||||
@@ -1303,3 +1333,66 @@ function beforeSendValidate(numState, nextState) {
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
/* ── Accordion de histórico de atividades ─────────────────────────
|
||||
Chamada pelo script.js após cada showAndBlock() para colapsar
|
||||
as seções de atividades já concluídas.
|
||||
----------------------------------------------------------------- */
|
||||
var ACTIVITY_META = {
|
||||
"0": { titulo: "Dados da Solicitação", campos: ["usuarioSolicitante", "estabelecimento", "tipoSolicitacao"] },
|
||||
"1": { titulo: "Dados da Solicitação", campos: ["usuarioSolicitante", "estabelecimento"] },
|
||||
"4": { titulo: "Análise do Gestor", campos: ["userValidacaoGestor", "dataValidacaoGestor"] },
|
||||
"6": { titulo: "Validação Compras", campos: ["userValidacaoCompras", "dataValidacaoCompras"] },
|
||||
"24": { titulo: "Problema na Compra", campos: [] },
|
||||
"31": { titulo: "Realização da Compra", campos: ["userRealizacaoCompras", "dataRealizacaoCompras"] },
|
||||
"57": { titulo: "Aprovação p/ Cotação", campos: ["userCotacaoGestor", "dataAprovCompras"] },
|
||||
"114": { titulo: "SC no Protheus", campos: [] },
|
||||
"121": { titulo: "Validação da Diretoria", campos: ["user_validacao_gestor", "data_validacao_gestor"] }
|
||||
};
|
||||
|
||||
function _lerCampoResumo(id) {
|
||||
var $el = $("#" + id);
|
||||
if (!$el.length) return "";
|
||||
var val = $el.is("span, div") ? $el.text().trim() : String($el.val() || "").trim();
|
||||
return (val && val !== "-") ? val : "";
|
||||
}
|
||||
|
||||
function colapsarAtividadesAnteriores(numeros) {
|
||||
for (var i = 0; i < numeros.length; i++) {
|
||||
var num = numeros[i];
|
||||
var $secao = $(".activity-" + num);
|
||||
if (!$secao.length || $secao.hasClass("accordion-pronto")) continue;
|
||||
|
||||
var meta = ACTIVITY_META[String(num)] || { titulo: "Etapa " + num, campos: [] };
|
||||
|
||||
// Envolve o conteúdo inteiro num .activity-body colapsável
|
||||
$secao.children().wrapAll('<div class="activity-body"></div>');
|
||||
|
||||
// Monta texto de resumo a partir dos campos da etapa já preenchida
|
||||
var partes = [];
|
||||
for (var c = 0; c < meta.campos.length && partes.length < 2; c++) {
|
||||
var val = _lerCampoResumo(meta.campos[c]);
|
||||
if (val) partes.push(escapeHTML(val));
|
||||
}
|
||||
var resumo = partes.length ? partes.join(" · ") : "Concluído";
|
||||
|
||||
// Injeta cabeçalho clicável antes do body
|
||||
$secao.prepend(
|
||||
'<div class="activity-header">' +
|
||||
'<span class="activity-header-check">✓</span>' +
|
||||
'<span class="activity-header-titulo">' + escapeHTML(meta.titulo) + '</span>' +
|
||||
'<span class="activity-header-resumo">' + resumo + '</span>' +
|
||||
'<span class="activity-header-caret">▼</span>' +
|
||||
'</div>'
|
||||
);
|
||||
|
||||
$secao.addClass("accordion-pronto is-collapsed");
|
||||
|
||||
// Fecha sobre si mesmo para manter contexto correto no closure
|
||||
(function ($s) {
|
||||
$s.on("click.accordion", ".activity-header", function () {
|
||||
$s.toggleClass("is-collapsed");
|
||||
});
|
||||
}($secao));
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user