Utilizando opção "Salvar"

Bom dia galera,

Em um fluxo no qual estou trabalhando, queria fazer o uso da opção “Salvar” no preenchimento do formulário.

image

Porém no evento validateForm, valida todos os campos do processo(e não são poucos).

Então, quando o usuário selecionar a opção de Salvar, teoricamente ele não deveria olhar para o validateForm, somente quando for o caso de Enviar.

Uma forma que encontrei para tal foi fazer via evento de Processo:

function beforeTaskSave(colleagueId,nextSequenceId,userList){

    var ativAtual     = getValue("WKNumProces");
    var WKCompletTask = getValue("WKCompletTask");

    if (ativAtual == 20) { // aqui você faz a validação de acordo com sua atividade
         var campo = hAPI.getCardValue("txt_campo"); 

         if (WKCompletTask.equals("true")) { // aqui verifica se está completando a tarefa ou não. TRUE (quando clica em enviar), FALSE (quando clica em salvar)
             if (campo == '') {
                throw "Não pode finalizar o processo sem que o campo esteja preenchido.";
            }
        }
    }
}

A forma correta de fazer isso é realmente transferindo a opção de validações para o evento beforeTaskSave acima ou consigo de alguma forma aproveitar o validateForm?

Agradeço.

Eu faço isso na validateForms:

/**
 * Validação dos dados do formulário
 *
 * @param {FormController} form
 * @throws {string}
 */
function validateForm(form) {
    var numState = parseInt(getValue("WKNumState"));

    // Salvando um rascunho não precisa validar formulário
    if (numState == parseInt(getValue("WKNextState"))) {
        return;
    }

    // Continua as demais validações
}

Dependendo da situação você pode fazer algumas validações simples (por exemplo, se a pessoa digita um CPF/CNPJ errado) pra não deixar salvar um rascunho com informações inválidas.

Mas na regra de negócio de um processo eu tinha alguns outros detalhes para validar/exibir, então pra facilitar a vida no displayFields e outros eventos eu passei a salvar a informação de que as informações salvas eram um rascunho usando o evento de processo beforeTaskSave.

function beforeTaskSave(colleagueId, nextSequenceId, userList) {
    hAPI.setCardValue("rascunho", getValue("WKNumState") == nextSequenceId ? "1" : "");
}

Mas isso foi no caso de um único processo.

2 curtidas

Boa @Bruno_Gasparetto. Obrigado pela resposta.

Este tópico foi fechado automaticamente 16 horas depois da última resposta. Novas respostas não são mais permitidas.