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 sprawdzenieNumerik::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'); // nullMetody zwracanego obiektu
Dział zatytułowany „Metody zwracanego obiektu”parse() i tryParse() zwracają instancję SlashLab\Numerik\ValueObjects\Regon.
Podstawowe
Dział zatytułowany „Podstawowe”| Metoda | Typ zwracany | Opis |
|---|---|---|
getRaw() | string | Oryginalny numer, bez zmian. |
getNormalized() | string | Cyfry po usunięciu białych znaków. |
__toString() | string | To samo co getNormalized(). |
Typ i struktura
Dział zatytułowany „Typ i struktura”| Metoda | Typ zwracany | Opis |
|---|---|---|
getType() | RegonType | RegonType::Individual (9-cyfrowy) lub RegonType::LegalEntity (14-cyfrowy). |
getBaseRegon() | string | Pierwsze 9 cyfr — obecne w obu wariantach. |
getLocalUnitSuffix() | string|null | Ostatnie 5 cyfr dla numerów 14-cyfrowych; null dla 9-cyfrowych. |
isLocalUnit() | bool | true dla numerów 14-cyfrowych. |
Przykłady
Dział zatytułowany „Przykłady”// 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(); // truePowody błędów
Dział zatytułowany „Powody błędów”| Powód | Wartość | Warunek |
|---|---|---|
InvalidLength | invalid_length | Numer nie ma dokładnie 9 lub 14 cyfr po normalizacji. |
InvalidCharacters | invalid_characters | Po usunięciu białych znaków pozostały znaki niebędące cyframi. |
InvalidChecksum | invalid_checksum | Cyfra kontrolna nie zgadza się. W przypadku numeru 14-cyfrowego błąd może dotyczyć weryfikacji bazowych 9 cyfr lub pełnego numeru. |
Algorytm walidacji
Dział zatytułowany „Algorytm walidacji”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
Walidacja 9-cyfrowa
Dział zatytułowany „Walidacja 9-cyfrowa”- Usuń białe znaki. Wymagaj dokładnie 9 cyfr.
- Pomnóż pierwsze 8 cyfr przez wagi i zsumuj. Oblicz
mod 11. Jeśli wynik to10, cyfra kontrolna musi wynosić0— w przeciwnym razie wynik musi być równy 9. cyfrze.
Walidacja 14-cyfrowa
Dział zatytułowany „Walidacja 14-cyfrowa”- Usuń białe znaki. Wymagaj dokładnie 14 cyfr.
- Sprawdź pierwsze 9 cyfr jako samodzielny REGON-9 (patrz wyżej).
- Pomnóż pierwsze 13 cyfr przez wagi 14-cyfrowe i zsumuj. Oblicz
mod 11. Jeśli wynik to10, 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