REGON
Z Wikipedii
REGON (akronim od Rejestr Gospodarki Narodowej) - Krajowy Rejestr Urzędowy Podmiotów Gospodarki Narodowej, rejestr statystyczny prowadzony przez Prezesa Głównego Urzędu Statystycznego. Pod pojęciem REGONu rozumiany jest także Numer REGON, czyli dziewięciocyfrowy numer statystyczny podmiotu gospodarczego w powyższym rejestrze.
Spis treści |
[edytuj] Budowa numeru REGON
[edytuj] 9-cyfrowy REGON
Początkowo, REGON był 7-cyfrowy, a numery były nadawane centralnie. Później (ok. 1985-90 r.) rozszerzono REGON na 9 cyfr, gdzie regonom "starym" (7-cyfrowym) po prostu dołożono na początku 2 zera, a nowe zaczęto tworzyć wg klucza: 2 cyfry wyróżnika województwa + 6 cyfr "nru seryjnego" + 1 cyfra kontrolna. Województw było 49 i miały nadane kolejne numery nieparzyste – od 01 (warszawskie) do 97 (zielonogórskie).
[edytuj] Suma kontrolna
Dziewiąta cyfra jest cyfrą kontrolną obliczaną następująco:
Wagi: 8 9 2 3 4 5 6 7
Pierwsze osiem cyfr REGON: 1 2 3 4 5 6 7 8
Wynik: 1*8 + 2*9 + 3*2 + 4*3 + 5*4 + 6*5 + 7*6 + 8*7 = 192
Cyfra kontrolna: 192 mod 11 = 5
Cały REGON: 123456785
W przypadku, gdy mod zwraca 10 za cyfrę kontrolną przyjmuje się 0.
[edytuj] 14-cyfrowy REGON
Jednostkom organizacyjnym, które mają swoje siedziby w różnych województwach nadaje się REGON 14-cyfrowy (identyfikator jednostki lokalnej). Dziewięć pierwszych cyfr takiego numeru pokrywa się z REGONem jednostki macierzystej. Cyfra kontrolna numeru obliczana jest tym samym sposobem, ale wagi są inne. Ponieważ jeden ze współczynników wagowych wynosi zero to weryfikacja "długiego" REGONu wymaga weryfikacji 9 cyfr z wagami jak dla 9-cyfrowego numeru, a następnie weryfikacji długiego REGONu z innymi wagami.
[edytuj] Suma kontrolna
W przypadku REGONów 14-cyfrowych cyfrę kontrolną oblicza się następująco:
Wagi: 2 4 8 5 0 9 7 3 6 1 2 4 8
Pierwsze trzynaście cyfr REGON: 1 2 3 4 5 6 7 8 5 1 2 3 4
Wynik: 1*2 + 2*4 + 3*8 + 4*5 + 5*0 + 6*9 + 7*7 + 8*3 + 5*6 + 1*1 + 2*2 + 3*4 + 4*8 = 260
Cyfra kontrolna: 260 mod 11 = 7
Cały REGON: 12345678512347
Algorytm sprawdzający w Pythonie:
def checkREGON(regonstr): """checkREGON(regonstr) -> bool""" MNOZNIKI = [] # cyfry przez które będziemy mnożyć if len(regonstr) == 9: # jeżeli regon ma 9 cyfr MNOZNIKI = [8, 9, 2, 3, 4, 5, 6, 7] elif len(regonstr) == 14: # jeżeli regon ma 14 cyfr MNOZNIKI = [2, 4, 8, 5, 0, 9, 7, 3, 6, 1, 2, 4, 8] regon = [int(p) for p in regonstr] # zamiana stringa na listę cyfr suma = 0 for p in range(len(regon)-1): suma += regon[p]*MNOZNIKI[p] cyfra_kontrolna = (suma % 11) # liczy: suma mod 11 if cyfra_kontrolna == 10: cyfra_kontrolna = 0 return True if (cyfra_kontrolna == regon[-1]) else False