none
[CRM 2011] Desenvolver plugin que bloqueia qualificação do cliente potencial. RRS feed

  • Pergunta

  • Estou desenvolvendo um plugin que será executado na qualificação do cliente potencial.

    Devo verificar se e uma qualificação e se um campo esta preenchido.

    Criei meu plugin com Message = "QualifyLead".

    para pegar o campo statecode estou utilizando os campos abaixo:

          private OptionSetValue status;

    IPluginExecutionContext context = localContext.PluginExecutionContext; IOrganizationService service = localContext.OrganizationService; Entity entity = (Entity)context.InputParameters["Target"]; status = entity.GetAttributeValue<OptionSetValue>("statecode");

    mas ao tentar mostrar o status na tela me apresenta o erro abaixo:

    Erro de Processo Empresarial
    Unexpected exception from plug-in (Execute): BloqueiaQualificacaoPorStatus.Plugins.PreClientePotencialQualifyLead: System.Collections.Generic.KeyNotFoundException: The given key was not present in the dictionary

    para mostrar o status na tela estou utilizando o código abaixo:

    throw new InvalidPluginExecutionException(status.Value.ToString());

    Parece que não estou conseguindo pegar o valor do campo, alguém tem uma ideia de como desenvolver este plugin?

    segunda-feira, 16 de setembro de 2013 21:52

Respostas

  • Boas Daniel,

    O seu problema é que esta mensagem não tem Target. Para ter acesso a Lead terá que fazer assim:

    EntityReference leadid = (EntityReference)context.InputParameters["LeadId"];
    Entity lead = service.Retrieve("lead", leadid.Id, new ColumnSet(true));

    E depois aceder a propriedade que quer comparar.

    Acho que você consegue realizar isto logo no Javascript para isso "basta" criar outro botão e que só qualifica se tiver certas condições, assim evita ir ao servidor. Segue aqui e aqui duas soluções para implementar isto.

    Espero ter ajudado.
    Se respondi a sua pergunta por favor marque como resposta e\ou como útil.


    Pedro Azevedo Crm Specialist 4.0\2011

    • Sugerido como Resposta Azevedo PedroMVP terça-feira, 17 de setembro de 2013 10:51
    • Marcado como Resposta Daniel Jonathan terça-feira, 17 de setembro de 2013 15:33
    terça-feira, 17 de setembro de 2013 10:51

Todas as Respostas

  • Boas Daniel,

    O seu problema é que esta mensagem não tem Target. Para ter acesso a Lead terá que fazer assim:

    EntityReference leadid = (EntityReference)context.InputParameters["LeadId"];
    Entity lead = service.Retrieve("lead", leadid.Id, new ColumnSet(true));

    E depois aceder a propriedade que quer comparar.

    Acho que você consegue realizar isto logo no Javascript para isso "basta" criar outro botão e que só qualifica se tiver certas condições, assim evita ir ao servidor. Segue aqui e aqui duas soluções para implementar isto.

    Espero ter ajudado.
    Se respondi a sua pergunta por favor marque como resposta e\ou como útil.


    Pedro Azevedo Crm Specialist 4.0\2011

    • Sugerido como Resposta Azevedo PedroMVP terça-feira, 17 de setembro de 2013 10:51
    • Marcado como Resposta Daniel Jonathan terça-feira, 17 de setembro de 2013 15:33
    terça-feira, 17 de setembro de 2013 10:51
  • Pedro novamente muito obrigado, funcionou perfeitamente.

    Não utilizei o JS pois o cliente pode qualificar pelo botão de fora do formulário,  como mostra a imagem abaixo.


    terça-feira, 17 de setembro de 2013 15:41