sexta-feira, 21 de abril de 2017

Alterando Membros do time da Oportunidade em massa - Salesforce

Hoje me deparei com uma situação em que alterar um Membro do Time da Oportunidade, em massa, por outro. A princípio pensei: "Simples! Vou no Objeto OpportunityTeamMember e altero o UserId de um usuário para outro.". Cheguei até a criar um rápido script Apex para executar essa mudança. Porém esbarrei na situação que o UserId não pode ser alterado, conforme descrito na documentação do Objeto: ID of the User who is a member of the opportunity team. This field can’t be updated.!

Bem, diante dessa situação, me restou inserir o novo usuário, Membro do Time da Oportunidade e remover o anterior. Fiz o código Apex para isso, porém esbarrei na situação das divisões da Oportunidade (apesar de não trabalhar com elas nessa Org, haviam divisões) e em situações em que o único participante do Time da Oportunidade era o próprio Owner da Oportunidade (que era o usuário que eu iria remover). Para resolver essas situações, criei um código que apaga o usuário antigo do Time da Oportunidade, apenas quando ele não fosse o Owner da Oportunidade. Veja:


List<opportunityteammember> oppTeam = [SELECT id, OpportunityId, Opportunity.OwnerId, UserId, TeamMemberRole FROM OpportunityTeamMember WHERE TeamMemberRole = 'Gerente de Canais'];
List<opportunityteammember> oppTeamNew = new List<opportunityteammember>();
List<opportunityteammember> oppTeamOld = new List<opportunityteammember>();

for (OpportunityTeamMember otm : oppTeam){
    OpportunityTeamMember otmNew = new OpportunityTeamMember();
    otmNew.OpportunityId = otm.OpportunityId;
    otmNew.TeamMemberRole = otm.TeamMemberRole;    
    otmNew.UserId = '00540000001AY11'; //ID do Novo Gerente de Canais
    oppTeamNew.add(otmNew);
    if (otm.UserId != otm.Opportunity.OwnerId)
        oppTeamOld.add(otm);
}

delete oppTeamOld;
insert oppTeamNew;

No código acima, faço uma busca pelos Membros do Time da Oportunidade que possuam o papel "Gerente de Canais". Nas Oportunidade que possuierem esse papel, eu crio um novo Membro passando o ID e removo o ID antigo, caso ele não seja o Proprietário da Oportunidade.

Caso precise manipular também a divisão da Oportunidade, terá que incluir um tratamento no Objeto OpportunitySplit.

É isso por hoje...


* Precisa de um suporte ou consultoria para manipular os Membros do Time da Oportunidade em sua Org Salesforce? Entre em contato conosco - CbCloud: http://www.cbcloud.com.br/

Nenhum comentário: