Ostatnia cyfra w numerze identyfikacji podatkowej pełni rolę sumy kontrolnej.
Jeśli pierwsze 9 cyfr NIPu pomnoży się przez odpowiednie wagi, zsumuje a następnie podzieli modulo przez 11 powinno się w wyniku dostać ostatnią cyfrę. Załóżmy, że mamy nr NIP 726-112-03-85.

  7 2 6 1 1 2 0 3 8
* 6 5 7 2 3 4 5 6 7  <- wagi
---------------------
suma = 7*6 + 2*5 + 6*7 + 1*2 + 1*3 + 2*4 + 0*5 + 3*6 + 8*7 = 181
181 mod 11 = 5

Poniżej funkcja w PHP weryfikująca poprawność NIPu. Zwraca 1, gdy poprawny i 0 w przeciwnym wypadku. Numer można podać w dowolnym formacie.

function verify_nip($string)
{
    $table=Array(6,5,7,2,3,4,5,6,7); //tablica z wagami
    for ($licz=0; $licz<strlen($string); $licz++)   
    if (is_numeric($string[$licz])) $NIP[]=$string[$licz];  //petla tworzaca z nipu tablice liczb
    if (count($NIP)==10)  //jesli jest 10 liczb
    {
        for ($licz=0; $licz<9; $licz++) $wynik[]=$NIP[$licz]*$table[$licz];  //pomnoz kazda przez odpowiadajaca jej wage
        for ($licz=0; $licz<9; $licz++) $suma+=$wynik[$licz]; //zsumuj
        $suma=$suma%11; //podziel modulo przez 11
        if ($suma==$NIP[9]) return 1;   //w zaleznosci od wynik zwroc odpowiednia wartosc
        else return 0;
    }
    return 0;
}
Dodano 24/01/2009 o 19:43 przez ylk
Kategoria: PHP
Tagi: , ,