Visitante Postado Agosto 6, 2012 Compartilhar Postado Agosto 6, 2012 Amigos.. existe alguma forma de colocar os campos de texto no formulario de pedido para cliente escolher o cpf ou cnpj e fazer as validações dos mesmos?? Link para o comentário Compartilhar em outros sites More sharing options...
Visitante Postado Agosto 6, 2012 Compartilhar Postado Agosto 6, 2012 O Edvan tem um módulo que faz isto, entre em contato com ele. Link para o comentário Compartilhar em outros sites More sharing options...
Visitante Postado Agosto 7, 2012 Compartilhar Postado Agosto 7, 2012 Eu vi o solução do Edvan porém infelizmente hoje não tenho money para investir nisso. Será que não tem uma solução gratuita ou uma adaptação que alguém queria disponibilizar? Link para o comentário Compartilhar em outros sites More sharing options...
norival Postado Agosto 15, 2012 Compartilhar Postado Agosto 15, 2012 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ê nã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 é inválido"; else $_POST["customfield"][$cfnID] = ValidaCPF($value); } else if ((strlen($value) == 14) && ($permitirCNPJ)) { if (!ValidaCNPJ($value)) $errormessage .= "<li>O CNPJ informado é inválido"; else $_POST["customfield"][$cfnID] = ValidaCNPJ($value); } else { $errormessage .= "<li>O valor informado no campo ".$cfnCPF." é inválido"; } } else if (!$permitirVazio) { $errormessage .= "<li>O campo ".$cfnCPF." é de preenchimento obrigató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/ 2 Link para o comentário Compartilhar em outros sites More sharing options...
Enio F. Postado Agosto 15, 2012 Compartilhar Postado Agosto 15, 2012 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ê nã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 é inválido"; else $_POST["customfield"][$cfnID] = ValidaCPF($value); } else if ((strlen($value) == 14) && ($permitirCNPJ)) { if (!ValidaCNPJ($value)) $errormessage .= "<li>O CNPJ informado é inválido"; else $_POST["customfield"][$cfnID] = ValidaCNPJ($value); } else { $errormessage .= "<li>O valor informado no campo ".$cfnCPF." é inválido"; } } else if (!$permitirVazio) { $errormessage .= "<li>O campo ".$cfnCPF." é de preenchimento obrigató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 More sharing options...
Danilo br Postado Agosto 15, 2012 Compartilhar Postado Agosto 15, 2012 Muito Boa sua Dica :) Link para o comentário Compartilhar em outros sites More sharing options...
Visitante Postado Agosto 16, 2012 Compartilhar Postado Agosto 16, 2012 Cara funciono exatamente como eu queria. Perfeito muito obrigado. Link para o comentário Compartilhar em outros sites More sharing options...
McGuyver Postado Agosto 16, 2012 Compartilhar Postado Agosto 16, 2012 Muito legal! Parabéns pelo trabalho!!! Já implementei aqui e efetuei os testes. Funcionando perfeitamente! ;-) Valeu! Link para o comentário Compartilhar em outros sites More sharing options...
inbloombr Postado Agosto 19, 2012 Compartilhar Postado Agosto 19, 2012 Consulta direta na receita Achei esta solução interessante, alguem ajudaria a adaptar ? http://www.bindideias.com.br/2011/12/02/consultando-um-cpf-na-receita-federal-utilizando-o-php/ Retornar o nome ainda. Dá pra fazer o mesmo com o CNPJ Link para o comentário Compartilhar em outros sites More sharing options...
Danilo br Postado Agosto 19, 2012 Compartilhar Postado Agosto 19, 2012 Muito bom, vou dar uma analisada aqui :) Link para o comentário Compartilhar em outros sites More sharing options...
Posts Recomendados