Google
 

quarta-feira, 20 de fevereiro de 2008

Classe para calculo de CNPJ

Nesta classe para PHP podemos verificar se o CNPJ é valido e calcular o digito verificador.
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:

Publicidade