att
This commit is contained in:
parent
628c84683b
commit
4e278481a1
@ -651,6 +651,7 @@
|
|||||||
<input type="hidden" name="horaCadastroSCProtheus" id="horaCadastroSCProtheus">
|
<input type="hidden" name="horaCadastroSCProtheus" id="horaCadastroSCProtheus">
|
||||||
<input type="hidden" name="cotacaoSCProtheus" id="cotacaoSCProtheus">
|
<input type="hidden" name="cotacaoSCProtheus" id="cotacaoSCProtheus">
|
||||||
<input type="hidden" name="pedidoSCProtheus" id="pedidoSCProtheus">
|
<input type="hidden" name="pedidoSCProtheus" id="pedidoSCProtheus">
|
||||||
|
<input type="hidden" name="contratoSCProtheus" id="contratoSCProtheus">
|
||||||
<input type="hidden" name="statusAtendimento" id="statusAtendimento">
|
<input type="hidden" name="statusAtendimento" id="statusAtendimento">
|
||||||
<input type="hidden" name="valorTotalCotacao" id="valorTotalCotacao" value="0">
|
<input type="hidden" name="valorTotalCotacao" id="valorTotalCotacao" value="0">
|
||||||
|
|
||||||
@ -914,7 +915,7 @@
|
|||||||
<div class="sc-value" id="cotacaoSC_label">-</div>
|
<div class="sc-value" id="cotacaoSC_label">-</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="sc-info sc-info--primary">
|
<div class="sc-info sc-info--primary">
|
||||||
<div class="sc-label">Pedido</div>
|
<div class="sc-label" id="pedidoContratoTipo_label">Pedido</div>
|
||||||
<div class="sc-value" id="pedidoSC_label">-</div>
|
<div class="sc-value" id="pedidoSC_label">-</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
@ -953,7 +954,7 @@
|
|||||||
<span class="sc-cotacao-kpi-value">0</span>
|
<span class="sc-cotacao-kpi-value">0</span>
|
||||||
</div>
|
</div>
|
||||||
<div class="sc-cotacao-kpi">
|
<div class="sc-cotacao-kpi">
|
||||||
<span class="sc-cotacao-kpi-label">Com pedido</span>
|
<span class="sc-cotacao-kpi-label">Com documento</span>
|
||||||
<span class="sc-cotacao-kpi-value">0</span>
|
<span class="sc-cotacao-kpi-value">0</span>
|
||||||
</div>
|
</div>
|
||||||
<div class="sc-cotacao-kpi">
|
<div class="sc-cotacao-kpi">
|
||||||
|
|||||||
@ -510,17 +510,28 @@ function documentoEhPlaceholder(valor) {
|
|||||||
return /^X+$/.test(v);
|
return /^X+$/.test(v);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
function contratoEhValido(valor) {
|
||||||
|
var v = String(valor || "").trim();
|
||||||
|
if (!v) return false;
|
||||||
|
if (/^0+$/.test(v)) return false;
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
function linhaCotacaoVencedora(row) {
|
function linhaCotacaoVencedora(row) {
|
||||||
var pedido = String(row.C8_NUMPED || "").trim();
|
var pedido = String(row.C8_NUMPED || "").trim();
|
||||||
var itemPedido = String(row.C8_ITEMPED || "").trim();
|
var itemPedido = String(row.C8_ITEMPED || "").trim();
|
||||||
var fornece = String(row.C8_FORNECE || "").trim();
|
var fornece = String(row.C8_FORNECE || "").trim();
|
||||||
var loja = String(row.C8_LOJA || "").trim();
|
var loja = String(row.C8_LOJA || "").trim();
|
||||||
|
|
||||||
if (documentoEhPlaceholder(pedido)) return false;
|
|
||||||
if (documentoEhPlaceholder(itemPedido)) return false;
|
|
||||||
if (!fornece || !loja) return false;
|
if (!fornece || !loja) return false;
|
||||||
|
|
||||||
return true;
|
// Pedido gerado
|
||||||
|
if (!documentoEhPlaceholder(pedido) && !documentoEhPlaceholder(itemPedido)) return true;
|
||||||
|
|
||||||
|
// Contrato gerado
|
||||||
|
if (contratoEhValido(row.C8_NUMCON)) return true;
|
||||||
|
|
||||||
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
function possuiFornecedorCotacao(row) {
|
function possuiFornecedorCotacao(row) {
|
||||||
@ -557,7 +568,8 @@ function classificarLinhaCotacao(row) {
|
|||||||
var status = String(row.STATUS || "").trim().toUpperCase();
|
var status = String(row.STATUS || "").trim().toUpperCase();
|
||||||
|
|
||||||
if (linhaCotacaoVencedora(row)) {
|
if (linhaCotacaoVencedora(row)) {
|
||||||
return { tipo: "PEDIDO_GERADO", label: "GANHOU", badge: "badge bg-success", tipoFornecedor: "Fornecedor homologado" };
|
var tipoDoc = contratoEhValido(row.C8_NUMCON) ? "CONTRATO_GERADO" : "PEDIDO_GERADO";
|
||||||
|
return { tipo: tipoDoc, label: "GANHOU", badge: "badge bg-success", tipoFornecedor: "Fornecedor homologado" };
|
||||||
}
|
}
|
||||||
|
|
||||||
if (possuiFornecedorCotacao(row)) {
|
if (possuiFornecedorCotacao(row)) {
|
||||||
@ -1010,6 +1022,7 @@ function montarResumoCotacaoPorLinhas(rows, cotacao) {
|
|||||||
preco: row.C8_PRECO,
|
preco: row.C8_PRECO,
|
||||||
total: row.C8_TOTAL,
|
total: row.C8_TOTAL,
|
||||||
pedido: String(row.C8_NUMPED || "").trim(),
|
pedido: String(row.C8_NUMPED || "").trim(),
|
||||||
|
contrato: String(row.C8_NUMCON || "").trim(),
|
||||||
statusApi: String(row.STATUS || "").trim(),
|
statusApi: String(row.STATUS || "").trim(),
|
||||||
tipo: classif.tipo,
|
tipo: classif.tipo,
|
||||||
label: classif.label,
|
label: classif.label,
|
||||||
@ -1046,11 +1059,13 @@ function montarResumoCotacaoPorLinhas(rows, cotacao) {
|
|||||||
|
|
||||||
if (vencedorPedido) {
|
if (vencedorPedido) {
|
||||||
qtdPedidoGerado++;
|
qtdPedidoGerado++;
|
||||||
|
var tipoVencedor = contratoEhValido(vencedorPedido.C8_NUMCON) ? "CONTRATO_GERADO" : "PEDIDO_GERADO";
|
||||||
itens.push({
|
itens.push({
|
||||||
item: item,
|
item: item,
|
||||||
fornecedor: String(vencedorPedido.C8_FORNECE || "").trim() + "/" + String(vencedorPedido.C8_LOJA || "").trim(),
|
fornecedor: String(vencedorPedido.C8_FORNECE || "").trim() + "/" + String(vencedorPedido.C8_LOJA || "").trim(),
|
||||||
pedido: String(vencedorPedido.C8_NUMPED || "").trim(),
|
pedido: String(vencedorPedido.C8_NUMPED || "").trim(),
|
||||||
tipo: "PEDIDO_GERADO"
|
contrato: String(vencedorPedido.C8_NUMCON || "").trim(),
|
||||||
|
tipo: tipoVencedor
|
||||||
});
|
});
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
@ -1169,7 +1184,19 @@ function alternarTimelineSC() {
|
|||||||
focarTimelineSC();
|
focarTimelineSC();
|
||||||
}
|
}
|
||||||
|
|
||||||
function montarStatusAndamento(scRow, cotacao, pedido) {
|
function extrairContratoDoResumoCotacao(resumo) {
|
||||||
|
if (!resumo || !resumo.detalhes) return "";
|
||||||
|
for (var i = 0; i < resumo.detalhes.length; i++) {
|
||||||
|
var d = resumo.detalhes[i];
|
||||||
|
if (d.tipo === "CONTRATO_GERADO" && contratoEhValido(d.contrato)) {
|
||||||
|
return normalizarCodigoComparacao(d.contrato);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return "";
|
||||||
|
}
|
||||||
|
|
||||||
|
function montarStatusAndamento(scRow, cotacao, pedido, contrato) {
|
||||||
|
if (contrato) return "Contrato gerado";
|
||||||
if (pedido) return "Pedido gerado";
|
if (pedido) return "Pedido gerado";
|
||||||
if (cotacao) return "Cotacao gerada";
|
if (cotacao) return "Cotacao gerada";
|
||||||
|
|
||||||
@ -1195,15 +1222,22 @@ function preencherResumoSC(resumoCotacao, erroCotacao, resumoPedido, erroPedido)
|
|||||||
var horaCadastro = valorCampo("horaCadastroSCProtheus");
|
var horaCadastro = valorCampo("horaCadastroSCProtheus");
|
||||||
var cotacao = limparNumeroDocumento(valorCampo("cotacaoSCProtheus"));
|
var cotacao = limparNumeroDocumento(valorCampo("cotacaoSCProtheus"));
|
||||||
var pedido = limparNumeroDocumento(valorCampo("pedidoSCProtheus"));
|
var pedido = limparNumeroDocumento(valorCampo("pedidoSCProtheus"));
|
||||||
|
var contrato = limparNumeroDocumento(valorCampo("contratoSCProtheus"));
|
||||||
var andamento = valorCampo("statusAtendimento");
|
var andamento = valorCampo("statusAtendimento");
|
||||||
var statusCadastroPadrao = normalizarStatusCadastro(statusCadastro, numero);
|
var statusCadastroPadrao = normalizarStatusCadastro(statusCadastro, numero);
|
||||||
|
|
||||||
|
// Fallback: extrair contrato do resumo de cotação se ainda não salvo no campo
|
||||||
|
if (!contrato && resumoCotacao) {
|
||||||
|
contrato = extrairContratoDoResumoCotacao(resumoCotacao);
|
||||||
|
}
|
||||||
|
|
||||||
if (!andamento && numero) {
|
if (!andamento && numero) {
|
||||||
if (pedido) andamento = "Pedido gerado";
|
if (contrato) andamento = "Contrato gerado";
|
||||||
|
else if (pedido) andamento = "Pedido gerado";
|
||||||
else if (cotacao) andamento = "Cotacao gerada";
|
else if (cotacao) andamento = "Cotacao gerada";
|
||||||
else andamento = "Em andamento";
|
else andamento = "Em andamento";
|
||||||
}
|
}
|
||||||
andamento = normalizarAndamento(andamento, cotacao, pedido);
|
andamento = normalizarAndamento(andamento, cotacao, pedido || contrato);
|
||||||
|
|
||||||
setLabel("numeroSCProtheus_label", numero);
|
setLabel("numeroSCProtheus_label", numero);
|
||||||
setLabel("solicitanteSCProtheus_label", solicitante);
|
setLabel("solicitanteSCProtheus_label", solicitante);
|
||||||
@ -1212,7 +1246,8 @@ function preencherResumoSC(resumoCotacao, erroCotacao, resumoPedido, erroPedido)
|
|||||||
setLabel("dataCadastroSCProtheus_label", dataCadastro);
|
setLabel("dataCadastroSCProtheus_label", dataCadastro);
|
||||||
setLabel("horaCadastroSCProtheus_label", horaCadastro);
|
setLabel("horaCadastroSCProtheus_label", horaCadastro);
|
||||||
setLabel("cotacaoSC_label", cotacao);
|
setLabel("cotacaoSC_label", cotacao);
|
||||||
setLabel("pedidoSC_label", pedido);
|
setLabel("pedidoSC_label", contrato || pedido);
|
||||||
|
$("#pedidoContratoTipo_label").text(contrato ? "Contrato" : "Pedido");
|
||||||
|
|
||||||
setBadge("#statusSCProtheus_label", statusCadastroPadrao || (numero ? "SC cadastrada com sucesso" : ""));
|
setBadge("#statusSCProtheus_label", statusCadastroPadrao || (numero ? "SC cadastrada com sucesso" : ""));
|
||||||
setBadge("#statusSC_label", andamento);
|
setBadge("#statusSC_label", andamento);
|
||||||
@ -1264,14 +1299,16 @@ function consultarAndamentoSC() {
|
|||||||
|
|
||||||
var cotacao = limparNumeroDocumento(row.C1_COTACAO);
|
var cotacao = limparNumeroDocumento(row.C1_COTACAO);
|
||||||
var pedido = limparNumeroDocumento(row.C1_PEDIDO);
|
var pedido = limparNumeroDocumento(row.C1_PEDIDO);
|
||||||
|
var contrato = limparNumeroDocumento(row.C1_CONTRATO || "");
|
||||||
|
|
||||||
if (cotacao) $("#cotacaoSCProtheus").val(cotacao);
|
if (cotacao) $("#cotacaoSCProtheus").val(cotacao);
|
||||||
if (pedido) $("#pedidoSCProtheus").val(pedido);
|
if (pedido) $("#pedidoSCProtheus").val(pedido);
|
||||||
|
if (contrato) $("#contratoSCProtheus").val(contrato);
|
||||||
|
|
||||||
if (row.C1_SOLICIT) $("#solicitanteSCProtheus").val(String(row.C1_SOLICIT).trim());
|
if (row.C1_SOLICIT) $("#solicitanteSCProtheus").val(String(row.C1_SOLICIT).trim());
|
||||||
if (row.C1_EMISSAO) $("#emissaoSCProtheus").val(normalizarDataProtheus(row.C1_EMISSAO));
|
if (row.C1_EMISSAO) $("#emissaoSCProtheus").val(normalizarDataProtheus(row.C1_EMISSAO));
|
||||||
|
|
||||||
var andamento = montarStatusAndamento(row, cotacao, pedido);
|
var andamento = montarStatusAndamento(row, cotacao, pedido, contrato);
|
||||||
if (andamento) $("#statusAtendimento").val(andamento);
|
if (andamento) $("#statusAtendimento").val(andamento);
|
||||||
|
|
||||||
var resumoCotacao = null;
|
var resumoCotacao = null;
|
||||||
@ -1281,6 +1318,14 @@ function consultarAndamentoSC() {
|
|||||||
try {
|
try {
|
||||||
var cotacoes = JSON.parse(jsonCotacoes);
|
var cotacoes = JSON.parse(jsonCotacoes);
|
||||||
resumoCotacao = montarResumoCotacaoPorLinhas(cotacoes, cotacao);
|
resumoCotacao = montarResumoCotacaoPorLinhas(cotacoes, cotacao);
|
||||||
|
// Persistir contrato extraído das cotações no campo hidden para recargas futuras
|
||||||
|
if (!contrato && resumoCotacao) {
|
||||||
|
var contratoExtraido = extrairContratoDoResumoCotacao(resumoCotacao);
|
||||||
|
if (contratoExtraido) {
|
||||||
|
contrato = contratoExtraido;
|
||||||
|
$("#contratoSCProtheus").val(contrato);
|
||||||
|
}
|
||||||
|
}
|
||||||
} catch (eCot) {
|
} catch (eCot) {
|
||||||
if (!erroCotacao) erroCotacao = "Falha ao ler cotacoes retornadas pelo ds_consultaSC";
|
if (!erroCotacao) erroCotacao = "Falha ao ler cotacoes retornadas pelo ds_consultaSC";
|
||||||
}
|
}
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user