none
CRM 2011 - Como faço para ter conteúdo exclusivo em um campo evitando duplicidade de registros? RRS feed

  • Pergunta

  • Amigos,

    Criei um campo para CNPJ nas Contas e utilizei um script que me foi passado nesse fórum.

    Agora preciso que esse campo tenha conteúdo exclusivo para evitar duplicidade de Contas.

    Utilizei Regra de Detecção de Duplicatas.

    Porém, ele notifica que existe uma duplicata mas permite que o registro seja inserido.

    Com isso posso ter um mesmo cliente cadastrado mais de uma vez.

    Como faço para garantir que não haverá mais de um registro tendo como campo verificador esse campo CNPJ?

    Obrigado.



    quarta-feira, 19 de setembro de 2012 21:41

Respostas

  • Adriano, Bom dia

    Eu passei por um problema igual e resolvi da seguinte forma,

    Após o usuário digitar a informação e sair do campo, através de um javascript eu buscava na base de dados aquela informação, se já tivesse em algum outro registro eu limpava o campo e dava uma mensagem informando que não poderia usar aquela informação por já ter uma igual na base

    Sou desenvolvedor então, sempre busco soluções através de códigos, não sei se existe uma forma nativa de se fazer isso


    Bruno Viegas D. Ribeiro

    Nunca abandone sua thread!
    - Se alguma resposta resolveu seu problema marque-a como resposta para que possa ajudar outras pessoas.
    - Se a resposta não resolveu, mas ajudou a você chegar a sua resposta Marque-a como útil.

    quinta-feira, 20 de setembro de 2012 11:37
  • Adriano, bom dia.

    Voce deve criar um plugin que valide se existe alguem com o mesmo CNPJ, caso exista retorne um erro ao usuario disparando uma excecao.


    Atenciosamente,
    Rodrigo Hentz - MCP.MCPS.MCNPS.MCTS.MBSS.MBSP.MCITP
    Profile
    Blog

    sexta-feira, 21 de setembro de 2012 11:22
    Moderador

Todas as Respostas

  • Adriano, Bom dia

    Eu passei por um problema igual e resolvi da seguinte forma,

    Após o usuário digitar a informação e sair do campo, através de um javascript eu buscava na base de dados aquela informação, se já tivesse em algum outro registro eu limpava o campo e dava uma mensagem informando que não poderia usar aquela informação por já ter uma igual na base

    Sou desenvolvedor então, sempre busco soluções através de códigos, não sei se existe uma forma nativa de se fazer isso


    Bruno Viegas D. Ribeiro

    Nunca abandone sua thread!
    - Se alguma resposta resolveu seu problema marque-a como resposta para que possa ajudar outras pessoas.
    - Se a resposta não resolveu, mas ajudou a você chegar a sua resposta Marque-a como útil.

    quinta-feira, 20 de setembro de 2012 11:37
  • Adriano, bom dia.

    Voce deve criar um plugin que valide se existe alguem com o mesmo CNPJ, caso exista retorne um erro ao usuario disparando uma excecao.


    Atenciosamente,
    Rodrigo Hentz - MCP.MCPS.MCNPS.MCTS.MBSS.MBSP.MCITP
    Profile
    Blog

    sexta-feira, 21 de setembro de 2012 11:22
    Moderador
  • Depois da consulta vc poderia pode limpar o campo:

    crmForm.all.NOME_DO_CAMPO.DataValue = null 

    Se o campo for Obrigatório o usuário não poderá salvar.

    O que fiz aqui foi além de mostrar a mensagem avisando que o cadastro já existe, mostrar a opção para o usuário abrir a conta, se ele clicar em "OK" o JS abre a conta cujo o CNPJ existe.

    sexta-feira, 28 de setembro de 2012 17:33
  • Adriano, novidades? 

    Atenciosamente,
    Rodrigo Hentz - MCP.MCPS.MCNPS.MCTS.MBSS.MBSP.MCITP
    Profile
    Blog

    sexta-feira, 28 de setembro de 2012 17:38
    Moderador
  • Ola adriano ,
    em alguns clientes que implantei eles optaram por fazer amarrações pelo telefone outros pelo CNPJ
    Porem a logica é a mesma para ambos .


    //DETECTAR - Dupicidade de CNPJ na Conta
    function RetrieveContaCNPJDuplicado(CNPJ)
    {
     var xml = "" +
     "<?xml version=\"1.0\" encoding=\"utf-8\"?>" +
     "<soap:Envelope xmlns:soap=\"http://schemas.xmlsoap.org/soap/envelope/\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\">" +
      GenerateAuthenticationHeader() +
      " <soap:Body>" +
       " <RetrieveMultiple xmlns=\"http://schemas.microsoft.com/crm/2007/WebServices\">" +
        " <query xmlns:q1=\"http://schemas.microsoft.com/crm/2006/Query\" xsi:type=\"q1:QueryExpression\">" +
        " <q1:EntityName>account</q1:EntityName>" +
        " <q1:ColumnSet xsi:type=\"q1:AllColumns\" />" +
        " <q1:Distinct>false</q1:Distinct>" +
        " <q1:Criteria>" +
         " <q1:FilterOperator>And</q1:FilterOperator>" +
         " <q1:Conditions>" +
          " <q1:Condition>" +
          " <q1:AttributeName>new_cnpj</q1:AttributeName>" +
          " <q1:Operator>Equal</q1:Operator>" +
          " <q1:Values>" +
          " <q1:Value xsi:type=\"xsd:string\">" + CNPJ + "</q1:Value>" +
          " </q1:Values>" +
          " </q1:Condition>" +
          " </q1:Conditions>" +
        " </q1:Criteria>" +
        " </query>" +
       " </RetrieveMultiple>" +
      " </soap:Body>" +
     "</soap:Envelope>" +
     "";

     var xmlHttpRequest = new ActiveXObject("Msxml2.XMLHTTP");
     xmlHttpRequest.Open("POST", "/mscrmservices/2007/CrmService.asmx", false);
     xmlHttpRequest.setRequestHeader("SOAPAction","http://schemas.microsoft.com/crm/2007/WebServices/RetrieveMultiple");
     xmlHttpRequest.setRequestHeader("Content-Type", "text/xml; charset=utf-8");
     xmlHttpRequest.setRequestHeader("Content-Length", xml.length);
     xmlHttpRequest.send(xml);

     var resultXml = xmlHttpRequest.responseXML;
     var entityNodes = resultXml.selectNodes("//RetrieveMultipleResult/BusinessEntities/BusinessEntity");

     if (entityNodes.length == 0) return (null);

     var entityNode = entityNodes[0];
     
     var Nomenode = entityNode.selectSingleNode("q1:name");
     var CNPJnode = entityNode.selectSingleNode("q1:new_cnpj");
     
      alert( 'Já exixte uma Conta cadastrada com o CNPJ -->  ' +  CNPJnode.text + ' - ' + Nomenode.text  );

      crmForm.all.new_cnpj.DataValue = null;

     return (null);
    }

    Só chamar a função e madar os parametros , colocar os seus campos no scripts   !
    funciona no CRM 2011 e CRM 4

    sábado, 29 de setembro de 2012 16:59
  • Adriano, tem várias opções para resolver o seu problema. favor analisar e marcar as respostas.

    Atenciosamente,
    Rodrigo Hentz - MCP.MCPS.MCNPS.MCTS.MBSS.MBSP.MCITP
    Profile
    Blog

    domingo, 30 de setembro de 2012 22:37
    Moderador
  • Obrigado Henrique.

    Estive fora alguns dias.

    Vou fazer os testes.

    Um abraço.

    quarta-feira, 31 de outubro de 2012 12:27
  • A solução mais recomendada para esse caso é a do Rodrigo Hentz, uma vez que você não pode confiar esse tipo de validação ao navegador.

    O javascript pode dar problema, o browser pode dar problema, o usuário pode "ultrapassar" (bypass) sua validação, etc... resumindo, não é seguro. Existem diversos outros motivos para isso dar errado. Vai funcionar via javascript? Sim, mas é fortemente sujeito a falha.

    Crie um plugin de execução síncrona que faça essa validação e dispare uma exceção em caso de duplicidade.


    Virtual Group - Soluções Inteligentes www.virtualgroup.com.br

    sexta-feira, 2 de novembro de 2012 17:33