/**************************************************************************************** * 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(""); } }