quinta-feira, 11 de maio de 2017

Regras de atribuição de Caso/Lead não funcionam corretamente

Apesar do título, elas funcionam sim e muito bem :) Bem, o que aconteceu recentemente foi que um colega da empresa implementou algumas regras de atribuição de Casos e elas não estavam funcionando. Simplesmente, quando o Caso era criado e atendia as condições da regra, esse não era atribuído à fila que havíamos determinado na regra de atribuição. Fui analisar as regras e elas estava configuradas perfeitamente. Qual seria o problema então?

Após algumas pesquisas descobri que, para as regras de atribuição "rodarem", é necessário que a opção "Atribuir utilizando regras de atribuição" esteja marcada na abertura do caso.




Porém, no meu caso, esse campo nem estava visível. Mas é possível deixá-lo visível (ou não) e deixá-lo marcado (ou não) por padrão. Para tal, é necessário acessar o Layout de tela do Caso/Lead, acionar as propriedades de Layout e configurar os campos da seção "Caixa de seleção Atribuição do caso":


  

No meu caso específico, deixei o "Mostrar na página de edição" desmarcado, para evitar que o usuário desmarque a opção e deixei o "Padrão" marcado. Após salvar o Layout, Casos começaram a ser atribuídos corretamente para as filas definidas nas regras de atribuição. É importante ressaltar que essas mesmas opções estão disponíveis para o Lead.

Apesar dessas facilidades de configuração, caso a criação do caso seja via código, integração ou qualquer outra forma, que não seja o Layout de tela, as regras de compartilhamento não serão executadas. Dessa forma, é necessário fazer uma trigger para forçar a execução das regras de atribuição:



trigger CaseTrigger on Case (after insert) {
    List<Case> casos = new List<Case>();
    Database.DMLOptions dmo = new Database.DMLOptions();
    dmo.AssignmentRuleHeader.useDefaultRule = true;
 
    for(Case c : trigger.new) {
        Case casoAtualiza = new Case(Id = c.id);
        casoAtualiza.setOptions(dmo);
        casos.add(casoAtualiza);
    }
    
    update casos;    
}


É... realmente tem que ser uma trigger AFTER INSERT. Procurei uma explicação simples para tal e confesso que ainda não encontrei. Se souber e quiser postar nos comentários, eu agradeceria!


* Precisa de um suporte ou consultoria para configuração ou desenvolvimento de regras de atribuição sua Org Salesforce? Entre em contato conosco - CbCloud: http://www.cbcloud.com.br/ - Somos parceiros gerenciado Salesforce.

Nenhum comentário: