W artykule dotyczącym PESELA opisałem jak można sprawdzić poprawność numeru. Czy jest prawdziwy, czy nie? Sprawa NIPU i REGONU wygląda praktycznie tak samo. Różnica polega tylko na zmianie numerów wag (zobacz artykuł o numerze identyfikacyjnym) oraz/i nie stosuje się odejmowania od 10 a liczbą do dzielenia modulo stosuje się 11.
NIP to numer 10-cio cyfrowy odpowiednio dzielony myślnikami (np. 768-000-24-66). Zaś numer REGON to składania cyfr 7-mio, lub 9-cio cyfrowej kombinacji cyfr. Nie chciałbym tutaj opisywać, do czego służą te numery, gdyż wydaje mi się to zbędne. Jeżeli ktoś już zaczął pracować i jest zarejestrowany to pewnie wie co to numer NIP. Zaś posiadaczą własnej działalności, numer REGON jest nie obcy.
Dla numeru NIP stosuje się tablicę wag o następującej składnie: 6,5,7,2,3,4,5,6,7;
Dla REGONU 7-mio cyfrowego: 2,3,4,5,6,7;
Dla REGONU 9-cio cyfrowego: 8,9,2,3,4,5,6,7.
Wszystkie wyniki, jak wspomniałem, dzielimy modulo przez 11.
Przykład dla numeru identyfikacyjnego NIP 768-000-24-66
6 5 7 2 3 4 5 6 7 -> wagi
7 6 8 0 0 0 2 4 6 -> nr NIP (bez cyfry kontrolnej - ostatnia cyfra numeru NIP, czyli 6)
-----------------------------------
suma (6*7 + 5*6 + 7*8 + 2*0 + 3*0 + 4*0 + 5*2 + 6*4 + 7*6)=
= ( 42 + 30 + 56 + 0 + 0 + 0 + 10 + 24 + 42)= 204
teraz dzielimy modulo przez wspomniane 11:
204 mod 11 = 6
Wynik taki sam jak suma kontrolna, a więc numer jest prawidłowy.
Jeżeli ktoś by miał ochotę dodać moduł sprawdzania poprawności numerów NIP i REGON (nawiasem mówiąc wykonal to brodny do art. PESEL) to proszę bardzo. Nie robię tego osobiście, gdyż wydaje mi się, że stworzenie takiego algorytmu to nic wielkiego, to po pierwsze a po drugie chyba nie chce mi się też.
Źródło: 4programmers.net. Treść udostępniona na zasadach licencji Creative Commons Attribution
Autor: Twardy