/****************************************************************************************
* FLUIG - DESLIGAMENTO DO COLABORADOR
* SCRIPT PRINCIPAL ORGANIZADO
****************************************************************************************/
$(window).on("load", function () {
setTimeout(() => {
iniciarFormulario();
}, 400);
});
/****************************************************************************************
* INICIALIZAÇÃO DO FORMULÁRIO
****************************************************************************************/
function iniciarFormulario() {
const activity = parseInt($("#activity").val() || 0);
const formMode = $("#formMode").val() || "ADD";
const requestDate = getCurrentDate();
$(".activity").hide(); // Oculta todas por padrão
if (formMode === "VIEW") {
$(".activity").show();
showAndBlock(["all"]);
return;
}
if ([0, 4].includes(activity)) {
$(".activity-4").show();
$("#requesterName").val($("#requesterName").val() || $("#currentUserName").val());
$("#emailGestorArea").val($("#requesterMail").val() || $("#currentUsermail").val());
$("#dataAbertura").val(`${requestDate[0]} - ${requestDate[1]}`);
}
if (activity === 51) {
$(".activity-4, .activity-51").show();
showAndBlock([4]);
$("#userAprova").val($("#currentUserName").val());
$("#dataUserAprova").val(`${requestDate[0]} - ${requestDate[1]}`);
}
if (activity === 20) {
$(".activity-4, .activity-20").show();
showAndBlock([4, 51]);
$("#userAprov").val($("#currentUserName").val());
$("#dataUserAprov").val(`${requestDate[0]} - ${requestDate[1]}`);
}
if (activity === 22) {
$(".activity-4, .activity-20, .activity-22").show();
showAndBlock([4, 20, 51]);
$("#analistaDesligamento").val($("#currentUserName").val());
$("#dataPrevista").val(`${requestDate[0]} - ${requestDate[1]}`);
}
if (activity === 24) {
$(".activity-4, .activity-20, .activity-22, .activity-24").show();
showAndBlock([4, 20, 22, 51]);
$("#userAprovConf").val($("#currentUserName").val());
$("#dataUserAprovConf").val(`${requestDate[0]} - ${requestDate[1]}`);
}
if (activity === 5) {
$(".activity-4, .activity-20, .activity-22, .activity-24, .activity-5").show();
showAndBlock([4, 20, 22, 24, 51]);
$("#analistaComunicado").val($("#currentUserName").val());
$("#dataComunicado").val(`${requestDate[0]} - ${requestDate[1]}`);
inicializarEstrelas();
}
if (activity === 15) {
$(".activity-4, .activity-15").show();
showAndBlock([4]);
$("#userValidacao").val($("#currentUserName").val());
$("#dataUserValidacao").val(`${requestDate[0]} - ${requestDate[1]}`);
}
$(`.activity-${activity} :input`)
.prop("readonly", false)
.prop("disabled", false)
.css("background-color", "");
}
/****************************************************************************************
* BLOQUEIO DE ATIVIDADES ANTERIORES
****************************************************************************************/
function showAndBlock(list) {
const current = parseInt($("#activity").val());
if (list[0] === "all") {
$(".activity :input")
.prop("readonly", true)
.css("pointer-events", "none")
.css("background-color", "#eee");
return;
}
list.forEach(a => {
$(`.activity-${a}`).show();
$(`.activity-${a} :input`).each(function () {
if ($(this).closest(".activity").hasClass(`activity-${current}`)) return;
// trava campos normais
$(this)
.prop("readonly", true)
.css("background-color", "#eee")
.css("pointer-events", "none");
});
});
}
/****************************************************************************************
* FUNÇÕES AUXILIARES
****************************************************************************************/
function getCurrentDate() {
const now = new Date();
const pad = n => (n < 10 ? "0" + n : n);
return [
`${pad(now.getDate())}/${pad(now.getMonth() + 1)}/${now.getFullYear()}`,
`${pad(now.getHours())}:${pad(now.getMinutes())}`
];
}
/****************************************************************************************
* ESTRELAS DE AVALIAÇÃO
****************************************************************************************/
function inicializarEstrelas() {
const valorSalvo = parseInt($("#ratingValue").val()) || 0;
const stars = FLUIGC.stars(".minha-avaliacao", {
stars: 5,
value: valorSalvo,
sizeClass: "icon-md"
});
stars.on("click", function () {
const valor = $(".fluigicon-star-active").length;
$("#ratingValue").val(valor);
});
setTimeout(() => {
$(".minha-avaliacao .fluigicon-star").each(function (i) {
$(this).css("color", i < valorSalvo ? "#f0ad4e" : "#ccc");
});
}, 200);
}
/****************************************************************************************
* VALIDAÇÃO DO ENVIO
****************************************************************************************/
var beforeSendValidate = function (state) {
if ([0, 1, 4].includes(state)) {
if (!$("#motivoDesligamento").val()) throw "'Detalhes da situação' é obrigatório.";
}
if (state == 5) {
if (!$("#detalheSolicitacao").val()) throw "'Detalhamento da situação' é obrigatório.";
}
};
/****************************************************************************************
* EVENTOS DINÂMICOS (EXIBIÇÃO DE CAMPOS)
****************************************************************************************/
$(document).ready(function () {
$("#assinaturaDoc").change(function () {
$(".consegueResolverMotivo, .consideracoesRow").hide();
if ($(this).val() === "nao") $(".consegueResolverMotivo, .consideracoesRow").slideDown();
}).trigger("change");
$("input[name=feedback]").change(function () {
$(".JustFeedback").toggle($(this).val() === "sim");
}).trigger("change");
$("input[name=situacaoResolvida]").change(function () {
$(".explainAction, .ratingAction").hide();
if ($(this).val() === "nao") $(".explainAction").show();
if ($(this).val() === "sim") $(".ratingAction").show();
}).trigger("change");
$("#tipodesligamento").change(function () {
$(".feedbackRow").toggle($(this).val() === "experiencia");
}).trigger("change");
});
/****************************************************************************************
* LANÇAMENTOS (PROVENTOS / DESCONTOS)
****************************************************************************************/
/****************************************************************************************
* PROVENTOS — Adicionar linha
****************************************************************************************/
function addLinhaProvento() {
let idx = wdkAddChild("tabelaProventos");
ajustarLinhaProvento(idx);
}
/****************************************************************************************
* DESCONTOS — Adicionar linha
****************************************************************************************/
function addLinhaDesconto() {
let idx = wdkAddChild("tabelaDescontos");
ajustarLinhaDesconto(idx);
}
/****************************************************************************************
* PROVENTOS — Ajustar linha conforme categoria
****************************************************************************************/
function ajustarLinhaProvento(idx) {
let categoria = $(`select[name="categoriaProvento___${idx}"]`);
let container = $(`input[name="valorProvento___${idx}"]`).parent();
categoria.off("change").on("change", function () {
let valorSalvo = $(`input[name="valorProvento___${idx}"]`).val();
container.empty();
let cat = categoria.val();
// === COMISSÃO / PREMIAÇÃO / AVARIAS → DINHEIRO ====
if (["comissao", "premiacao"].includes(cat)) {
container.append(`
`);
}
// === HORAS EXTRAS → HH:MM ====
else if (cat === "horasextras") {
container.append(`
`);
}
// === OUTRO → TEXTO LIVRE ====
else {
container.append(`
`);
}
// Restaurar valor
$(`input[name="valorProvento___${idx}"]`).val(valorSalvo);
aplicarMascaraDinheiro();
aplicarMascaraHora();
});
categoria.trigger("change");
}
/****************************************************************************************
* DESCONTOS — Ajustar linha conforme categoria
****************************************************************************************/
function ajustarLinhaDesconto(idx) {
let categoria = $(`select[name="categoriaDesconto___${idx}"]`);
let container = $(`input[name="valorDesconto___${idx}"]`).parent();
categoria.off("change").on("change", function () {
let valorSalvo = $(`input[name="valorDesconto___${idx}"]`).val();
container.empty();
let cat = categoria.val();
// === FALTAS → INTEIRO ====
if (cat === "faltas") {
container.append(`
`);
}
// === ATRASOS → HH:MM ====
else if (cat === "atrasos") {
container.append(`
`);
}
// === AVARIAS → DINHEIRO ====
else if (cat === "avarias") {
container.append(`
`);
}
// === OUTRO — texto livre ====
else {
container.append(`
`);
}
// Restaurar valor salvo
$(`input[name="valorDesconto___${idx}"]`).val(valorSalvo);
aplicarMascaraDinheiro();
aplicarMascaraHora();
});
categoria.trigger("change");
}
/****************************************************************************************
* Restauração automática ao recarregar o formulário
****************************************************************************************/
function restaurarTodasLinhas() {
// PROVENTOS
$("select.categoriaProvento").each(function () {
let idx = this.name.split("___")[1];
ajustarLinhaProvento(idx);
});
// DESCONTOS
$("select.categoriaDesconto").each(function () {
let idx = this.name.split("___")[1];
ajustarLinhaDesconto(idx);
});
}
// Sempre que o Fluig recriar o pai-filho
document.addEventListener("DOMNodeInserted", function (e) {
if ($(e.target).closest("#tabelaProventos").length > 0 ||
$(e.target).closest("#tabelaDescontos").length > 0) {
setTimeout(restaurarTodasLinhas, 200);
}
});
/****************************************************************************************
* Máscara de dinheiro
****************************************************************************************/
function aplicarMascaraDinheiro() {
$(".money").mask("#.##0,00", { reverse: true });
}
function aplicarMascaraHora() {
$('.timehhmm').mask('00:00');
}
// Sempre que o Fluig alterar o pai-filho, restauramos
document.addEventListener("DOMNodeInserted", function (e) {
if ($(e.target).closest("table#tabelaLancamentos").length > 0) {
setTimeout(restaurarLancamentos, 200);
}
});
/****************************************************************************************
* ZOOM: COLABORADOR
****************************************************************************************/
function setSelectedZoomItem(item) {
if (item.inputId === "colabDesliga") {
$("#colabCpf").val(item.cpf || "");
$("#colabadmissao").val(item.admission_at || "");
$("#emailColaborador").val(item.email || "");
$("#departamento").val(item.department || "");
$("#cargoColaborador").val(item.description || "");
}
}
function removedZoomItem(item) {
if (item.inputId === "colabDesliga") {
$("#colabCpf, #colabadmissao, #emailColaborador, #departamento, #cargoColaborador").val("");
}
}