Usuário com melhor resposta
CRM 2011 - Como faço para ter conteúdo exclusivo em um campo evitando duplicidade de registros?

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.
- Editado Tiago Michelini CardosoMVP, Moderator quarta-feira, 10 de outubro de 2012 12:46 padronização
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.- Marcado como Resposta Tiago Michelini CardosoMVP, Moderator quarta-feira, 10 de outubro de 2012 12:47
-
- Sugerido como Resposta Rodrigo HentzModerator sexta-feira, 21 de setembro de 2012 11:22
- Marcado como Resposta Tiago Michelini CardosoMVP, Moderator quarta-feira, 10 de outubro de 2012 12:47
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.- Marcado como Resposta Tiago Michelini CardosoMVP, Moderator quarta-feira, 10 de outubro de 2012 12:47
-
- Sugerido como Resposta Rodrigo HentzModerator sexta-feira, 21 de setembro de 2012 11:22
- Marcado como Resposta Tiago Michelini CardosoMVP, Moderator quarta-feira, 10 de outubro de 2012 12:47
-
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.
-
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 -
-
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