Jump to content

Cpf E Cpnj


Recommended Posts

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 to comment
Share on other 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 to comment
Share on other sites

Guest
This topic is now closed to further replies.
  • Recently Browsing   0 members

    • No registered users viewing this page.
×
×
  • Create New...

Important Information

Do you agree with our terms?