Regra de negócio para copiar as variáveis da RITM para o campo descrição.

Alan Carvalho
Tera Contributor

Olá Comunidade,

Realize a criação de um regra de negócio para ler todas as variáveis do item solicitado (RITM) e copiar para o campo descrição a Pergunta e Valor inserido pelo usuário para cada um delas. Porém, me deparei com duas situações e peço a ajuda de você para resolver.

 

1 - As linhas destacadas em vermelho estão retornando mais de uma variável separada por vírgula e é exibido o nome interno ao invés da Pergunta. Além disso, vale ressaltar que essas mesmas variáveis destacadas em vermeho retornaram corretamente em outras linhas do campo descrição.

AlanCarvalho_0-1718644255888.png

2 - Algumas variáveis não são preenchidas pelo usuário através do formulário em detrimento de algumas regras de obrigatoridade e com isso gostaria de copiar para o campo descrição apenas as variáveis que tem respostas, as que não tiverem não precisam ser copiadas.

AlanCarvalho_1-1718644760006.png

 

Segue script implantando na regra de negócio:

(function executeRule(current, previous /*null when async*/) {
    var descricao = "Solicitação de atendimento conforme as informações listadas abaixo:\n\n";

    // Itera sobre as variaveis no formulário atual
    for (var variableName in current.variables) {
        if (current.variables.hasOwnProperty(variableName) && variableName !== 'user_info' && !variableName.startsWith('tri_dados_')) {
            var displayValue = current.variables[variableName].getDisplayValue();
            var label = current.variables[variableName].getLabel();

            // Se o valor é um objeto,processa os campo internos recusivamente
            if (typeof displayValue === 'object') {
                processaCampos(displayValue, label + ':');
            } else {
                // Adiciona o campo à descrição usando o rótulo
                descricao += label + ": " + displayValue + "\n";
            }
        }
    }

    // Define a descrição no campo "description"
    current.description = descricao;

    // Atualia o registro
    current.update();

    function processaCampos(obj, prefixo) {
        for (var key in obj) {
            if (obj.hasOwnProperty(key) && !key.startsWith('tri_dados_')) {
                var displayValue = obj[key];
                var nomeCampo = prefixo + key;

                // Se o valor é um objeto, processa os campos internos recursivamente
                if (typeof displayValue === 'object') {
                    processaCampos(displayValue, nomeCampo + ':');
                } else {
                    // Adiciona o campo à descrição usando o rótulo
                    descricao += nomeCampo + ": " + displayValue + "\n";
                }
            }
        }
    }

})(current, previous);

0 REPLIES 0