Hoje vai uma dica rápida para criar uma regra de validação para validar um campo que contenha CPF ou CPNJ no Salesforce. Criamos para esse exemplo um campo cuja o nome de API é CNPJ_CPF__c, no objeto que desejo realizar a validação (Account - Conta, por exemplo).
Dei um nome para a regra de validação e na formula para validação, inseri o seguinte código:
IF( LEN( CNPJ_CPF__c )= 14
,
NOT(
OR(
LEN(CNPJ_CPF__c)=0,
AND( NOT(CNPJ_CPF__c = "00000000000000"),
MOD(MOD(11-MOD(VALUE(MID(CNPJ_CPF__c,1,1))*5+VALUE(MID(CNPJ_CPF__c,2,1))*4+VALUE(MID(CNPJ_CPF__c,3,1))*3+VALUE(MID(CNPJ_CPF__c,4,1))*2+VALUE(MID(CNPJ_CPF__c,5,1))*9+VALUE(MID(CNPJ_CPF__c,6,1))*8+VALUE(MID(CNPJ_CPF__c,7,1))*7+VALUE(MID(CNPJ_CPF__c,8,1))*6+VALUE(MID(CNPJ_CPF__c,9,1))*5+VALUE(MID(CNPJ_CPF__c,10,1))*4+VALUE(MID(CNPJ_CPF__c,11,1))*3+VALUE(MID(CNPJ_CPF__c,12,1))*2,11),11),10) =
VALUE(MID(CNPJ_CPF__c,13,1)),
MOD(MOD(11-MOD(VALUE(MID(CNPJ_CPF__c,1,1))*6+VALUE(MID(CNPJ_CPF__c,2,1))*5+VALUE(MID(CNPJ_CPF__c,3,1))*4+VALUE(MID(CNPJ_CPF__c,4,1))*3+VALUE(MID(CNPJ_CPF__c,5,1))*2+VALUE(MID(CNPJ_CPF__c,6,1))*9+VALUE(MID(CNPJ_CPF__c,7,1))*8+VALUE(MID(CNPJ_CPF__c,8,1))*7+VALUE(MID(CNPJ_CPF__c,9,1))*6+VALUE(MID(CNPJ_CPF__c,10,1))*5+VALUE(MID(CNPJ_CPF__c,11,1))*4+VALUE(MID(CNPJ_CPF__c,12,1))*3+VALUE(MID(CNPJ_CPF__c,13,1))*2,11),11),10) =
VALUE(MID(CNPJ_CPF__c,14,1))
)))
,
IF(LEN(CNPJ_CPF__c) < 11, TRUE,
NOT AND (CNPJ_CPF__c <> '00000000000',CNPJ_CPF__c <> '11111111111',
CNPJ_CPF__c <> '22222222222',CNPJ_CPF__c <> '33333333333',CNPJ_CPF__c <> '44444444444',CNPJ_CPF__c <> '55555555555',CNPJ_CPF__c <> '66666666666',CNPJ_CPF__c <> '77777777777',CNPJ_CPF__c <> '88888888888',CNPJ_CPF__c <> '99999999999',
IF ((MID(CNPJ_CPF__c , 10, 1) =
IF (MOD(((VALUE(MID(CNPJ_CPF__c , 1, 1))*10)+
(VALUE(MID(CNPJ_CPF__c , 2, 1))*9)+
(VALUE(MID(CNPJ_CPF__c , 3, 1))*8)+
(VALUE(MID(CNPJ_CPF__c , 4, 1))*7)+
(VALUE(MID(CNPJ_CPF__c , 5, 1))*6)+
(VALUE(MID(CNPJ_CPF__c , 6, 1))*5)+
(VALUE(MID(CNPJ_CPF__c , 7, 1))*4)+
(VALUE(MID(CNPJ_CPF__c , 8, 1))*3)+
(VALUE(MID(CNPJ_CPF__c , 9, 1))*2)),11) < 2,'0',
TEXT(11 - MOD(((VALUE(MID(CNPJ_CPF__c , 1, 1))*10)+
(VALUE(MID(CNPJ_CPF__c , 2, 1))*9)+
(VALUE(MID(CNPJ_CPF__c , 3, 1))*8)+
(VALUE(MID(CNPJ_CPF__c , 4, 1))*7)+
(VALUE(MID(CNPJ_CPF__c , 5, 1))*6)+
(VALUE(MID(CNPJ_CPF__c , 6, 1))*5)+
(VALUE(MID(CNPJ_CPF__c , 7, 1))*4)+
(VALUE(MID(CNPJ_CPF__c , 8, 1))*3)+
(VALUE(MID(CNPJ_CPF__c , 9, 1))*2)),11))
)),TRUE,FALSE),
IF ((MID(CNPJ_CPF__c , 11, 1) =
IF (MOD(((VALUE(MID(CNPJ_CPF__c , 1, 1))*11)+
(VALUE(MID(CNPJ_CPF__c , 2, 1))*10)+
(VALUE(MID(CNPJ_CPF__c , 3, 1))*9)+
(VALUE(MID(CNPJ_CPF__c , 4, 1))*8)+
(VALUE(MID(CNPJ_CPF__c , 5, 1))*7)+
(VALUE(MID(CNPJ_CPF__c , 6, 1))*6)+
(VALUE(MID(CNPJ_CPF__c , 7, 1))*5)+
(VALUE(MID(CNPJ_CPF__c , 8, 1))*4)+
(VALUE(MID(CNPJ_CPF__c , 9, 1))*3)+
(VALUE(MID(CNPJ_CPF__c , 10, 1))*2)),11) < 2,'0',
TEXT(11 - MOD(((VALUE(MID(CNPJ_CPF__c , 1, 1))*11)+
(VALUE(MID(CNPJ_CPF__c , 2, 1))*10)+
(VALUE(MID(CNPJ_CPF__c , 3, 1))*9)+
(VALUE(MID(CNPJ_CPF__c , 4, 1))*8)+
(VALUE(MID(CNPJ_CPF__c , 5, 1))*7)+
(VALUE(MID(CNPJ_CPF__c , 6, 1))*6)+
(VALUE(MID(CNPJ_CPF__c , 7, 1))*5)+
(VALUE(MID(CNPJ_CPF__c , 8, 1))*4)+
(VALUE(MID(CNPJ_CPF__c , 9, 1))*3)+
(VALUE(MID(CNPJ_CPF__c , 10, 1))*2)),11))
)),TRUE,FALSE)
)
)
)
Coloquei a mensagem de "CPF ou CNPJ inválido!", preenchi onde eu gostaria que exibisse o erro e salvei.
Observação importante: Essa validação não permite a utilização pontos, hífens e barras na composição do CPF/CNPJ. Apenas números. Apesar disso, o campo criado é Texto.
Agora nada de CPFs ou CNPJs inválidos na sua Org.
Agradeço ao Allan Pecli por me alertar e corrigir alguns itens nessa validação. Se alguém perceber algum problema e quiser colaborar, fique a vontade para me notificar. Valeu Allan!
* Está precisando de um suporte ou consultoria para customização de regras de validação da sua plataforma Salesforce? Entre em contato conosco - CbCloud: http://www.cbcloud.com.br/