Ir para conteúdo
  • Cadastre-se

Cpf E Cpnj


Posts Recomendados

Uma solução para uma consulta de validação é esta:

1. Crie um arquivo no bloco de notas (ou similar) com este código abaixo, salve como "Todos Arquivos" com nome "validacpf.php"


<?php

$cfnCPF = "CPF ou CNPJ"; // Preencha com o nome do CUSTOM FIELD referente ao CPF/CNPJ

$validar = TRUE; // Preencha com false se não deseja efetuar validação de CPF/CNPJ

$permitirCPF = TRUE; // Preencha com false se não deseja permitir CPF

$permitirCNPJ = TRUE; // Preencha com false se não deseja permitir CNPJ

$permitirVazio = FALSE; // Preencha com false se não deseja permitir valor vazio

$permitirTroca = FALSE; // Preencha com false se não deseja permitir a troca posterior do CPF/CNPJ

$permitirTrocaSomenteEmBranco = TRUE; // Permite troca somente se o valor atual estiver em branco

//******************************************************************************

//* Créditos: Guto / Portal do Host - http://portaldohost.com.br/user/1710-guto/ *

// *******************************************************************************

// * Não mexer abaixo deste ponto											 *

// *******************************************************************************

if ($validar) add_hook("ClientDetailsValidation",1,"validaCampo","");

if (!$permitirTroca) add_hook("ClientEdit",2,"validaTroca","");

function validaTroca($vars) {

global $cfnCPF,$errormessage,$old_customfieldsarray,$permitirTrocaSomenteEmBranco;

$data = mysql_fetch_array(select_query("tblcustomfields","id",array("type"=>"client","fieldname"=>$cfnCPF)));

$cfnID = $data["id"];

foreach ($old_customfieldsarray as $cf)

	 if (($cf["id"] == $cfnID) && ($cf["value"] != $_POST["customfield"][$cfnID])) {

	 if (($permitirTrocaSomenteEmBranco && $cf["value"] != "") || (!$permitirTrocaSomenteEmBranco)) {

		 $_POST["customfield"][$cfnID] = $cf["value"];

		 echo "<script>setTimeout(\"alert('Voc&ecirc; n&atilde;o pode alterar seu CPF ou CNPJ');\",1000); </script>";

	 }

	 }

}

function validaCampo($vars) {

global $cfnCPF,$errormessage,$tr,$permitirVazio,$permitirCPF,$permitirCNPJ;

$data = mysql_fetch_array(select_query("tblcustomfields","id",array("type"=>"client","fieldname"=>$cfnCPF)));

$cfnID = $data["id"];

$value = $_POST["customfield"][$cfnID];

if (!Empty($value)) {

	 $value = SoNumeros($value);

	 if ((strlen($value) == 11) && ($permitirCPF)) {

	 if (!ValidaCPF($value)) $errormessage .= "<li>O CPF informado &eacute; inv&aacute;lido";

	 else $_POST["customfield"][$cfnID] = ValidaCPF($value);

	 }

	 else if ((strlen($value) == 14) && ($permitirCNPJ)) {

	 if (!ValidaCNPJ($value)) $errormessage .= "<li>O CNPJ informado &eacute; inv&aacute;lido";

	 else $_POST["customfield"][$cfnID] = ValidaCNPJ($value);

	 }

	 else {

	 $errormessage .= "<li>O valor informado no campo ".$cfnCPF." &eacute; inv&aacute;lido";

	 }

}

else if (!$permitirVazio) {

	 $errormessage .= "<li>O campo ".$cfnCPF." &eacute; de preenchimento obrigat&oacute;rio";

}

}

function SoNumeros($num) {

return ereg_replace('[^0-9]', '', $num);

}

function ValidaCPF($cpf) {

$cpf = str_pad(ereg_replace('[^0-9]', '', $cpf), 11, '0', STR_PAD_LEFT);

if (strlen($cpf) != 11 || $cpf == '00000000000' || $cpf == '99999999999') return false;

for ($t = 9; $t < 11; $t++) {

	 for ($d = 0, $c = 0; $c < $t; $c++) $d += $cpf{$c} * (($t + 1) - $c);

	 $d = ((10 * $d) % 11) % 10;

	 if ($cpf{$c} != $d) return false;

}

return substr($cpf,0,3).".".substr($cpf,3,3).".".substr($cpf,6,3)."-".substr($cpf,9,2);

}

function ValidaCNPJ($cnpj) {

$cnpj = str_pad(ereg_replace('[^0-9]', '', $cnpj), 11, '0', STR_PAD_LEFT);

if (strlen($cnpj) != 14 || $cnpj == '00000000000000' || $cnpj == '99999999999999') return false;

$soma = ($cnpj[0]*5)+($cnpj[1] * 4)+($cnpj[2]*3)+($cnpj[3]*2)+($cnpj[4]*9)+($cnpj[5]*8)+($cnpj[6]*7)+($cnpj[7]*6)+($cnpj[8]*5)+($cnpj[9]*4)+($cnpj[10]*3)+($cnpj[11]*2);

$d1 = ($soma % 11) < 2 ? 0 : 11 - ($soma % 11);

$soma = ($cnpj[0]*6)+($cnpj[1]*5)+($cnpj[2]*4)+($cnpj[3]*3)+($cnpj[4]*2)+($cnpj[5]*9)+($cnpj[6]*8)+($cnpj[7]*7)+($cnpj[8]*6)+($cnpj[9]*5)+($cnpj[10]*4)+($cnpj[11]*3)+($cnpj[12]*2);

$d2 = ($soma % 11) < 2 ? 0 : 11 - ($soma % 11);

if ($cnpj[12] != $d1 || $cnpj[13] != $d2) return false;

return substr($cnpj,0,2).".".substr($cnpj,2,3).".".substr($cnpj,5,3)."/".substr($cnpj,8,4)."-".substr($cnpj,12,2);

}

?>

2. Insira o arquivo "validacpf.php" na pasta "http://seuservidor.c.../includes/hooks"

Obs.: Altere as linhas no arquivo "validacpf.php" segundo a descição comentada à frente do mesmo, ou deixe como está.

3. No painel de administração do WHMCS vá até "Opções", "Campos Personalizados dos Clientes".

Crie um campo personalizado com nome CPF ou CNPJ. Este campo deve ser do tipo "Caixa de Texto".

Marque este campo como "Campo obrigatório" e "Mostrar no formulário de pedido".

Atenção:

A. Este validador não faz consultas à receita.

B. Tenha cuidado com o cadastro de números como 1111111 e etc... Observe números assim nos pedidos; ou perca um tempinho no oráculo lendo sobre "validação de cpf e cnpj", e melhore o arquivo. Recomendo algo como isto.

C. Não confie em dados "digitados" para tomar ações que envolvam cunho judicial ou de registro em órgãos de análise de crédito.

Créditos do validador: Guto / Portal do Host - http://portaldohost....user/1710-guto/

Link para o comentário
Compartilhar em outros sites

Uma solução para uma consulta de validação é esta:

1. Crie um arquivo no bloco de notas (ou similar) com este código abaixo, salve como "Todos Arquivos" com nome "validacpf.php"


<?php

$cfnCPF = "CPF ou CNPJ"; // Preencha com o nome do CUSTOM FIELD referente ao CPF/CNPJ

$validar = TRUE; // Preencha com false se não deseja efetuar validação de CPF/CNPJ

$permitirCPF = TRUE; // Preencha com false se não deseja permitir CPF

$permitirCNPJ = TRUE; // Preencha com false se não deseja permitir CNPJ

$permitirVazio = FALSE; // Preencha com false se não deseja permitir valor vazio

$permitirTroca = FALSE; // Preencha com false se não deseja permitir a troca posterior do CPF/CNPJ

$permitirTrocaSomenteEmBranco = TRUE; // Permite troca somente se o valor atual estiver em branco

//******************************************************************************

//* Créditos: Guto / Portal do Host - http://portaldohost.com.br/user/1710-guto/ *

// *******************************************************************************

// * Não mexer abaixo deste ponto											 *

// *******************************************************************************

if ($validar) add_hook("ClientDetailsValidation",1,"validaCampo","");

if (!$permitirTroca) add_hook("ClientEdit",2,"validaTroca","");

function validaTroca($vars) {

global $cfnCPF,$errormessage,$old_customfieldsarray,$permitirTrocaSomenteEmBranco;

$data = mysql_fetch_array(select_query("tblcustomfields","id",array("type"=>"client","fieldname"=>$cfnCPF)));

$cfnID = $data["id"];

foreach ($old_customfieldsarray as $cf)

	 if (($cf["id"] == $cfnID) && ($cf["value"] != $_POST["customfield"][$cfnID])) {

	 if (($permitirTrocaSomenteEmBranco && $cf["value"] != "") || (!$permitirTrocaSomenteEmBranco)) {

		 $_POST["customfield"][$cfnID] = $cf["value"];

		 echo "<script>setTimeout(\"alert('Voc&ecirc; n&atilde;o pode alterar seu CPF ou CNPJ');\",1000); </script>";

	 }

	 }

}

function validaCampo($vars) {

global $cfnCPF,$errormessage,$tr,$permitirVazio,$permitirCPF,$permitirCNPJ;

$data = mysql_fetch_array(select_query("tblcustomfields","id",array("type"=>"client","fieldname"=>$cfnCPF)));

$cfnID = $data["id"];

$value = $_POST["customfield"][$cfnID];

if (!Empty($value)) {

	 $value = SoNumeros($value);

	 if ((strlen($value) == 11) && ($permitirCPF)) {

	 if (!ValidaCPF($value)) $errormessage .= "<li>O CPF informado &eacute; inv&aacute;lido";

	 else $_POST["customfield"][$cfnID] = ValidaCPF($value);

	 }

	 else if ((strlen($value) == 14) && ($permitirCNPJ)) {

	 if (!ValidaCNPJ($value)) $errormessage .= "<li>O CNPJ informado &eacute; inv&aacute;lido";

	 else $_POST["customfield"][$cfnID] = ValidaCNPJ($value);

	 }

	 else {

	 $errormessage .= "<li>O valor informado no campo ".$cfnCPF." &eacute; inv&aacute;lido";

	 }

}

else if (!$permitirVazio) {

	 $errormessage .= "<li>O campo ".$cfnCPF." &eacute; de preenchimento obrigat&oacute;rio";

}

}

function SoNumeros($num) {

return ereg_replace('[^0-9]', '', $num);

}

function ValidaCPF($cpf) {

$cpf = str_pad(ereg_replace('[^0-9]', '', $cpf), 11, '0', STR_PAD_LEFT);

if (strlen($cpf) != 11 || $cpf == '00000000000' || $cpf == '99999999999') return false;

for ($t = 9; $t < 11; $t++) {

	 for ($d = 0, $c = 0; $c < $t; $c++) $d += $cpf{$c} * (($t + 1) - $c);

	 $d = ((10 * $d) % 11) % 10;

	 if ($cpf{$c} != $d) return false;

}

return substr($cpf,0,3).".".substr($cpf,3,3).".".substr($cpf,6,3)."-".substr($cpf,9,2);

}

function ValidaCNPJ($cnpj) {

$cnpj = str_pad(ereg_replace('[^0-9]', '', $cnpj), 11, '0', STR_PAD_LEFT);

if (strlen($cnpj) != 14 || $cnpj == '00000000000000' || $cnpj == '99999999999999') return false;

$soma = ($cnpj[0]*5)+($cnpj[1] * 4)+($cnpj[2]*3)+($cnpj[3]*2)+($cnpj[4]*9)+($cnpj[5]*8)+($cnpj[6]*7)+($cnpj[7]*6)+($cnpj[8]*5)+($cnpj[9]*4)+($cnpj[10]*3)+($cnpj[11]*2);

$d1 = ($soma % 11) < 2 ? 0 : 11 - ($soma % 11);

$soma = ($cnpj[0]*6)+($cnpj[1]*5)+($cnpj[2]*4)+($cnpj[3]*3)+($cnpj[4]*2)+($cnpj[5]*9)+($cnpj[6]*8)+($cnpj[7]*7)+($cnpj[8]*6)+($cnpj[9]*5)+($cnpj[10]*4)+($cnpj[11]*3)+($cnpj[12]*2);

$d2 = ($soma % 11) < 2 ? 0 : 11 - ($soma % 11);

if ($cnpj[12] != $d1 || $cnpj[13] != $d2) return false;

return substr($cnpj,0,2).".".substr($cnpj,2,3).".".substr($cnpj,5,3)."/".substr($cnpj,8,4)."-".substr($cnpj,12,2);

}

?>

2. Insira o arquivo "validacpf.php" na pasta "http://seuservidor.c.../includes/hooks"

Obs.: Altere as linhas no arquivo "validacpf.php" segundo a descição comentada à frente do mesmo, ou deixe como está.

3. No painel de administração do WHMCS vá até "Opções", "Campos Personalizados dos Clientes".

Crie um campo personalizado com nome CPF ou CNPJ. Este campo deve ser do tipo "Caixa de Texto".

Marque este campo como "Campo obrigatório" e "Mostrar no formulário de pedido".

Atenção:

A. Este validador não faz consultas à receita.

B. Tenha cuidado com o cadastro de números como 1111111 e etc... Observe números assim nos pedidos; ou perca um tempinho no oráculo lendo sobre "validação de cpf e cnpj", e melhore o arquivo. Recomendo algo como isto.

C. Não confie em dados "digitados" para tomar ações que envolvam cunho judicial ou de registro em órgãos de análise de crédito.

Créditos do validador: Guto / Portal do Host - http://portaldohost....user/1710-guto/

Bem interessante esta dica, simples e funcional. Testei aqui e funcionou direitinho.

Link para o comentário
Compartilhar em outros sites

Visitante
Este tópico está impedido de receber novos posts.
  • Quem Está Navegando   0 membros estão online

    • Nenhum usuário registrado visualizando esta página.
×
×
  • Criar Novo...

Informação Importante

Concorda com os nossos termos?