Regra de negócio para copiar as variáveis da RITM para o campo descrição.
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
06-17-2024 10:19 AM
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.
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.
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);