Реєстраційний номер платника податків (РНН) - це документ, необхідний для адміністрування платників податків в Республіці Казахстан.
структура РНН
РНН є 12-тіразрядное число.
- Перший фасет (2 розряду) - код області. Для кодування використовуються 3, 4 розряди коду класифікатора "Система позначення адміністративно-територіальних органів" (СОАТО).
- Другий фасет (2 розряду) - код району. Перелік і номера податкових комітетів відповідають кодам районів області, прийняті в системі Міністерства фінансів Республіки Казахстан.
- Третій фасет (1 розряд) - має значення: 0 - для юридичних осіб, з 1 до 9 - для фізичних осіб.
- Четвертий фасет (6 розрядів) - порядковий номер платника податків, який присвоюється податковим органом.
- П'ятий фасет (1 розряд) - контрольний розряд
Алгоритм перевірки контрольного розряду
Кожному розряду РНН (рахунок зліва направо), виключаючи останній 12-ий розряд, присвоюється вага від 1 до 10. 11-ий розряд має вагу рівний 1. Визначається сума творів значень кожного розряду на його вагу (S = r1 * 1 + r2 * 2 +. + r10 * 10 + r11 * 1). Отримана сума ділиться на 11 і виділяється ціла частина C (тобто максимальне ціле число, на яке S ділиться без залишку). Визначається різниця між сумою творів і цілочисельним входженням по модулю 11 в цю суму (i = S - C * 11). Якщо отримана різниця менше 10, то вона є значенням контрольного розряду. Якщо після першого проходу лише великі червоні літери виходить більше або дорівнює 10, розрахунок повторюється, але кожному розряду вага присвоюється, починаючи з 2. Для третього проходу відповідно з 3 і т.д. Якщо результат при 10 циклах повторення розрахунку завжди має значення більше або дорівнює 10, то дане число для реєстраційного номера платника податків виключається.
Реалізація на PHP
return ($ k == substr ($ rnn. 11. 1));
>
PS. довідник "Коди областей і районів Республіки Казахстан", за яким зіставляються перші 4 розряду РНН і область / район. Довідник застарів, а закон, яким він прийнятий втратив чинність, але хоч так.
Перевірка коректності ІІН:
Допоміжна перевірка. Будується на розшифровці.
- виокремлює дату народження з ІІН і перевіряємо її. Якщо дата невірна, то ІІН може бути не вірний
- якщо 7 розряд дорівнює 0 або більше 6, то ІІН може бути не вірний
Чому я пишу "може бути не вірний", та тому що все вирішує людський фактор! Руки у операторів не завжди звідки треба ростуть, в результаті з'являються ІІН з неправильно написаними датами, замість 850812 наприклад напишуть 120885. Або опечатали десь.
Основна перевірка. За контрольної цифри, 12 розряду. алгоритм формування
- Формуємо суму. Сума твори порядку розряду на його значення. Тобто для 850812 сума почнеться з (1 * 8 + 2 * 5 + 3 * 0 + 4 * 8 + 5 * 1 + 5 * 2 +.). Беремо залишок від Делні суми на 11. якщо залишок виявляється дорівнює 10, то йдемо на другий крок. Якщо не дорівнює 10, то порівнюємо контрольний розряд із залишком. Якщо рівні - ІІН коректний.
- Сюди ми потрапляємо якщо в результаті першого кроку ми отримали залишок 10. Тут ми теж будемо підсумовувати твори значень розрядів, тільки на цей раз не з порядковими номерами, а з вагами розрядів. Вага формується таким чином - залишок від ділення на 11 суми (порядковий номер розряду + 2). Тобто для 850812, перший вага дорівнює 3, другий 4 і так далі. Якщо вага виявляється рівним 0, то вага прирівнюють до 11. ну а далі також. беремо залишок від ділення отриманої суми на 11, якщо отримуємо 10, то даний ІІН не використовується. Якщо не 10 порівнюємо з контрольним розрядом.
Загалом, ось так це все виглядає на php:
return ($ k == substr ($ nn. 11. 1));
>
return ($ k == substr ($ nn. 11. 1));
>
До речі, алгоритм для перевірки контрольного розряду підходить і до БІНам.