Qual o eventos de processo(workflow) para ativar um campo de formulário em uma determinada atividade?

Bom dia,
Preciso que um campo do formulário aparece somente em uma determinada atividade no processo.

Grata

Normalmente faço isso no displayFields, mas é evento de formulário.

function displayFields(form, customHTML) {
    var atividadeAtual = parseInt(getValue("WKNumState"));

    if (atividadeAtual == 5) {
        form.setEnabled("metaIndicador", false);
    }

}

Bruno, obrigada pelo retorno
E o enableFields como usar?

Sinceramente não cheguei a usar o evento enableFields. Eu já faço tudo no evento displayFields pra não ter retrabalho.

Obrigada, Bruno. Deu certo.

Grata.

Olá bruno, pode me ajudar com esta duvida, por favor?

@joaopretti , eu costumo usar exatamente como comentei aqui, no evento displayFields. Inclusive no exemplo eu desabilito um campo pra não permitir edição quando estou na atividade de id 5 do processo.

tem como usar o método form. setVisible e/ou form.setVisibleById se quiser ocultar.

Como eu descubro qual é o ID do processo?

Você utiliza discord ou telegram pra gente trocar ideia sobre o fluig? :smiley:

O ID/Número da Atividade você vê no editor de diagrama no Eclipse.

Você fez os cursos de Fluig no Fluig Academy? É bom pegar uma boa base do básico que eles ensinam lá.

Fiz os crusos sim!!! mas acho que eles nao mostram o ID, ai fiquei meio perdido como vê rsrsrs, vou tentar adequar a função que vc fez ali em cima com esse setvisible ai

1 curtida

O método setVisible só faz um style="display: none" no elemento.

Um exemplo:

/**
 * Exibe os campos de acordo com a Atividade
 *
 * @param {FormController} form
 * @param {customHTML} customHTML
 */
function displayFields(form, customHTML) {
    var isEditingForm = (form.getFormMode() == "ADD" || form.getFormMode() == "MOD");
    var atividadeAtual = parseInt(getValue("WKNumState"));
    var atividades = atividadesEmisCapTec();

    hideAllPanels(form);
    disableAllFields(form);

    // Iniciando uma solicitação
    if (isEditingForm && (form.getFormMode() == "ADD" || atividadeAtual == atividades.ATIVIDADE_INICIO)) {
        var usuario = fluigAPI.getUserService().getCurrent();
        var gerenteNome = "";
        var unidadeNome = "";

        try {
            var usuarioRmDados = getUserRmData(usuario.getLogin());
            var gerenteDados = getUserFluigData(usuarioRmDados.gerenteLogin);
            gerenteNome = gerenteDados.nome;
            gerenteMatricula = gerenteDados.id;
            unidadeNome = usuarioRmDados.unidadeNome;
        } catch (error) {
            gerenteNome = "";
            gerenteMatricula = "";
            unidadeNome = "";
        }

        form.setValue("data_solicitacao", pegaDataAtual());
        form.setValue("solicitante_matricula", usuario.getCode());
        form.setValue("solicitante_nome", usuario.getFullName());
        form.setValue("solicitante_unidade", unidadeNome);
        form.setValue("gerente_nome", gerenteNome);
        form.setValue("gerente_matricula", gerenteMatricula);

        form.setVisibleById("parecer_qualidade_obs_row", false);
        form.setVisibleById("parecer_escopo_obs_row", false);
        form.setVisibleById("parecer_prazo_obs_row", false);
        form.setVisibleById("parecer_responsabilidade_obs_row", false);
        form.setVisibleById("parecer_conduta_obs_row", false);

        setEnableRequestFields(form, true);
        setEnableTechnicalAdviceFields(form, true);

        return;
    }

    if (atividadeAtual == atividades.ATIVIDADE_GERENTE_APROVAR_SOLICITACAO) {
        setEnableManagerApprovalFields(form, true);
        setVisibilityManagerApprovalPanel(form, true);

        if (isEditingForm) {
            form.setValue("aprovacao_gerente", "");
            customHTML.append('<script>$(configuraEventosAprovacaoGerente);</script>');
        }

        return;
    }

    if (atividadeAtual == atividades.ATIVIDADE_CORRIGIR_SOLICITACAO) {
        setEnableTechnicalAdviceFields(form, true);
        setVisibilityManagerApprovalPanel(form, true);
        form.setEnabled("data_entrega", true);

        if (isEditingForm) {
            customHTML.append('<script>$(function () { configuraEventosDadosSolicitacao(); configuraEventosParecerTecnico(); });</script>');
        }

        return;
    }
    // ...
}

Eu acabo criando funções para desabilitar os campos de acordo com os painéis/agrupamentos que faço no formulário. Exemplo:

/**
 * Habilita/Desabilita os campos da Aprovação UAD
 *
 * @param {FormController} form Formulário
 * @param {boolean} enabled Se true habilita os campos, caso contrário são desabilitados
 */
function setEnableUadApprovalFields(form, enable) {
    form.setEnabled("analise_uad", enable);
    form.setEnabled("analise_uad_justificativa", enable);
}

/**
 * Exibe/Oculta paineil de aprovação da Unidade Administrativa
 *
 * @param {FormController} form
 * @param {boolean} visible
 */
function setVisibilityUadApprovalPanel(form, visible) {
    form.setVisibleById("panel_analise_uad", visible);
    form.setVisibleById("analise_uad_justificativa_row", form.getValue("analise_uad") == "reprovado");
}

E pra facilitar acessar as Atividades, em ter que ficar jogando números mágicos no código, faço uma função que me retorna os números das atividades pra ir utilizando nas condições.

/**
 * Atividades do Processo
 *
 */
function atividadesEmisCapTec() {
    return {
        ATIVIDADE_INICIO: 5
      , ATIVIDADE_GERENTE_APROVAR_SOLICITACAO: 50
      , ATIVIDADE_CORRIGIR_SOLICITACAO: 55
      , ATIVIDADE_UAD_ANALISAR_SOLICITACAO: 6
      , ATIVIDADE_EMITIR_PARECER_JURIDICO: 12
      , ATIVIDADE_SELECIONAR_REPRESENTANTE: 58
      , ATIVIDADE_VALIDAR_MINUTA: 16
      , ATIVIDADE_APROVAR_MINUTA: 18
      , ATIVIDADE_CORRIGIR_MINUTA: 24
      , ATIVIDADE_COLETAR_ASSINATURA: 22
      , FIM_REPROVADO_UAD: 10
      , FIM_REPROVADO_JURIDICO: 41
      , FIM_REPROVADO_SOLICITANTE: 46
  };
}

Estou tentando entender o seu codigo, me diga uma coisa:
image
aqui entre parênteses, esse nome que vc da é o nome do processo?
pq vc coloca _?

Sobre o evento displayFields
https://tdn.totvs.com/pages/releaseview.action?pageId=270924158#EventosdeFormulário-displayFields

Sobre os métodos que usei:
https://tdn.totvs.com/pages/releaseview.action?pageId=662892312

1 curtida

Consegui usando: function displayFields(form, customHTML) { form.setVisible("campoA", false); form.setVisibleById("linha___1", false); }

porem preciso desativar um checkbox, mas nao está indo com esse tipo de função, preciso que quando chegue neste demarcado em vermelho:
image
fique inativo, e apenas na aprovação de solicitaçao fique ativo, mas nao estou conseguindo desabilitar o check box

Funcionou bruno, fiz um outro metodo de validação mas deu certo.