Встретил у Болка запись о том, как формируются номера российских ИНН. Стало интересно, как с этим обстоит дело у нас.
Итак, украинский ИНН (индивидуальный налоговый номер) состоит из 10 цифр. В нём
зашифрованы:
дата рождения (первые пять цифр образуют число, равное количеству дней от 01.01.1900 до даты рождения владельца ИНН);
пол (чётность девятой цифры: четная цифра – женский, нечетная – мужской);
checksum, т.е. контрольное число (последняя цифра)
Как считается контрольная цифра я пока что не знаю. Здесь можно проверить, как работает большой брат, исходники большого брата — под катом.
Забавные факты про украинский ИНН:
физическим лицам, которые из-за своих религиозных или других убеждений отказываются от принятия идентификационного номера, официально сообщили об этом соответствующим органам государственной власти и имеют соответствующую отметку в паспорте, предоставляется идентификационный номер в виде номера и серии паспорта таких лиц (src);
иностранцы не могут отказаться от кодов, даже если они имеют соответствующие религиозные убеждения. Причина: украинские власти не могут внести соответствующую отметку в их паспорт (см. предыдущий пункт) и присвоить ИНН по номеру паспорта. Зачем нужен украинский ИНН иностранцу? Чтобы иметь возможность стать учредителем юрлица или заниматься предпринимательской деятельностью на территории Украины (src);
я не смог найти в сети информацию о том, какие ИНН присваиваются гражданам, родившимся в 19 веке (т.е. до 01.01.1900 года).
Отдельно хочется процитировать каких-то религиозных маразматиков (орфография и пунктуация сохранены):
Как здесь не заметить, что определенные проблемы будут ощущать, например, лица, которые изменили свой пол.
Понятно, что не сложно написать программу, которая к 1 января 1900 года прибавит число и получит дату рождения. Так что, милые дамы, со старинным правилом этикета, согласно которого о Вашем возрасте спрашивать было не принято, придется расстаться. У технотронного века свой жесткий и далекий от условностей приличия “этикет”.
Мой вам совет, милые дамы: если кто-то выспрашивает у вас ваш ИНН, отнеситесь к нему с подозрением!
/* developed by студия webous
http://dev.zp.ua/
author: val petruchek
e-mail: petruchek, собака, gmail.com
date: October 29, 2007 */
function ParseUaID($id)
{
//$id must contain 10 digits
if (!preg_match('/^\d{10}$/',$id) || ($id==0))
return false;
$result = array();
//sex
$result['sex'] = (substr($id,8,1) % 2) ? 'M' : 'F';
//birthdate
$days = substr($id,0,5);
$year = 1900; $day = 01; $month = 01;
while ($days > 0)
{
$daysInYear = (checkdate (02, 29, $year)) ? 366 : 365;
if ($days > $daysInYear)
{
$days -= $daysInYear;
$year ++;
}
else{
for ($daysInMonth = 31; !checkdate($month, $daysInMonth, $year); $daysInMonth–) ;
if ($days > $daysInMonth)
{
$days -= $daysInMonth;
$month ++;
}
else{
$day = $days;
$days = 0;
}
}
}
$result['year'] = $year;
$result['month'] = $month;
$result['day'] = $day;
return $result;
}