Блог рядового веб-розробника

Реєстраційний номер платника податків (РНН) - це документ, необхідний для адміністрування платників податків в Республіці Казахстан.

структура РНН

РНН є 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 розряду. алгоритм формування

  1. Формуємо суму. Сума твори порядку розряду на його значення. Тобто для 850812 сума почнеться з (1 * 8 + 2 * 5 + 3 * 0 + 4 * 8 + 5 * 1 + 5 * 2 +.). Беремо залишок від Делні суми на 11. якщо залишок виявляється дорівнює 10, то йдемо на другий крок. Якщо не дорівнює 10, то порівнюємо контрольний розряд із залишком. Якщо рівні - ІІН коректний.
  2. Сюди ми потрапляємо якщо в результаті першого кроку ми отримали залишок 10. Тут ми теж будемо підсумовувати твори значень розрядів, тільки на цей раз не з порядковими номерами, а з вагами розрядів. Вага формується таким чином - залишок від ділення на 11 суми (порядковий номер розряду + 2). Тобто для 850812, перший вага дорівнює 3, другий 4 і так далі. Якщо вага виявляється рівним 0, то вага прирівнюють до 11. ну а далі також. беремо залишок від ділення отриманої суми на 11, якщо отримуємо 10, то даний ІІН не використовується. Якщо не 10 порівнюємо з контрольним розрядом.

Загалом, ось так це все виглядає на php:

return ($ k == substr ($ nn. 11. 1));
>
return ($ k == substr ($ nn. 11. 1));
>

До речі, алгоритм для перевірки контрольного розряду підходить і до БІНам.

Схожі статті