controllo codice fiscale su prestashop

controllo codice fiscale su prestashop

non vi soddisfa il semplice controllo fatto sul codice fiscale nel’ iscrizione dei nuovi utenti di prestashop (versione 1.5.6.2)?

molto semplice

copiate il file /classes/Validate.php in /override/classes/

e modificarlo come segue

cercate:

     public static function isDniLite($dni)
     {
         return empty($dni) || (bool)preg_match('/^[0-9A-Za-z-.]{1,16}$/U', $dni);
     }

e modificatelo così:

    public static function isDniLite($dni)
    {
        //return empty($dni) || (bool)preg_match('/^[0-9A-Za-z-.]{1,16}$/U', $dni);
        if($dni=='')
            return false;

        if(strlen($dni)!= 16)
            return false;

        $dni=strtoupper($dni);
        if(!preg_match("/[A-Z0-9]+$/", $dni))
            return false;
        $s = 0;
        for($i=1; $i<=13; $i+=2){
            $c=$dni[$i];
            if('0'<=$c and $c<='9')
                $s+=ord($c)-ord('0');
            else
                $s+=ord($c)-ord('A');
        }

        for($i=0; $i<=14; $i+=2){
            $c=$dni[$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'))!=$dni[15] )
            return false;
    
        return true;
    }

Fatto!!!

ricordatevi di cancellare l’ apposito file nella cache per attivare l’ override