Location: PHPKode > projects > GAzie - Gestione Aziendale > gazie/library/include/check.inc.php
<?php
 /* $Id: check.inc.php,v 1.8 2010/03/12 08:01:22 devincen Exp $
 --------------------------------------------------------------------------
                            Gazie - Gestione Azienda
    Copyright (C) 2004-2010 - Antonio De Vincentiis Montesilvano (PE)
                                (www.devincentiis.it)
                        <http://gazie.sourceforge.net>
 --------------------------------------------------------------------------
    Questo programma e` free software;   e` lecito redistribuirlo  e/o
    modificarlo secondo i  termini della Licenza Pubblica Generica GNU
    come e` pubblicata dalla Free Software Foundation; o la versione 2
    della licenza o (a propria scelta) una versione successiva.

    Questo programma  e` distribuito nella speranza  che sia utile, ma
    SENZA   ALCUNA GARANZIA; senza  neppure  la  garanzia implicita di
    NEGOZIABILITA` o di  APPLICABILITA` PER UN  PARTICOLARE SCOPO.  Si
    veda la Licenza Pubblica Generica GNU per avere maggiori dettagli.

    Ognuno dovrebbe avere   ricevuto una copia  della Licenza Pubblica
    Generica GNU insieme a   questo programma; in caso  contrario,  si
    scriva   alla   Free  Software Foundation,  Inc.,   59
    Temple Place, Suite 330, Boston, MA 02111-1307 USA Stati Uniti.
 --------------------------------------------------------------------------
*/

class check_VATno_TAXcode
{

function check_VAT_reg_no($pi,$country='IT')
{
    if ( $pi == '' ) {
        return '';
    }
    switch ( $country ) {
            case 'IT':
            // -- BEGIN ITALIAN CHECK
            if ( strlen($pi) != 11 ) {
                return "La lunghezza della partita IVA non &egrave;\n" ."corretta: la partita IVA dovrebbe essere lunga\n" ."esattamente 11 caratteri.\n";
            }
            if( ! preg_match("/^[0-9]+$/", $pi) ) {
                return "La partita IVA contiene dei caratteri non ammessi:\n" ."la partita IVA dovrebbe contenere solo cifre.\n";
            }
            $s = 0;
            for ($i = 0; $i <= 9; $i += 2 ) {
                $s += ord($pi[$i]) - ord('0');
            }
            for ($i = 1; $i <= 9; $i += 2 ) {
                $c = 2*( ord($pi[$i]) - ord('0') );
                if ($c > 9 ) $c = $c - 9;
                   $s += $c;
            }
            if ( ( 10 - $s%10 )%10 != ord($pi[10]) - ord('0') ) {
               return "La partita IVA non &egrave; valida:\n" ."il codice di controllo non corrisponde.";
            }
            // -- END ITALIAN CHECK
            break;
            // -- HERE CODE FOR CHECK OTHER COUNTRY
            default:
            break;
    }
    return '';
}



function check_TAXcode($cf,$country='IT')
{
    if ($cf == '' ) {
       return '';
    }
    switch ( $country ) {
            case 'IT':
            // -- BEGIN ITALIAN CHECK
            if (strlen($cf) == 11 ) { // e' un codice fiscale di persona giuridica
               return $this->check_VAT_reg_no($cf,$country='IT');
            }
            if (strlen($cf) != 16 ) {
               return "La lunghezza del codice fiscale non &egrave;\n" ."corretta: il codice fiscale dovrebbe essere lungo\n" ."esattamente 16 caratteri.";
            }
            $cf = strtoupper($cf);
            if (!preg_match("/^[A-Z0-9]+$/", $cf) ) {
               return "Il codice fiscale contiene dei caratteri non validi:\n" ."i soli caratteri validi sono le lettere e le cifre.";
            }
            $s = 0;
            for ( $i = 1; $i <= 13; $i += 2 ) {
                $c = $cf[$i];
                if ('0' <= $c && $c <= '9' ) {
                   $s += ord($c) - ord('0');
                } else {
                   $s += ord($c) - ord('A');
                }
            }
            for ($i = 0; $i <= 14; $i += 2 ) {
                $c = $cf[$i];
                switch ( $c ) {
                       case '0': $s += 1;
                       break;
                       case '1': $s += 0;
                       break;
                       case '2': $s += 5;
                       break;
                       case '3': $s += 7;
                       break;
                       case '4': $s += 9;
                       break;
                       case '5': $s += 13;
                       break;
                       case '6': $s += 15;
                       break;
                       case '7': $s += 17;
                       break;
                       case '8': $s += 19;
                       break;
                       case '9': $s += 21;
                       break;
                       case 'A': $s += 1;
                       break;
                       case 'B': $s += 0;
                       break;
                       case 'C': $s += 5;
                       break;
                       case 'D': $s += 7;
                       break;
                       case 'E': $s += 9;
                       break;
                       case 'F': $s += 13;
                       break;
                       case 'G': $s += 15;
                       break;
                       case 'H': $s += 17;
                       break;
                       case 'I': $s += 19;
                       break;
                       case 'J': $s += 21;
                       break;
                       case 'K': $s += 2;
                       break;
                       case 'L': $s += 4;
                       break;
                       case 'M': $s += 18;
                       break;
                       case 'N': $s += 20;
                       break;
                       case 'O': $s += 11;
                       break;
                       case 'P': $s += 3;
                       break;
                       case 'Q': $s += 6;
                       break;
                       case 'R': $s += 8;
                       break;
                       case 'S': $s += 12;
                       break;
                       case 'T': $s += 14;
                       break;
                       case 'U': $s += 16;
                       break;
                       case 'V': $s += 10;
                       break;
                       case 'W': $s += 22;
                       break;
                       case 'X': $s += 25;
                       break;
                       case 'Y': $s += 24;
                       break;
                       case 'Z': $s += 23;
                       break;
                }
            }
            if (chr($s%26 + ord('A')) != $cf[15] ) {
              return "Il codice fiscale non &egrave; corretto:\n" ."il codice di controllo non corrisponde.";
            }
            // -- END ITALIAN CHECK
            break;
            // -- HERE CODE FOR CHECK OTHER COUNTRY
            default:
            break;
    }
    return '';
}

}

class postal_code
{
    function check_postal_code($v,$country='IT')
    {
      switch ($country ) {
               case 'IT':
               if(!preg_match("/^[0-9]{5}$/", $v) ) {
                   return "Il codice di avviamento postale non &egrave; valido";
               } else {
                   return false;
               }
               break;
               default:  // per i paesi senza check vedo solo se c'e' ma non faccio i controlli formali
                if(empty($v)) {
                   return false;
                } else {
                   return true;
                }
               break;
      }
    }
}

class IBAN{
    function checkIBAN($v){
        $val = str_replace(' ','',$v);
        if (strlen($val) < 5 or strlen($val) > 34) {
            return false;
        }
        $b = substr($val,4).substr($val,0,4);
        $r = 0;
        for ($i = 0; $i < strlen($b); $i++ ){
            $c=ord(substr($b,$i,1));
            if ($c <= 57 and $c >= 48){ // number
                if ($i == strlen($b)-4 || $i == strlen($b)-3) { // Positions 1 and 2 cannot contain  numbers
                    return false;
                }
                $k = $c-48;
            } elseif ($c <= 90 and $c >= 65){ // char
                if ($i == strlen($b)-1 || $i == strlen($b)-2) { // Positions 1 and 2 cannot contain  letters
                    return false;
                }
                $k = $c-55;
            } else { //char not valid
                return false;
            }
            if ($k > 9) {
                        $r = (100 * $r + $k) % 97;
            } else {
                        $r = (10 * $r + $k) % 97;
            }
        }
        if ($r != 1) {
            return false;
        }
        return true;
    }
}
?>
Return current item: GAzie - Gestione Aziendale