Проверка валидности инн
Контрольное число ИНН Поделитесь данными о стоимости ▲▼ Пожаловаться ▲▼ Контрольное число, контрольная цифра – разновидность контрольной суммы, добавляется обычно в конец длинных номеров с целью первичной проверки их правильности. Применяется с целью уменьшения вероятности ошибки при обработке таких номеров: машинном считывании с упаковки товара, записи в документы, голосовой передаче от человека к человеку и т. п. Наличие и правильность контрольного числа не гарантирует достоверность рассматриваемого номера (в том числе не спасает от действий злоумышленников), но на практике достаточно хорошо оберегает от случайных ошибок. Контрольное число чаще всего это либо последняя цифра суммы всех чисел номера, либо результат другой математической операции над цифрами. В компьютерных программах понятие «контрольного числа» обобщено до CRC, бита чётности и Кодов Рида-Соломона; а в некоторых архиваторах объём контрольных данных таков, что позволяет не только обнаружить ошибку, но и исправить её (обнаружение и исправление ошибок). Контрольные числа, применяемые в документах, обычно позволяют восстановить одну потерянную цифру при условиях, что известно, на какой позиции в номере она должна находиться и что остальные цифры в номере правильные. Если неизвестно, на какой позиции есть ошибка, нужно перебрать все возможные варианты (например, для 13-значного номера их будет 13), а из них выбрать наиболее правдоподобные (исходя из анализа содержательной информации в номере). Простое исправление контрольной цифры может привести только к большей ошибке, не связанной с математикой. Валидация контрольного числа ИНН ИНН (идентификационный номер налогоплательщика) организации состоит из 10 цифр: 1-4-я цифры: для российской организации – код налогового органа, который присвоил ИНН; для иностранной организации – индекс, определяемый Федеральной налоговой службой; 5-9-я цифры: для российской организации – порядковый номер записи о лице в территориальном разделе Единого государственного реестра налогоплательщиков налогового органа, который присвоил ИНН; для иностранной организации – код иностранной организации (КИО) согласно Справочнику «Коды иностранных организаций»; 10-я цифра – контрольное число. ИНН физического лица (индивидуального предпринимателя) состоит из 12 цифр: 1-4-я цифры – код налогового органа, который присвоил ИНН; 5-10-я цифры – порядковый номер записи о лице в территориальном разделе Единого государственного реестра налогоплательщиков налогового органа, который присвоил ИНН; 11-12-я цифры – контрольное число. Проверка ИНН Зная ИНН потенциального контрагента, вы всегда сможете выяснить, является ли данная компания реальным юридическим лицом или же это мошенник, у которого нет государственной регистрации. Рассматриваемый способ проверки основан на том, что ИНН не является случайным набором цифр. Первые четыре являются номерами региона и территориальной налоговой инспекции, в которых зарегистрирован налогоплательщик. Следующие пять – это обыкновенный порядковый номер. А вот последняя – десятая – цифра представляет собой так называемое контрольное число ИНН. Для того, чтобы убедиться в подлинности того или иного налогоплательщика, нужно провести несколько небольших вычислений и сравнить полученный результат с этим самым числом. Для наглядности приведем пример. Возьмем произвольный ИНН: 7713456564. Сначала необходимо умножить первые девять цифр ИНН на особые множители, разработанные специалистами Федеральной налоговой службы. Каждой цифре соответствует свой множитель: 2, 4, 10, 3, 5, 9, 4, 6, 8. Произведем вычисления: (7 x 2) + (7 x 4) + (1 x 10) + (3 x 3) + (4 x 5) + (5 x 9) + (6 x 4 )+ (5 x 6) + (6 x 8) = 228 Полученную сумму нужно разделить на 11: 228 : 11 = 20,7. Затем от полученной величины необходимо взять целое число и умножить его на 11: 20 х 11 = 220 Разница между 228 и 220 составляет 8. Это и есть контрольное число ИНН – оно должно быть равно последней цифре ИНН. Однако в нашем случае они не совпадают, поскольку мы изначально взяли номер несуществующего налогоплательщика. Вы можете убедиться в том, что метод работает, взяв ИНН реального контрагента и самостоятельно произведя указанные вычисления. Алгоритм проверки ИНН 10 знаков: Вычисляется контрольная сумма со следующими весовыми коэффициентами: (2,4,10,3,5,9,4,6,8,0) Вычисляется контрольное число как остаток от деления контрольной суммы на 11 Если контрольное число больше 9, то контрольное число вычисляется как остаток от деления контрольного числа на 10 Контрольное число проверяется с десятым знаком ИНН. В случае их равенства ИНН считается правильным. Алгоритм проверки ИНН 12 знаков: Вычисляется контрольная сумма по 11-ти знакам со следующими весовыми коэффициентами: (7,2,4,10,3,5,9,4,6,8,0) Вычисляется контрольное число(1) как остаток от деления контрольной суммы на 11 Если контрольное число(1) больше 9, то контрольное число(1) вычисляется как остаток от деления контрольного числа(1) на 10 Вычисляется контрольная сумма по 12-ти знакам со следующими весовыми коэффициентами: (3,7,2,4,10,3,5,9,4,6,8,0). Вычисляется контрольное число(2) как остаток от деления контрольной суммы на 11 Если контрольное число(2) больше 9, то контрольное число(2) вычисляется как остаток от деления контрольного числа(2) на 10 Контрольное число(1) проверяется с одиннадцатым знаком ИНН и контрольное число(2) проверяется с двенадцатым знаком ИНН. В случае их равенства ИНН считается правильным. Пример. Страховой номер индивидуального лицевого счёта (Россия) Страховой номер индивидуального лицевого счёта страхового свидетельства обязательного пенсионного страхования (он же СНИЛС) проверяется на корректность контрольным числом. СНИЛС имеет вид: «XXX-XXX-XXX YY», где XXX-XXX-XXX – собственно номер, а YY – контрольное число. Алгоритм формирования контрольного числа СНИЛС таков: 1. Проверка контрольного числа Страхового номера проводится только для номеров больше номера 001-001-998 2. Контрольное число СНИЛС рассчитывается следующим образом: 2.1) Каждая цифра СНИЛС умножается на номер своей позиции (позиции отсчитываются с конца) 2.2) Полученные произведения суммируются 2.3) Если сумма меньше 100, то контрольное число равно самой сумме 2.4) Если сумма равна 100 или 101, то контрольное число равно 00 2.5) Если сумма больше 101, то сумма делится по остатку на 101 и контрольное число определяется остатком от деления аналогично пунктам 2.3 и 2.4 ПРИМЕР: Указан СНИЛС 112-233-445 95 Проверяем правильность контрольного числа: цифры номера 1 1 2 2 3 3 4 4 5 номер позиции 9 8 7 6 5 4 3 2 1 Сумма = 1×9 + 1×8 + 2×7 + 2×6 + 3×5 + 3×4 + 4×3 + 4×2 + 5×1 = 95 Сумма равна YY (контрольное число). Контрольное число 95 – указано верно Данный алгоритм не способен обнаружить все случаи ошибок в одной цифре (например, номера 087-654-303 00 и 087-654-302 00 отличаются одной цифрой, но оба будут признаны верными). Также не во всех случаях может быть обнаружена ошибка перестановки двух соседних цифр (например, 087-654-303 00 и 086-754-303 00). Причина – пункт 2.4, где для близких чисел 100 и 101 установлено одинаковое контрольное число 00. Если бы вместо пунктов 2.4, 2.5 применялся пункт 2.4′) Если сумма равна или больше 100, то контрольное число равно двум последним цифрам этой суммы (остатку от деления суммы на 100), то алгоритм был бы способен обнаружить все случаи ошибок в одной цифре и все случаи ошибочной перестановки двух соседних цифр. Пример. Номера ОГРН и ОГРНИП (Основной Государственный Регистрационный Номер (для Индивидуального Предпринимателя)) Состоят из 13 (или 15) цифр, из них последняя – n1 – контрольная. Контрольная цифра равна остатку от деления на 11 (или на 13) числа, состоящего из первых 12 (или 14) цифр. Если остаток больше 9, то n1 = последней цифре остатка. Конкретные примеры: 1037739010891 – 13 цифр, ОГРН. Вычисляем остаток: -1+0-3+7-7+3-9+0-1+0-8+9 = -10 (Признак Паскаля) -10 + 11 = 1(остаток) Контрольное число = 1 – совпадает, номер правильный. 1035006110083 – 13 цифр, ОГРН. Вычисляем остаток: 103500611008 = 11 • 9409146455 + 3(остаток) Контрольное число = 3 – совпадает, номер правильный. 1037739010891 – 13 цифр, ОГРН. Вычисляем остаток: 103773901089 = 11 • 9433991008 + 1(остаток) Контрольное число = 1 – совпадает, номер правильный. 304500116000157 – 15 цифр, ОГРНИП. Вычисляем остаток: 30450011600015 = 13 • 2342308584616 + 7(остаток) Контрольное число = 7 – совпадает, номер правильный. 304463210700212 – 15 цифр, ОГРНИП. Вычисляем остаток: 30446321070021 = 13 • 2342024697693 + 12(остаток) Контрольное число = 2 – совпадает с последней цифрой остатка, номер правильный. Источникиhttps://ru.wikipedia.org/wiki/Контрольное_число#Номера_банковских_карт https://www.egrul.ru/test_inn.html http://www.kholenkov.ru/data-validation/inn/
(adsbygoogle = window.adsbygoogle || []).push({});- Поделитесь данными о стоимости ▲▼
- Пожаловаться ▲▼
Контрольное число, контрольная цифра – разновидность контрольной суммы, добавляется обычно в конец длинных номеров с целью первичной проверки их правильности. Применяется с целью уменьшения вероятности ошибки при обработке таких номеров: машинном считывании с упаковки товара, записи в документы, голосовой передаче от человека к человеку и т. п.
Наличие и правильность контрольного числа не гарантирует достоверность рассматриваемого номера (в том числе не спасает от действий злоумышленников), но на практике достаточно хорошо оберегает от случайных ошибок.
Контрольное число чаще всего это либо последняя цифра суммы всех чисел номера, либо результат другой математической операции над цифрами. В компьютерных программах понятие «контрольного числа» обобщено до CRC, бита чётности и Кодов Рида-Соломона; а в некоторых архиваторах объём контрольных данных таков, что позволяет не только обнаружить ошибку, но и исправить её (обнаружение и исправление ошибок).
Контрольные числа, применяемые в документах, обычно позволяют восстановить одну потерянную цифру при условиях, что известно, на какой позиции в номере она должна находиться и что остальные цифры в номере правильные. Если неизвестно, на какой позиции есть ошибка, нужно перебрать все возможные варианты (например, для 13-значного номера их будет 13), а из них выбрать наиболее правдоподобные (исходя из анализа содержательной информации в номере). Простое исправление контрольной цифры может привести только к большей ошибке, не связанной с математикой.
Валидация контрольного числа ИНН
ИНН (идентификационный номер налогоплательщика) организации состоит из 10 цифр:
1-4-я цифры:
- для российской организации – код налогового органа, который присвоил ИНН;
- для иностранной организации – индекс, определяемый Федеральной налоговой службой;
5-9-я цифры:
- для российской организации – порядковый номер записи о лице в территориальном разделе Единого государственного реестра налогоплательщиков налогового органа, который присвоил ИНН;
- для иностранной организации – код иностранной организации (КИО) согласно Справочнику «Коды иностранных организаций»;
10-я цифра – контрольное число.
ИНН физического лица (индивидуального предпринимателя) состоит из 12 цифр:
- 1-4-я цифры – код налогового органа, который присвоил ИНН;
- 5-10-я цифры – порядковый номер записи о лице в территориальном разделе Единого государственного реестра налогоплательщиков налогового органа, который присвоил ИНН;
- 11-12-я цифры – контрольное число.
Проверка ИНН
Зная ИНН потенциального контрагента, вы всегда сможете выяснить, является ли данная компания реальным юридическим лицом или же это мошенник, у которого нет государственной регистрации.
Рассматриваемый способ проверки основан на том, что ИНН не является случайным набором цифр. Первые четыре являются номерами региона и территориальной налоговой инспекции, в которых зарегистрирован налогоплательщик. Следующие пять – это обыкновенный порядковый номер. А вот последняя – десятая – цифра представляет собой так называемое контрольное число ИНН.
Для того, чтобы убедиться в подлинности того или иного налогоплательщика, нужно провести несколько небольших вычислений и сравнить полученный результат с этим самым числом. Для наглядности приведем пример.
Возьмем произвольный ИНН: 7713456564. Сначала необходимо умножить первые девять цифр ИНН на особые множители, разработанные специалистами Федеральной налоговой службы. Каждой цифре соответствует свой множитель: 2, 4, 10, 3, 5, 9, 4, 6, 8. Произведем вычисления: (7 x 2) + (7 x 4) + (1 x 10) + (3 x 3) + (4 x 5) + (5 x 9) + (6 x 4 )+ (5 x 6) + (6 x 8) = 228
Полученную сумму нужно разделить на 11: 228 : 11 = 20,7. Затем от полученной величины необходимо взять целое число и умножить его на 11: 20 х 11 = 220
Разница между 228 и 220 составляет 8. Это и есть контрольное число ИНН – оно должно быть равно последней цифре ИНН. Однако в нашем случае они не совпадают, поскольку мы изначально взяли номер несуществующего налогоплательщика. Вы можете убедиться в том, что метод работает, взяв ИНН реального контрагента и самостоятельно произведя указанные вычисления.
Алгоритм проверки ИНН 10 знаков:
- Вычисляется контрольная сумма со следующими весовыми коэффициентами: (2,4,10,3,5,9,4,6,8,0)
- Вычисляется контрольное число как остаток от деления контрольной суммы на 11
- Если контрольное число больше 9, то контрольное число вычисляется как остаток от деления контрольного числа на 10
- Контрольное число проверяется с десятым знаком ИНН. В случае их равенства ИНН считается правильным.
Алгоритм проверки ИНН 12 знаков:
- Вычисляется контрольная сумма по 11-ти знакам со следующими весовыми коэффициентами: (7,2,4,10,3,5,9,4,6,8,0)
- Вычисляется контрольное число(1) как остаток от деления контрольной суммы на 11
- Если контрольное число(1) больше 9, то контрольное число(1) вычисляется как остаток от деления контрольного числа(1) на 10
- Вычисляется контрольная сумма по 12-ти знакам со следующими весовыми коэффициентами: (3,7,2,4,10,3,5,9,4,6,8,0).
- Вычисляется контрольное число(2) как остаток от деления контрольной суммы на 11
- Если контрольное число(2) больше 9, то контрольное число(2) вычисляется как остаток от деления контрольного числа(2) на 10
- Контрольное число(1) проверяется с одиннадцатым знаком ИНН и контрольное число(2) проверяется с двенадцатым знаком ИНН. В случае их равенства ИНН считается правильным.
Пример. Страховой номер индивидуального лицевого счёта (Россия)
Страховой номер индивидуального лицевого счёта страхового свидетельства обязательного пенсионного страхования (он же СНИЛС) проверяется на корректность контрольным числом. СНИЛС имеет вид: «XXX-XXX-XXX YY», где XXX-XXX-XXX – собственно номер, а YY – контрольное число.
Алгоритм формирования контрольного числа СНИЛС таков:
1. Проверка контрольного числа Страхового номера проводится только для номеров больше номера 001-001-998
2. Контрольное число СНИЛС рассчитывается следующим образом:
2.1) Каждая цифра СНИЛС умножается на номер своей позиции (позиции отсчитываются с конца)
2.2) Полученные произведения суммируются
2.3) Если сумма меньше 100, то контрольное число равно самой сумме
2.4) Если сумма равна 100 или 101, то контрольное число равно 00
2.5) Если сумма больше 101, то сумма делится по остатку на 101 и контрольное число определяется остатком от деления аналогично пунктам 2.3 и 2.4
ПРИМЕР: Указан СНИЛС 112-233-445 95
Проверяем правильность контрольного числа:
цифры номера 1 1 2 2 3 3 4 4 5
номер позиции 9 8 7 6 5 4 3 2 1
Сумма = 1×9 + 1×8 + 2×7 + 2×6 + 3×5 + 3×4 + 4×3 + 4×2 + 5×1 = 95
Сумма равна YY (контрольное число).
Контрольное число 95 – указано верно
Данный алгоритм не способен обнаружить все случаи ошибок в одной цифре (например, номера 087-654-303 00 и 087-654-302 00 отличаются одной цифрой, но оба будут признаны верными). Также не во всех случаях может быть обнаружена ошибка перестановки двух соседних цифр (например, 087-654-303 00 и 086-754-303 00). Причина – пункт 2.4, где для близких чисел 100 и 101 установлено одинаковое контрольное число 00.
Если бы вместо пунктов 2.4, 2.5 применялся пункт
2.4′) Если сумма равна или больше 100, то контрольное число равно двум последним цифрам этой суммы (остатку от деления суммы на 100),
то алгоритм был бы способен обнаружить все случаи ошибок в одной цифре и все случаи ошибочной перестановки двух соседних цифр.
Пример. Номера ОГРН и ОГРНИП
(Основной Государственный Регистрационный Номер (для Индивидуального Предпринимателя))
Состоят из 13 (или 15) цифр, из них последняя – n1 – контрольная.
Контрольная цифра равна остатку от деления на 11 (или на 13) числа, состоящего из первых 12 (или 14) цифр. Если остаток больше 9, то n1 = последней цифре остатка.
Конкретные примеры:
- 1037739010891 – 13 цифр, ОГРН. Вычисляем остаток: -1+0-3+7-7+3-9+0-1+0-8+9 = -10 (Признак Паскаля) -10 + 11 = 1(остаток) Контрольное число = 1 – совпадает, номер правильный.
- 1035006110083 – 13 цифр, ОГРН. Вычисляем остаток: 103500611008 = 11 • 9409146455 + 3(остаток) Контрольное число = 3 – совпадает, номер правильный.
- 1037739010891 – 13 цифр, ОГРН. Вычисляем остаток: 103773901089 = 11 • 9433991008 + 1(остаток) Контрольное число = 1 – совпадает, номер правильный.
- 304500116000157 – 15 цифр, ОГРНИП. Вычисляем остаток: 30450011600015 = 13 • 2342308584616 + 7(остаток) Контрольное число = 7 – совпадает, номер правильный.
- 304463210700212 – 15 цифр, ОГРНИП. Вычисляем остаток: 30446321070021 = 13 • 2342024697693 + 12(остаток) Контрольное число = 2 – совпадает с последней цифрой остатка, номер правильный.
Налоги — это просто
Информация про алгоритм проверки ИНН пригодится тем, кто создаёт программное обеспечение для заполнения деклараций, для учёта контрагентов и других случаев, когда желательно иметь верные данные о налогоплательщике. Алгоритм используется в номерах, которые присваивают в России.
Номер налогоплательщика у юридических лиц и физических отличается длиной, следовательно и алгоритмом проверки будет иметь отличия. Понятно и просто алгоритм проверки ИНН для обоих категорий налогоплательщиков описан в Википедии.
Сперва рассмотрим алгоритм проверки ИНН для ЮЛ: последняя десятая цифра является контрольной. Вычисление проводится по формуле:
- n10 = ((2n1 + 4n2 + 10n3 + 3n4 + 5n5 + 9n6 + 4n7 + 6n8 + 8n9) mod 11) mod 10,
где nx — номер в проверяемом номере, а mod 11 и mod 10 — остатки от деления.
Проще говоря, каждый разряд ИНН умножается на соответствующий коэффициент, полученные числа суммируются, потом поочерёдно вычисляется остаток от деления на 11 и на 10. Получившееся число должно быть равно десятому разряду в ИНН.
Забегая вперёд, на этом этапе можно выделить коэффициенты: (2, 4, 10, 3, 5, 9, 4, 6, 8), так как они нам понадобятся.
Теперь можно перейти к рассмотрению ИНН для физических лиц. Алгоритм проверки ИНН для ФЛ чуть длиннее, так как приходится вычислять два числа, потому что контрольными являются 11 и 12 число в номере.
Формулы для их вычисления:
- n11 = (7n1 + 2n2 + 4n3 + 10n4 + 3n5 + 5n6 + 9n7 + 4n8 + 6n9 + 8n10) mod 11) mod 10);
- n12 = (3n1 + 7n2 +2n3 + 4n4 + 10n5 + 3n6 + 5n7 + 9n8 + 4n9 + 6n10 + 8n11) mod 11) mod10).
Вероятно, вы заметили закономерность использования коэффициентов, которые были выписаны для проверки ИНН у ЮЛ. Проверка ИНН для физ. лиц аналогична — считается сумма произведений разрядов номера на коэффициенты, после чего берётся остаток от поочерёдного деления с остатком на 11 и 10.
В качестве примера приведу реализацию проверки инн на питоне:
Алгоритм проверки ИНН на python
def check_inn(inn): if len(inn) not in (10, 12): return False def inn_csum(inn): k = (3, 7, 2, 4, 10, 3, 5, 9, 4, 6, 8) pairs = zip(k[11-len(inn):], [int(x) for x in inn]) return str(sum([k * v for k, v in pairs]) % 11 % 10) if len(inn) == 10: return inn[-1] == inn_csum(inn[:-1]) else: return inn[-2:] == inn_csum(inn[:-2]) + inn_csum(inn[:-1])
def check_inn(inn): if len(inn) not in (10, 12): return False def inn_csum(inn): k = (3, 7, 2, 4, 10, 3, 5, 9, 4, 6, 8) pairs = zip(k[11-len(inn):], [int(x) for x in inn]) return str(sum([k * v for k, v in pairs]) % 11 % 10) if len(inn) == 10: return inn[-1] == inn_csum(inn[:-1]) else: return inn[-2:] == inn_csum(inn[:-2]) + inn_csum(inn[:-1]) |
Суть функции проста: проверяется, чтобы длина ИНН соответствовала 10 или 12 символам. В зависимости от длины inn функция вернёт True/False о соответствии контрольных значений в номере. В списке k определены все используемые коэффициенты, но в зависимости от длины ИНН определяется используемая часть внутри inn_csum. Если внимательно посмотреть, алгоритм проверки ИНН при уменьшении номера пропорционально сдвигает используемые коэффициенты.
Как видно, проверить правильность вводимого ИНН достаточно просто, а алгоритм проверки можно доработать, например, при неправильной контрольной сумме предлагать возможные варианты.
Проверка валидности ИНН, КПП, ОРГН
По мотивам налогового законодательства РФ. =)
#!/usr/bin/perl use strict; use warnings; use 5.010; use List::Util qw/any/; my @_ALLOWED_LENGTHS = (10, 12, 13, 9, 15); say check('1083668004155'); # Возвращаемые коды: # undef - невалидное значение # 1 - ИНН юр. лица # 2 - ИНН физ. лица # 3 - КПП # 4 - ОРГН юр. лица # 5 - ОРГН физ. лица sub check { my ($num) = @_; return if ! any { length($num) == $_ } @_ALLOWED_LENGTHS; if (length($num) == 10 && $num =~ /^\d+$/) { ### Проверка ИНН юр. лица my @inn = split q//, $num; my $checksum = 2*$inn[0] + 4*$inn[1] + 10*$inn[2] + 3*$inn[3] + 5*$inn[4] + 9*$inn[5] + 4*$inn[6] + 6*$inn[7] + 8*$inn[8]; return 1 if $inn[9] == ($checksum % 11) % 10; } if (length($num) == 12 && $num =~ /^\d+$/) { ### Проверка ИНН физ. лица my @inn = split q//, $num; my $checksum1 = 7*$inn[0] + 2*$inn[1] + 4*$inn[2] + 10*$inn[3] + 3*$inn[4] + 5*$inn[5] + 9*$inn[6] + 4*$inn[7] + 6*$inn[8] + 8*$inn[9]; my $checksum2 = 3*$inn[0] + 7*$inn[1] + 2*$inn[2] + 4*$inn[3] + 10*$inn[4] + 3*$inn[5] + 5*$inn[6] + 9*$inn[7] + 4*$inn[8] + 6*$inn[9] + 8*$inn[10]; return 2 if $inn[10] == ($checksum1 % 11) % 10 && $inn[11] == ($checksum2 % 11) % 10; } if (length($num) == 9) { ### Проверка КПП return 3 if $num =~ /^\d{4}[\dA-Z][\dA-Z]\d{3}$/; } if (length($num) == 13 && $num =~ /^\d+$/) { ### Проверка ОРГН юр. лица my @orgn = split q//, $num; my $num12 = join q//, @orgn[0..11]; my $modulo = $num12 % 11; my $checknum = ($modulo == 10) ? 0 : $modulo; return 4 if $checknum == $orgn[12]; } if (length($num) == 15 && $num =~ /^\d+$/) { ### Проверка ОРГН физ. лица my @orgn = split q//, $num; my $num14 = join q//, @orgn[0..13]; my $checknum = $num14 % 13; return 5 if $checknum == $orgn[14]; } return; }Валидация и проверка контрольного числа ОГРН
ОГРН (основной государственный регистрационный номер) состоит из 13 цифр:
- 1-я цифра — признак отнесения государственного регистрационного номера записи:
- к основному государственному регистрационному номеру (ОГРН) — 1, 5;
- к основному государственному регистрационному номеру индивидуального предпринимателя (ОГРНИП) — 3;
- к государственному регистрационному номеру — 2, 6, 7, 8, 9 (для ЕГРЮЛ), 4 (для ЕГРИП);
- 2-3-я цифры — две последние цифры года внесения записи;
- 4-5-я цифры — код субъекта Российской Федерации;
- 6-12-я цифры — номер записи, внесенной в государственный реестр в течение года;
- 13-я цифра — контрольное число.
Маски ввода
- XXXXXXXXXXXXX — маска ввода без разделителей.
- X-XX-XX-XXXXXXX-X — маска ввода с разделителями.
Алгоритм проверки контрольного числа
- Выбрать 12-значное число ОГРН (с 1-й по 12-ю цифру).
- Вычислить остаток от деления выбранного числа на 11.
- Сравнить младший разряд полученного остатка от деления с 13-й цифрой ОГРН. Если они равны, то ОГРН верный.
Реализация на JavaScript
Исходный код доступен на GitHub по этой ссылке (функция validateOgrn).
Реализация на PHP
Исходный код доступен на GitHub по этой ссылке (метод validateOgrn).