Welcome to Community Week 2025! Join us to learn, connect, and be recognized as we celebrate the spirit of Community and the power of AI. Get the details  

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