Weryfikacja kodów: PESEL, NIP i REGON

Gotowe szablony, skrypty, makropolecenia i rozszerzenia. Tutaj możesz pochwalić i podzielić się swoją twórczością z innymi użytkownikami
Awatar użytkownika
Jermor
Posty: 2352
Rejestracja: sob paź 12, 2013 11:09 am
Kontakt:

Weryfikacja kodów: PESEL, NIP i REGON

Post autor: Jermor »

Na forum kilkukrotnie pojawił się problem weryfikacji kodu PESEL. Za każdym razem rozwiązanie polegało na napisaniu własnej funkcji, która taką weryfikację wykona. Przygotowałem formułę, która weryfikuje ten kod, a ponieważ wiele osób, zwłaszcza tych, którzy prowadzą własną działalność gospodarczą, styka się także z kodami NIP i REGON, włączyłem do projektu weryfikacje także tych kodów. Projekt zawiera zatem trzy formuły weryfikujące.
Wynikiem wykonania formuły jest komunikat informujący o tym czy dany kod jest poprawny.
Każda z formuł zwraca następujące wspólne komunikaty:
  • "Długość!", gdy wpisany kod nie składa się z wymaganej liczby znaków.
  • "Cyfry!", gdy w kodzie pojawią się niedopuszczalne znaki.
  • "<nazwa kodu> błędny", gdy wyliczona cyfra kontrolna jest niezgodna z podaną w kodzie.
  • "<nazwa kodu> poprawny", gdy cyfry kodu są zgodne z cyfrą kontrolną.
Kod PESEL.
Przy weryfikowaniu tego kodu mogą się pojawić dodatkowe dwa komunikaty:
  • "Wiek XIX!", gdy data zakodowana w kodzie PESEL dotyczy XIX wieku. Uznałem, że w obecnych czasach nikt nie będzie wprowadzał PESEL-u osoby urodzonej przed rokiem 1900.
  • "Błąd daty!", gdy na pozycjach zarezerwowanych na zakodowanie daty nie znajduje się prawidłowa data.
Kod NIP.
Kod NIP pojawia się w zróżnicowanych zapisach, zawierających odstępy albo dywizy pomiędzy niektórymi grupami cyfr. Formuła weryfikująca usuwa (wewnętrznie) wszystkie spacje i dywizy i wykonuje weryfikację na tak zredukowanym kodzie. Czyli spacje i dywizy nie są wliczane do długości kodu.
Kod REGON.
Kod REGON występuje obecnie w dwóch wersjach: 9 cyfrowej i 14 cyfrowej. Formuła weryfikuje oba typy kodów.
Przygotowałem dwa zestawy formuł, jeden odpowiadający możliwościom programu Calc z pakietu Apache OpenOffice, drugi wykorzystujący funkcje niedostępne w Apache OpenOffice, w tym najnowsze, dostępne od wersji 24.8+ pakietu LibreOffice, co oznacza, że to rozwiązanie może zostać wykorzystane dopiero od wspomnianej wersji. Oczywiście rozwiązanie dla Apache OpenOffice może być wykorzystywane we wszystkich wersjach LibreOffice.
Rozwiązania zapisane są w plikach PESEL AOO.ods dla pierwszej wersji i PESEL LO.ods — dla drugiej.
W obu plikach umieściłem także generatory cyfr kontrolnych wspomnianych kodów.
Załączniki
Pesel LO.ods
Plik dla LibreOffice 24.8+
(25.95 KiB) Pobrany 4 razy
Pesel AOO.ods
Plik dla wszystkich wersji AOO i LO
(21.73 KiB) Pobrany 5 razy
AOO 4.1.15, LO 24.8.2 (x64) na Windows 10 64bit
Ważne!
Jeśli twój problem został rozwiązany, wróć do swojego pierwszego postu, przejdź do edycji i dopisz [SOLVED] w temacie.
Inni, którzy mają podobny problem, będą wiedzieli, że istnieje jego rozwiązanie.
ODPOWIEDZ