Sprawdzanie poprawności numerów NIP, REGON, PESEL, IBAN

logo

Dzisiejszym wpisem wkraczamy w obszar udostępniania narzędzi pomocnych przede wszystkim w prowadzeniu indywidualnej działalności gospodarczej, ale nie tylko.

Do tej pory przeważały tematy etatowe, ale najwyższa pora zapoczątkować cykl artykułów wspomagających przedsiębiorców.

Na początek proponuję proste narzędzie excelowe służące do weryfikacji poprawności danych jeśli chodzi o NIPy, PESELe, REGONy oraz numery rachunków bankowych.

Sprawdzanie numerów NIP, PESEL, REGON, IBAN

pict1

W kolejnych wpisach udostępnione będą narzędzia do samodzielnego prowadzenia księgi przychodów i rozchodów, rejestru środków trwałych, tworzenia deklaracji VAT czy jednolitego pliku kontrolnego (JPK). Oprócz narzędzi służących stricte celom sprawozdawczo- rozliczeniowym z wszelkiej maści urzędami w następnej kolejności planowane są materiały wspomagające zarządzanie przedsiębiorstwem nastawione bardziej na dogłębne zrozumienie kosztów przedsiębiorstwa oraz spojrzenie na rachunek wyników bardziej od strony zarządczej, aniżeli czysto księgowej.

A póki co zapraszam do wbudowania prezentowanych tutaj narzędzi sprawdzających numery NIP, PESEL, REGON oraz IBAN w swoje bazy kontrahentów czy pracowników. Całkiem prawdopodobne, iż sukcesywnie będą dochodziły nowe funkcjonalności walidowania innych danych alfanumerycznych.

Dwa słowa kuchni, dla tych co chcieliby zrozumieć sposób działania. Wszystkie powyższe użyte tu charakterystyki numeryczne oprócz tego, że są ciągami znaków mają w sobie ukryte pewne informacje z jednym punktem wspólnym w postaci liczby kontrolnej ukrytej zwykle na końcu. I tak przykładowo PESEL czyli Powszechny Elektroniczny System Ewidencji Ludności zawiera w sobie datę urodzenia, liczbę porządkową, płeć oraz wspomnianą już cyfrę kontrolną, która ma za zadanie ochronę przed pomyłkami i przekłamaniami numeru.

Sposób działania liczby kontrolnej to nic innego jak reszta z dzielenia sumy iloczynów pozostałych cyfr oraz mnożników (kolejno 9 , 7, 3, 1, 9, 7, 3, 1, 9, 7) przez 10. W przypadku PESELu najlepiej obrazuje to przykład z Wikipedii:

pict7

Co do zakodowanych informacji to kwestia płci jest stosunkowo łatwa do odkodowania. Zawarta jest ona na przedostatniej pozycji i każda nieparzysta (1, 3, 5, 7, 9) wartość oznacz płeć męską, a wszystkie pozostałe płeć damską (0, 2, 4, 6, 8). Teraz nie pozostaje nic innego jak sprawdzić w pamięci, czy w przypadku naszego PESELu nie nastąpiła pomyłka 🙂

Informacja o dacie urodzenia z pierwszych sześciu znaków też nie wydaje się przesadne skomplikowana. Trzeba jedynie brać pod uwagę, iż obecny system ogarnia nie tylko jedno stulecie ale 500 lat: od 1800 do 2299, a konkretne stulecie ukryte jest w trzeciej i czwartej cyfrze, czyli w informacji o miesiącu urodzenia. Pomocna może okazać się tutaj tabelka z Wikipedii:

pict6

Jeśli chodzi o wyliczanie cyfry kontrolnej to to nie powinno przysparzać żadnych trudności z technicznego/matematycznego punktu widzenia. Inaczej sprawa przedstawia się przypadku numerów rachunków bankowych, gdzie w grę wchodzą obliczenia na liczbach trzydziestocyfrowych, z czym nawet excel może mieć trudności.

By sprawdzić poprawność numeru konta bankowego w formacie IBAN (ang. International Bank Account Number)- czyli z kodem kraju warto najpierw poznać z jakich elementów się on składa. W przypadku Polski mamy tu 4 główne składowe w postaci kodu kraju (dwie litery), dwucyfrowej liczby kontrolnej, ośmioznakowego kodu banku BBAN (ang. Basic Bank Account Number), gdzie też notabene ukryta jest cyfra kontrolna sprawdzająca poprawność tej części oraz ostatnich 16 cyfr mówiącego o właściwym rachunku klienta. Samo zwalidowanie czy dany numer rachunku jest poprawny sprowadza się w swojej prostocie do trzech czynności co pokażemy na przykładzie takiego nr rachunku PL61109010140000071219812874:

*przenosimy pierwsze 4 znaki- czyli kod kraju oraz liczbę kontrolną na koniec: 109010140000071219812874PL61
*zastępujemy litery z kodu kraju liczbami z poniższego zestawienia- czyli w naszym przypadku zamiast P mamy 25, a zamiast L 21 co daje nam: 109010140000071219812874252161

*obliczamy resztę z dzielenia otrzymanej 30-cyfrowej liczby przez 97- w przypadku otrzymania reszty w postaci 1 numer rachunku jest poprawny

Jak możemy łatwo się przekonać użycie funkcji z tak dużą liczba w excelu nie zadziała: =MOD(109010140000071219812874252161;97). Dlatego też musimy podzielić naszą liczbę na kilka mniejszych wg przestawionego poniżej sposobu:

109010140000071219812874252161

=MOD(1090101400;97)=74
=MOD(740007121981;97)=84
=MOD(842874252161;97)=1

Czyli powyższy sposób to nic innego jak podzielenie naszej długiej liczby na 3 mniejsze i obliczanie reszty z dzielenia dla każdej, z tym tylko zastrzeżeniem, iż w przypadku drugiej  i trzeciej części dostawiamy na początku resztę z poprzedniego kroku.

Jak widzimy w naszym przykładzie finalnie otrzymujemy resztę 1, czyli nasz nr rachunku jest jak najbardziej poprawny. Oprócz sprawdzenia czysto technicznego czy matematycznego w przypadku kopiowania numerów rachunku musimy zachować sporą ostrożność i czujność, by ustrzec się przed złośliwym oprogramowaniem zamieniającym nam nr rachunków na jakie chcemy przelać pieniądze co może skończyć się stratą znacznej części gotówki. Dlatego dobrą praktyką jest kopiowanie tylko części rachunku a kilku cyfr (na przykład dwóch pierwszych kontrolnych) wpisywanie ręcznie.

Mam nadzieję, iż przedstawione powyżej narzędzie okaże się przydatne.

Pozdrawiam!

 

 

 

 

 

 

 

 

 

Reklamy

2 comments

Skomentuj

Wprowadź swoje dane lub kliknij jedną z tych ikon, aby się zalogować:

Logo WordPress.com

Komentujesz korzystając z konta WordPress.com. Wyloguj /  Zmień )

Zdjęcie na Google+

Komentujesz korzystając z konta Google+. Wyloguj /  Zmień )

Zdjęcie z Twittera

Komentujesz korzystając z konta Twitter. Wyloguj /  Zmień )

Zdjęcie na Facebooku

Komentujesz korzystając z konta Facebook. Wyloguj /  Zmień )

Connecting to %s