Para maiores informações sobre os cálculos do CNPJ podem ser vistos neste artigo postado em meu Blog.
class_cnpj.php
1: <?2: /*
3: -----------------------------------------------
4: Desenvolvido por Cristiano Ávila Salomão
5: -----------------------------------------------
6: Descrição da Classe:
7: - Informa se o CNPJ é valido
8: - Calcula os digitos verificadores do CNPJ
9: -----------------------------------------------
10: */
11: class checa_cnpj {
12: function CalculaCNPJ($t,$Valor) {
13: for ($i = 0; $i <= strlen($Valor); $i++) {
14: $Resultado += $Valor{$i} * $t; 15: $t--;16: if ($t < 2) {
17: $t = 9; 18: } 19: }20: return $Resultado;
21: } 22: 23: function CNPJ($CNPJ, $Tipo) {
24: // Pegar dados para gerar os digitos verificadores
25: $Caracter = array('.','/','-');
26: $Vaziu = array('','','');
27: $SomenteNumeros = str_replace($Caracter,$Vaziu,$CNPJ);28: if ($Tipo == 1) {
29: $Valor = substr($SomenteNumeros,0,(strlen($SomenteNumeros)-2));30: } else {
31: $Valor = $SomenteNumeros; 32: } 33: 34: // Calcular o Primeiro digito verificador
35: $T = $this->CalculaCNPJ(5,$Valor);
36: $T = $T % 11;37: if ($T < 2) {
38: $D1 = 0;39: } else {
40: $D1 = 11 - $T; 41: } 42: 43: // Calcular o Segundo digito verificador
44: $T = $this->CalculaCNPJ(6,$Valor.$D1);
45: $T = $T % 11;46: if ($T < 2) {
47: $D2 = 0;48: } else {
49: $D2 = 11 - $T; 50: } 51: 52: if ($Tipo == 1) {
53: // Resultado com os digitos verificadores corretos
54: $Final = $Valor.$D1.$D2; 55: 56: // Resultado da comparação
57: if ($Final == $SomenteNumeros) {
58: return "True";
59: } else {
60: return "False";
61: }62: } else {
63: return $D1.$D2;
64: } 65: } 66: 67: function DV($CNPJ) {
68: return $this->CNPJ($CNPJ, 2);
69: } 70: } 71: ?>



Nenhum comentário:
Postar um comentário