Last active
May 23, 2016 17:43
-
-
Save EthraZa/6dda54010e5661728d51ed43f1db0dfc to your computer and use it in GitHub Desktop.
Funções de validação de Inscrição Estadual
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| <?php | |
| /* | |
| * Funções de validação de Inscrição Estadual | |
| * | |
| * Fórmulas dos Fiscos das 27 UF's no Site do SINTEGRA: | |
| * http://www.sintegra.gov.br/insc_est.html | |
| */ | |
| /** | |
| * Checa Inscrição Estadual | |
| * | |
| * $sI (String) I.E. sem mascara - ex. preg_replace('/[A-Za-z_\W+ ]/', '', $sI); | |
| * $sU (String) Codigo UF IBGE ou Sigla UF | |
| * | |
| * return boolean | |
| */ | |
| function isIE($sI, $sU) { | |
| $sI = (string) $sI; | |
| if ($sU && (($sI == 'ISENTO') || ($sI == '1850170') || ($sI == '1350110'))) | |
| return true; | |
| switch(strtoupper($sU)) { | |
| //Norte | |
| case '11': | |
| case 'RO': | |
| return isIeRO($sI); | |
| case '12': | |
| case 'AC': | |
| return isIeAC($sI.''); | |
| case '13': | |
| case 'AM': | |
| return isIeAM($sI); | |
| case '14': | |
| case 'RR': | |
| return isIeRR($sI); | |
| case '15': | |
| case 'PA': | |
| return isIePA($sI); | |
| case '16': | |
| case 'AP': | |
| return isIeAP($sI); | |
| case '17': | |
| case 'TO': | |
| return isIeTO($sI); | |
| //Nordeste | |
| case '21': | |
| case 'MA': | |
| return isIeMA($sI); | |
| case '22': | |
| case 'PI': | |
| return isIePI($sI); | |
| case '23': | |
| case 'CE': | |
| return isIeCE($sI); | |
| case '24': | |
| case 'RN': | |
| return isIeRN($sI); | |
| case '25': | |
| case 'PB': | |
| return isIePB($sI); | |
| case '26': | |
| case 'PE': | |
| return isIePE($sI); | |
| case '27': | |
| case 'AL': | |
| return isIeAL($sI); | |
| case '28': | |
| case 'SE': | |
| return isIeSE($sI); | |
| case '29': | |
| case 'BA': | |
| return isIeBA($sI); | |
| //Sudeste | |
| case '31': | |
| case 'MG': | |
| return isIeMG($sI); | |
| case '32': | |
| case 'ES': | |
| return isIeES($sI); | |
| case '33': | |
| case 'RJ': | |
| return isIeRJ($sI); | |
| case '35': | |
| case 'SP': | |
| return isIeSP($sI); | |
| //Sul | |
| case '41': | |
| case 'PR': | |
| return isIePR($sI); | |
| case '42': | |
| case 'SC': | |
| return isIeSC($sI); | |
| case '43': | |
| case 'RS': | |
| return isIeRS($sI); | |
| //Centro-Oeste | |
| case '50': | |
| case 'MS': | |
| return isIeMS($sI); | |
| case '51': | |
| case 'MT': | |
| return isIeMT($sI); | |
| case '52': | |
| case 'GO': | |
| return isIeGO($sI); | |
| case '53': | |
| case 'DF': | |
| return isIeDF($sI); | |
| default: | |
| return false; | |
| } | |
| } | |
| //Acre | |
| function isIeAC($sI){ | |
| $ret = false; | |
| $aI = str_split($sI); | |
| if (count($aI) == 13 && $aI[0] == '0' && $aI[1] == '1') { | |
| $s = (4 * $aI[0]) + (3 * $aI[1]) + (2 * $aI[2]) + (9 * $aI[3]) + (8 * $aI[4]) + (7 * $aI[5]) + (6 * $aI[6]) + (5 * $aI[7]) + (4 * $aI[8]) + (3 * $aI[9]) + (2 * $aI[10]); | |
| $da = 11 - ($s % 11); | |
| if ($da > 9) $da = 0; | |
| $s = (5 * $aI[0]) + (4 * $aI[1]) + (3 * $aI[2]) + (2 * $aI[3]) + (9 * $aI[4]) + (8 * $aI[5]) + (7 * $aI[6]) + (6 * $aI[7]) + (5 * $aI[8]) + (4 * $aI[9]) + (3 * $aI[10]) + (2 * $aI[11]); | |
| $db = 11 - ($s % 11); | |
| if ($db > 9) $db = 0; | |
| $ret = (($aI[11] == $da) && ($aI[12] == $db)); | |
| } | |
| return $ret; | |
| } | |
| //Alagoas | |
| function isIeAL($sI){ | |
| $ret = false; | |
| $aI = str_split($sI); | |
| if (count($aI) == 9) { | |
| $s = (2 * $aI[0]) + (3 * $aI[1]) + (4 * $aI[2]) + (5 * $aI[3]) + (6 * $aI[4]) + (7 * $aI[5]) + (8 * $aI[6]) + (9 * $aI[7]); | |
| $da = $s % 11; | |
| if ($da > 9) $da = 0; | |
| $ret = ($aI[8] == $da); | |
| } | |
| return $ret; | |
| } | |
| //Amapa | |
| function isIeAP($sI){ | |
| $ret = false; | |
| $aI = str_split($sI); | |
| if (count($aI) == 9 && $aI[0] == '0' && $aI[1] == '3') { | |
| $p = substr($sI, 0, -1); | |
| if ($p < '03017001') { | |
| $p = 5; | |
| $d = 0; | |
| } else if ($p > '03017000' && $p < '03019023') { | |
| $p = 9; | |
| $d = 1; | |
| } else { | |
| $p = 0; | |
| $d = 0; | |
| } | |
| $s = $p + (9 * $aI[0]) + (8 * $aI[1]) + (7 * $aI[2]) + (6 * $aI[3]) + (5 * $aI[4]) + (4 * $aI[5]) + (3 * $aI[6]) + (2 * $aI[7]); | |
| $da = 11 - ($s % 11); | |
| if ($da == 10) { | |
| $da = 0; | |
| } else if ($da > 10) { | |
| $da = $d; | |
| } | |
| $ret = ($aI[8] == $da); | |
| } | |
| return $ret; | |
| } | |
| //Amazonas | |
| function isIeAM($sI){ | |
| $ret = false; | |
| $aI = str_split($sI); | |
| if (count($aI) == 9) { | |
| $s = ($aI[0] * 9) + ($aI[1] * 8) + ($aI[2] * 7) + ($aI[3] * 6) + ($aI[4] * 5) + ($aI[5] * 4) + ($aI[6] * 3) + ($aI[7] * 2); | |
| if ($s < 11) { | |
| $da = 11 - $s; | |
| } else { | |
| $da = $s % 11; | |
| if ($da <= 1) { | |
| $da = 0; | |
| } else { | |
| $da = 11 - $da; | |
| } | |
| } | |
| $ret = ($aI[8] == $da); | |
| } | |
| return $ret; | |
| } | |
| //Bahia | |
| function isIeBA($sI){ | |
| $ret = false; | |
| $aI = str_split($sI); | |
| $c = count($aI); | |
| if ($c == 9 && $aI[0] == 0) | |
| $aI = array_shift($aI); | |
| if ($c == 8) { | |
| $m = (($aI[0] >= 0 && $aI[0] <= 5) || $aI[0] == 8)? 10 : 11; | |
| $s = (7 * $aI[0]) + (6 * $aI[1]) + (5 * $aI[2]) + (4 * $aI[3]) + (3 * $aI[4]) + (2 * $aI[5]); | |
| $da = $s % $m; | |
| if ($da > 0) $da = $m - $da; | |
| $s = (8 * $aI[0]) + (7 * $aI[1]) + (6 * $aI[2]) + (5 * $aI[3]) + (4 * $aI[4]) + (3 * $aI[5]) + (2 * $aI[7]); | |
| $db = $s % $m; | |
| if ($db < 2) { | |
| $db = 0; | |
| } else { | |
| $db = $m - $db; | |
| } | |
| $ret = (($aI[7] == $da) && ($aI[6] == $db)); | |
| } else if ($c == 9) { | |
| $m = (($aI[0] >= 0 && $aI[0] <= 5) || $aI[0] == 8)? 10 : 11; | |
| $s = (8 * $aI[0]) + (7 * $aI[1]) + (6 * $aI[2]) + (5 * $aI[3]) + (4 * $aI[4]) + (3 * $aI[5]) + (2 * $aI[6]); | |
| $da = $s % $m; | |
| if ($da > 0) $da = $m - $da; | |
| $s = (9 * $aI[0]) + (8 * $aI[1]) + (7 * $aI[2]) + (6 * $aI[3]) + (5 * $aI[4]) + (4 * $aI[5]) + (3 * $aI[6]) + (2 * $aI[8]); | |
| $db = $s % $m; | |
| if ($db < 2) { | |
| $db = 0; | |
| } else { | |
| $db = $m - $db; | |
| } | |
| $ret = (($aI[8] == $da) && ($aI[7] == $db)); | |
| } | |
| return $ret; | |
| } | |
| //Ceara | |
| function isIeCE($sI){ | |
| $ret = false; | |
| $aI = str_split($sI); | |
| if (count($aI) == 9) { | |
| $s = (9 * $aI[0]) + (8 * $aI[1]) + (7 * $aI[2]) + (6 * $aI[3]) + (5 * $aI[4]) + (4 * $aI[5]) + (3 * $aI[6]) + (2 * $aI[7]); | |
| $da = 11 - ($s % 11); | |
| if ($da > 9) $da = 0; | |
| $ret = ($aI[8] == $da); | |
| } | |
| return $ret; | |
| } | |
| //Distrito Federal | |
| function isIeDF($sI){ | |
| $ret = false; | |
| $aI = str_split($sI); | |
| if (count($aI) == 13 && $aI[0] == '0' && $aI[1] == '7') { | |
| $s = (4 * $aI[0]) + (3 * $aI[1]) + (2 * $aI[2]) + (9 * $aI[3]) + (8 * $aI[4]) + (7 * $aI[5]) + (6 * $aI[6]) + (5 * $aI[7]) + (4 * $aI[8]) + (3 * $aI[9]) + (2 * $aI[10]); | |
| $da = 11 - ($s % 11); | |
| if ($da > 9) $da = 0; | |
| $s = (5 * $aI[0]) + (4 * $aI[1]) + (3 * $aI[2]) + (2 * $aI[3]) + (9 * $aI[4]) + (8 * $aI[5]) + (7 * $aI[6]) + (6 * $aI[7]) + (5 * $aI[8]) + (4 * $aI[9]) + (3 * $aI[10]) + (2 * $aI[11]); | |
| $db = 11 - ($s % 11); | |
| if ($db > 9) $db = 0; | |
| $ret = (($aI[11] == $da) && ($aI[12] == $db)); | |
| } | |
| return $ret; | |
| } | |
| //Espirito Santo | |
| function isIeES($sI){ | |
| $ret = false; | |
| $aI = str_split($sI); | |
| if (count($aI) == 9) { | |
| $s = (9 * $aI[0]) + (8 * $aI[1]) + (7 * $aI[2]) + (6 * $aI[3]) + (5 * $aI[4]) + (4 * $aI[5]) + (3 * $aI[6]) + (2 * $aI[7]); | |
| $da = $s % 11; | |
| if ($da < 1) { | |
| $da = 0; | |
| } else { | |
| $da = 11 - $da; | |
| } | |
| $ret = ($aI[8] == $da); | |
| } | |
| return $ret; | |
| } | |
| //Goias | |
| function isIeGO($sI){ | |
| $ret = false; | |
| $aI = str_split($sI); | |
| if (count($aI) == 9 && $aI[0] == '1' && ($aI[1] == '0' || $aI[1] == '1' || $aI[1] == '5')) { | |
| $s = (9 * $aI[0]) + (8 * $aI[1]) + (7 * $aI[2]) + (6 * $aI[3]) + (5 * $aI[4]) + (4 * $aI[5]) + (3 * $aI[6]) + (2 * $aI[7]); | |
| $da = $s % 11; | |
| if ($da == 0) { | |
| $da = 0; | |
| } else if ($da == 1 && ($sI >= 10103105 && $sI <= 10119997)){ | |
| $da = 1; | |
| } else if ($da == 1) { | |
| $da = 0; | |
| } else if ($da > 1) { | |
| $da = 11 - $da; | |
| } | |
| $ret = ($aI[8] == $da); | |
| } | |
| return $ret; | |
| } | |
| //Maranhao | |
| function isIeMA($sI){ | |
| $ret = false; | |
| $aI = str_split($sI); | |
| if (count($aI) == 9 && $aI[0] == '1' && $aI[1] == '2') { | |
| $s = (9 * $aI[0]) + (8 * $aI[1]) + (7 * $aI[2]) + (6 * $aI[3]) + (5 * $aI[4]) + (4 * $aI[5]) + (3 * $aI[6]) + (2 * $aI[7]); | |
| $da = $s % 11; | |
| if ($da < 2) { | |
| $da = 0; | |
| } else { | |
| $da = 11 - $da; | |
| } | |
| $ret = ($aI[8] == $da); | |
| } | |
| return $ret; | |
| } | |
| //Mato Grosso | |
| function isIeMT($sI){ | |
| $ret = false; | |
| $sI = str_pad($sI, 11, '0', STR_PAD_LEFT); | |
| $aI = str_split($sI); | |
| if (count($aI) == 11) { | |
| $s = (3 * $aI[0]) + (2 * $aI[1]) + (9 * $aI[2]) + (8 * $aI[3]) + (7 * $aI[4]) + (6 * $aI[5]) + (5 * $aI[6]) + (4 * $aI[7]) + (3 * $aI[8]) + (2 * $aI[9]); | |
| $da = $s % 11; | |
| if ($da < 2) { | |
| $da = 0; | |
| } else { | |
| $da = 11 - $da; | |
| } | |
| $ret = ($aI[10] == $da); | |
| } | |
| return $ret; | |
| } | |
| //Mato Grosso do Sul | |
| function isIeMS($sI){ | |
| $ret = false; | |
| $aI = str_split($sI); | |
| if (count($aI) == 9 && $aI[0] == '2' && $aI[1] == '8') { | |
| $s = (9 * $aI[0]) + (8 * $aI[1]) + (7 * $aI[2]) + (6 * $aI[3]) + (5 * $aI[4]) + (4 * $aI[5]) + (3 * $aI[6]) + (2 * $aI[7]); | |
| $da = $s % 11; | |
| if ($da > 0) { | |
| $da = 11 - $da; | |
| if ($da > 9) { | |
| $da = 0; | |
| } | |
| } | |
| $ret = ($aI[8] == $da); | |
| } | |
| return $ret; | |
| } | |
| //Minas Gerais | |
| function isIeMG($sI){ | |
| $ret = false; | |
| $aI = str_split($sI); | |
| if (count($aI) == 13) { | |
| $s = (1 * $aI[0]) . (2 * $aI[1]) . (1 * $aI[2]) . (1 * $aI[3]) . (2 * $aI[4]) . (1 * $aI[5]) . (2 * $aI[6]) . (1 * $aI[7]) . (2 * $aI[8]) . (1 * $aI[9]) . (2 * $aI[10]); | |
| $s = str_split(array_sum(str_split($s))); | |
| $da = (($s[0]+1).'0') - ($s[0].$s[1]); | |
| if ($da > 9) $da = 0; | |
| $s = (3 * $aI[0]) + (2 * $aI[1]) + (11 * $aI[2]) + (10 * $aI[3]) + (9 * $aI[4]) + (8 * $aI[5]) + (7 * $aI[6]) + (6 * $aI[7]) + (5 * $aI[8]) + (4 * $aI[9]) + (3 * $aI[10]) + (2 * $aI[11]); | |
| $db = $s % 11; | |
| if ($db < 2) { | |
| $db = 0; | |
| } else { | |
| $db = 11 - $db; | |
| } | |
| $ret = (($aI[11] == $da) && ($aI[12] == $db)); | |
| } | |
| return $ret; | |
| } | |
| //Para | |
| function isIePA($sI){ | |
| $ret = false; | |
| $aI = str_split($sI); | |
| if (count($aI) == 9 && $aI[0] == '1' && $aI[1] == '5') { | |
| $s = (9 * $aI[0]) + (8 * $aI[1]) + (7 * $aI[2]) + (6 * $aI[3]) + (5 * $aI[4]) + (4 * $aI[5]) + (3 * $aI[6]) + (2 * $aI[7]); | |
| $da = 11 - ($s % 11); | |
| if ($da > 9) $da = 0; | |
| $ret = ($aI[8] == $da); | |
| } | |
| return $ret; | |
| } | |
| //Paraiba | |
| function isIePB($sI){ | |
| $ret = false; | |
| $aI = str_split($sI); | |
| if (count($aI) == 9) { | |
| $s = (9 * $aI[0]) + (8 * $aI[1]) + (7 * $aI[2]) + (6 * $aI[3]) + (5 * $aI[4]) + (4 * $aI[5]) + (3 * $aI[6]) + (2 * $aI[7]); | |
| $da = 11 - ($s % 11); | |
| if ($da > 9) $da = 0; | |
| $ret = ($aI[8] == $da); | |
| } | |
| return $ret; | |
| } | |
| //Parana | |
| function isIePR($sI){ | |
| $ret = false; | |
| $aI = str_split($sI); | |
| if (count($aI) == 10) { | |
| $s = (3 * $aI[0]) + (2 * $aI[1]) + (7 * $aI[2]) + (6 * $aI[3]) + (5 * $aI[4]) + (4 * $aI[5]) + (3 * $aI[6]) + (2 * $aI[7]); | |
| $da = 11 - ($s % 11); | |
| if ($da > 9) $da = 0; | |
| $s = (4 * $aI[0]) + (3 * $aI[1]) + (2 * $aI[2]) + (7 * $aI[3]) + (6 * $aI[4]) + (5 * $aI[5]) + (4 * $aI[6]) + (3 * $aI[7]) + (2 * $aI[8]); | |
| $db = 11 - ($s % 11); | |
| if ($db > 9) $db = 0; | |
| $ret = (($aI[8] == $da) && ($aI[9] == $db)); | |
| } | |
| return $ret; | |
| } | |
| //Pernambuco | |
| function isIePE($sI){ | |
| $ret = false; | |
| $c = strlen($sI); | |
| if ($c < 9) | |
| $sI = str_pad($sI, 9, '0', STR_PAD_LEFT); | |
| else if ($c > 9 && $c < 14) | |
| $sI = str_pad($sI, 14, '0', STR_PAD_LEFT); | |
| $aI = str_split($sI); | |
| if (count($aI) == 9) { | |
| $s = (8 * $aI[0]) + (7 * $aI[1]) + (6 * $aI[2]) + (5 * $aI[3]) + (4 * $aI[4]) + (3 * $aI[5]) + (2 * $aI[6]); | |
| $da = $s % 11; | |
| if ($da < 2) { | |
| $da = 0; | |
| } else { | |
| $da = 11 - $da; | |
| } | |
| $s = (9 * $aI[0]) + (8 * $aI[1]) + (7 * $aI[2]) + (6 * $aI[3]) + (5 * $aI[4]) + (4 * $aI[5]) + (3 * $aI[6]) + (2 * $aI[7]); | |
| $db = $s % 11; | |
| if ($db < 2) { | |
| $db = 0; | |
| } else { | |
| $db = 11 - $db; | |
| } | |
| $ret = (($aI[7] == $da) && ($aI[8] == $db)); | |
| } else if (count($aI) == 14) { | |
| $s = (5 * $aI[0]) + (4 * $aI[1]) + (3 * $aI[2]) + (2 * $aI[3]) + (1 * $aI[4]) + (9 * $aI[5]) + (8 * $aI[6]) + (7 * $aI[7]) + (6 * $aI[8]) + (5 * $aI[9]) + (4 * $aI[10]) + (3 * $aI[11]) + (2 * $aI[12]); | |
| $da = 11 - ($s % 11); | |
| if ($da > 9) | |
| $da = $da - 10; | |
| $ret = ($aI[13] == $da); | |
| } | |
| return $ret; | |
| } | |
| //Piaui | |
| function isIePI($sI){ | |
| $ret = false; | |
| $aI = str_split($sI); | |
| if (count($aI) == 9) { | |
| $s = (9 * $aI[0]) + (8 * $aI[1]) + (7 * $aI[2]) + (6 * $aI[3]) + (5 * $aI[4]) + (4 * $aI[5]) + (3 * $aI[6]) + (2 * $aI[7]); | |
| $da = 11 - ($s % 11); | |
| if ($da > 9) $da = 0; | |
| $ret = ($aI[8] == $da); | |
| } | |
| return $ret; | |
| } | |
| //Rio de Janeiro | |
| function isIeRJ($sI){ | |
| $ret = false; | |
| $aI = str_split($sI); | |
| if (count($aI) == 8) { | |
| $s = (2 * $aI[0]) + (7 * $aI[1]) + (6 * $aI[2]) + (5 * $aI[3]) + (4 * $aI[4]) + (3 * $aI[5]) + (2 * $aI[6]); | |
| $da = $s % 11; | |
| if ($da < 2) { | |
| $da = 0; | |
| } else { | |
| $da = 11 - $da; | |
| } | |
| $ret = ($aI[7] == $da); | |
| } | |
| return $ret; | |
| } | |
| //Rio Grande do Norte | |
| function isIeRN($sI){ | |
| $ret = false; | |
| $aI = str_split($sI); | |
| $c = count($aI); | |
| if ($c == 9 || $c == 10) { | |
| if ($c == 9) { | |
| $s = (9 * $aI[0]) + (8 * $aI[1]) + (7 * $aI[2]) + (6 * $aI[3]) + (5 * $aI[4]) + (4 * $aI[5]) + (3 * $aI[6]) + (2 * $aI[7]); | |
| } else { | |
| $s = (10 * $aI[0]) + (9 * $aI[1]) + (8 * $aI[2]) + (7 * $aI[3]) + (6 * $aI[4]) + (5 * $aI[5]) + (4 * $aI[6]) + (3 * $aI[7]) + (2 * $aI[8]); | |
| } | |
| $da = (10*$s) % 11; | |
| if ($da > 9) $da = 0; | |
| $ret = ($c == 9)? ($aI[8] == $da) : ($aI[9] == $da); | |
| } | |
| return $ret; | |
| } | |
| //Rio Grande do Sul | |
| function isIeRS($sI){ | |
| $ret = false; | |
| $sI = str_pad($sI, 10, '0', STR_PAD_LEFT); | |
| $aI = str_split($sI); | |
| if (count($aI) == 10) { | |
| $s = (2 * $aI[0]) + (9 * $aI[1]) + (8 * $aI[2]) + (7 * $aI[3]) + (6 * $aI[4]) + (5 * $aI[5]) + (4 * $aI[6]) + (3 * $aI[7]) + (2 * $aI[8]); | |
| $da = 11 - ($s % 11); | |
| if ($da > 9) $da = 0; | |
| $ret = ($aI[9] == $da); | |
| } | |
| return $ret; | |
| } | |
| //Rondonia | |
| function isIeRO($sI){ | |
| $ret = false; | |
| $aI = str_split($sI); | |
| if (count($aI) == 14) { | |
| $s = (6 * $aI[0]) + (5 * $aI[1]) + (4 * $aI[2]) + (3 * $aI[3]) + (2 * $aI[4]) + (9 * $aI[5]) + (8 * $aI[6]) + (7 * $aI[7]) + (6 * $aI[8]) + (5 * $aI[9]) + (4 * $aI[10]) + (3 * $aI[11]) + (2 * $aI[12]); | |
| $da = 11 - ($s % 11); | |
| if ($da > 9) $da = $da - 10; | |
| $ret = ($aI[13] == $da); | |
| } | |
| return $ret; | |
| } | |
| //Roraima | |
| function isIeRR($sI){ | |
| $ret = false; | |
| $aI = str_split($sI); | |
| if (count($aI) == 9 && $aI[0] == '2' && $aI[1] == '4') { | |
| $s = (1 * $aI[0]) + (2 * $aI[1]) + (3 * $aI[2]) + (4 * $aI[3]) + (5 * $aI[4]) + (6 * $aI[5]) + (7 * $aI[6]) + (8 * $aI[7]); | |
| $da = $s % 9; | |
| $ret = ($aI[8] == $da); | |
| } | |
| return $ret; | |
| } | |
| //Santa Catarina | |
| function isIeSC($sI){ | |
| $ret = false; | |
| $aI = str_split($sI); | |
| if (count($aI) == 9) { | |
| $s = (9 * $aI[0]) + (8 * $aI[1]) + (7 * $aI[2]) + (6 * $aI[3]) + (5 * $aI[4]) + (4 * $aI[5]) + (3 * $aI[6]) + (2 * $aI[7]); | |
| $da = $s % 11; | |
| if ($da < 2) { | |
| $da = 0; | |
| } else { | |
| $da = 11 - $da; | |
| } | |
| $ret = ($aI[8] == $da); | |
| } | |
| return $ret; | |
| } | |
| //Sao Paulo | |
| function isIeSP($sI){ | |
| $ret = false; | |
| $aI = str_split($sI); | |
| if (count($aI) == 13 && $aI[0] == 'P') { // Produtor Rural | |
| $s = ($aI[1] * 1) + ($aI[2] * 3) + ($aI[3] * 4) + ($aI[4] * 5) + ($aI[5] * 6) + ($aI[6] * 7) + ($aI[7] * 8) + ($aI[8] * 10); | |
| $da = $s % 11; | |
| if ($da > 9) $da = $da % 10; | |
| $ret = (($aI[9] == $da)); | |
| } else if (count($aI) == 12){ | |
| $s = ($aI[0] * 1) + ($aI[1] * 3) + ($aI[2] * 4) + ($aI[3] * 5) + ($aI[4] * 6) + ($aI[5] * 7) + ($aI[6] * 8) + ($aI[7] * 10); | |
| $da = $s % 11; | |
| if ($da > 9) $da = $da % 10; | |
| $s = ($aI[0] * 3) + ($aI[1] * 2) + ($aI[2] * 10) + ($aI[3] * 9) + ($aI[4] * 8) + ($aI[5] * 7) + ($aI[6] * 6) + ($aI[7] * 5) + ($aI[8] * 4) + ($aI[9] * 3) + ($aI[10] * 2); | |
| $db = $s % 11; | |
| if ($db > 9) $db = $db % 10; | |
| $ret = (($aI[8] == $da) && ($aI[11] == $db)); | |
| } | |
| return $ret; | |
| } | |
| //Sergipe | |
| function isIeSE($sI){ | |
| $ret = false; | |
| $aI = str_split($sI); | |
| if (count($aI) == 9) { | |
| $s = (9 * $aI[0]) + (8 * $aI[1]) + (7 * $aI[2]) + (6 * $aI[3]) + (5 * $aI[4]) + (4 * $aI[5]) + (3 * $aI[6]) + (2 * $aI[7]); | |
| $da = 11 - ($s % 11); | |
| if ($da > 9) $da = 0; | |
| $ret = ($aI[8] == $da); | |
| } | |
| return $ret; | |
| } | |
| //Tocantins | |
| function isIeTO($sI){ | |
| $ret = false; | |
| if (strlen($sI) == 9) | |
| $sI = substr($sI, 0, 2).'99'.substr($sI, -7); | |
| $aI = str_split($sI); | |
| if (count($aI) == 11 && ($aI[2] == 0 || $aI[2] == 9) && (($aI[3] > 0 && $aI[3] < 4) || ($aI[3] == 9))) { | |
| $s = (9 * $aI[0]) + (8 * $aI[1]) + (7 * $aI[4]) + (6 * $aI[5]) + (5 * $aI[6]) + (4 * $aI[7]) + (3 * $aI[8]) + (2 * $aI[9]); | |
| $da = $s % 11; | |
| if ($da < 2) { | |
| $da = 0; | |
| } else { | |
| $da = 11 - $da; | |
| } | |
| $ret = ($aI[10] == $da); | |
| } | |
| return $ret; | |
| } | |
| ?> |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment