Przejdź do głównej zawartości

REGON

REGON (Rejestr Gospodarki Narodowej) to identyfikator podmiotów w polskim rejestrze gospodarczym. Występuje w dwóch formach: 9-cyfrowej dla podmiotów indywidualnych oraz 14-cyfrowej dla podmiotów prawnych z jednostkami lokalnymi — gdzie pierwsze 9 cyfr to bazowy REGON, a ostatnie 5 identyfikuje jednostkę lokalną.

use SlashLab\Numerik\Numerik;
// Szybkie sprawdzenie
Numerik::regon()->isValid('850518457'); // true (9-cyfrowy)
Numerik::regon()->isValid('85051845749370'); // true (14-cyfrowy)
// Pełny obiekt z danymi
$result = Numerik::regon()->validate('850518457');
$result->isValid; // true
// Parsowanie do obiektu z danymi
$regon = Numerik::regon()->parse('850518457');
// Null zamiast wyjątku
$regon = Numerik::regon()->tryParse('zły-numer'); // null

parse() i tryParse() zwracają instancję SlashLab\Numerik\ValueObjects\Regon.

MetodaTyp zwracanyOpis
getRaw()stringOryginalny numer, bez zmian.
getNormalized()stringCyfry po usunięciu białych znaków.
__toString()stringTo samo co getNormalized().
MetodaTyp zwracanyOpis
getType()RegonTypeRegonType::Individual (9-cyfrowy) lub RegonType::LegalEntity (14-cyfrowy).
getBaseRegon()stringPierwsze 9 cyfr — obecne w obu wariantach.
getLocalUnitSuffix()string|nullOstatnie 5 cyfr dla numerów 14-cyfrowych; null dla 9-cyfrowych.
isLocalUnit()booltrue dla numerów 14-cyfrowych.
// 9-cyfrowy REGON
$regon = Numerik::regon()->parse('850518457');
$regon->getType(); // RegonType::Individual
$regon->getBaseRegon(); // '850518457'
$regon->getLocalUnitSuffix(); // null
$regon->isLocalUnit(); // false
// 14-cyfrowy REGON
$regon = Numerik::regon()->parse('85051845749370');
$regon->getType(); // RegonType::LegalEntity
$regon->getBaseRegon(); // '850518457'
$regon->getLocalUnitSuffix(); // '49370'
$regon->isLocalUnit(); // true
PowódWartośćWarunek
InvalidLengthinvalid_lengthNumer nie ma dokładnie 9 lub 14 cyfr po normalizacji.
InvalidCharactersinvalid_charactersPo usunięciu białych znaków pozostały znaki niebędące cyframi.
InvalidChecksuminvalid_checksumCyfra kontrolna nie zgadza się. W przypadku numeru 14-cyfrowego błąd może dotyczyć weryfikacji bazowych 9 cyfr lub pełnego numeru.

Wagi 9-cyfrowe: 8, 9, 2, 3, 4, 5, 6, 7

Wagi 14-cyfrowe: 2, 4, 8, 5, 0, 9, 7, 3, 6, 1, 2, 4, 8

  1. Usuń białe znaki. Wymagaj dokładnie 9 cyfr.
  2. Pomnóż pierwsze 8 cyfr przez wagi i zsumuj. Oblicz mod 11. Jeśli wynik to 10, cyfra kontrolna musi wynosić 0 — w przeciwnym razie wynik musi być równy 9. cyfrze.
  1. Usuń białe znaki. Wymagaj dokładnie 14 cyfr.
  2. Sprawdź pierwsze 9 cyfr jako samodzielny REGON-9 (patrz wyżej).
  3. Pomnóż pierwsze 13 cyfr przez wagi 14-cyfrowe i zsumuj. Oblicz mod 11. Jeśli wynik to 10, cyfra 14 musi wynosić 0 — w przeciwnym razie wynik musi być równy 14. cyfrze.

Pełna dokumentacja w sekcji Algorytmy.

If this saved you time → ☕ Buy me a coffee