iiifx-production / ukraine-identification-number
Ukraine Identification Number
Installs: 7 149
Dependents: 0
Suggesters: 0
Security: 0
Stars: 10
Watchers: 2
Forks: 4
Open Issues: 0
Type:extension
Requires
- php: ^5.5||^7.0||^8.0
Requires (Dev)
- phpunit/phpunit: 4.7.*@stable
This package is not auto-updated.
Last update: 2024-11-22 04:32:50 UTC
README
Идентификационный номер налогоплательщика Украины. Парсер и генератор ИНН.
Алгоритм
Номер ИНН состоит из десяти знаков
$number = "{0}{1}{2}{3}{4}{5}{6}{7}{8}{9}"
Вычисляем контрольную сумму: суммируем множители первых 9 знаков ИНН
$sum =
( $number{0} * -1 ) +
( $number{1} * 5 ) +
( $number{2} * 7 ) +
( $number{3} * 9 ) +
( $number{4} * 4 ) +
( $number{5} * 6 ) +
( $number{6} * 10 ) +
( $number{7} * 5 ) +
( $number{8} * 7 )
Получаем контрольное число: делим контрольную сумму на 11 по модулю, потом на 10
$digit = ( $sum % 11 ) % 10
Если контрольное число и 10 знак в ИНН совпадает - номер правильный
$digit === $number{9}
Пол определяется по 9 знаку в ИНН: четное - женщина, нечетное - мужчина
$sex = ( $number{8} % 2 ) ? MALE : FEMALE
Возраст определяется по первым 5 знакам ИНН: это количество дней от 1899-12-31
Установка
Используя Composer:
$ composer require iiifx-production/ukraine-identification-number
Использование
Парсер ИНН:
use iiifx\Identification\Ukraine\Parser; # Номер ИНН $number = '2245134075'; # Создаем парсер $parser = Parser::create($number); # Или так $parser = new Parser($number); # Проверяем правильность ИНН if ($parser->isValidNumber()) { echo $parser->getNumber(); # 2245134075 # Определяем пол владельца ИНН echo $parser->getPersonSex(); # Parser::SEX_MALE echo $parser->isPersonMale(); # true echo $parser->isPersonFemale(); # false # Определяем возраст и дату рождения echo $parser->getPersonAge(); # 55 echo $parser->getPersonBirth('Y-m-d'); # 1961-06-20 echo $parser->getPersonBirthDatetime()->format('d.m.Y H:i:s'); # 20.06.1961 00:00:00 # Контрольная сумма и число echo $parser->getControlSum(); # 192 echo $parser->getControlDigit(); # 5 }
Генератор ИНН:
use iiifx\Identification\Ukraine\Builder; # Создаем генератор $builder = new Builder(); # Или вот так $builder = Builder::create(Builder::SEX_MALE, new DateTime('2010-05-12')); # Указывам пол $builder->setPersonSex(Builder::SEX_MALE); $builder->setPersonMale(); $builder->setPersonFemale(); # Указываем возраст $builder->setPersonAge(55); $builder->setPersonBirthDatetime(new DateTime('1962-11-03')); # Генерируем ИНН echo $builder->createNumber(); # 2295209520
Тесты
Удалены, нужно перенастраивать