ИНН

Неожиданно обнаружил, что ИНН распадается на несколько цифр. Существуют 10— и 12-ти значные ИНН в форме NNNNXXXXXC и NNNNXXXXXXCC.

Где
NNNN — номер налоговой инспекции.
XXXXX или XXXXXX — номер налогоплательщика.
C или CC — контрольные числа.

Я нашёл алгоритм расчёта контрольных числе и переписал их на PHP. Если кому-нибудь надо (например, для проверки на валидность введённого ИНН), могу поделиться:


function CheckNN ($inn)
{
$factor = array (3, 7, 2, 4, 10, 3, 5, 9, 4, 6, 8);

if (strlen($inn) == 10)
{
for ($i = $sum = 0; $i<9; $i++)
$sum += $inn{$i}*$factor[$i+2];

return ($sum%11)%10;
}

if (strlen($inn) == 12)
{
for ($i = $sum = 0; $i<10; $i++)
$sum += $inn{$i}*$factor[$i+1];

for ($i = $sum2 = 0; $i<11; $i++)
$sum2 += $inn{$i}*$factor[$i];

return (($sum%11)%10) . (($sum2%11)%10);
}

return FALSE;
}

31 августа 2003 18:32

Ваше имя или адрес блога (можно OpenID):

Текст вашего комментария, не HTML: