Jump to content

¿Cómo desactivar verificación de DNI/CIF?


Caspian

Recommended Posts

la verdad es que no entiendo la razón de que puedas activar el número de identificación fiscal en todos los países, y luego resulte que no sirve más que para España porque ejecuta una verificación del número sólamente válida para el DNI español.

Por ejemplo, si queremos poner el número de identificación fiscal de otros países como Argentina, Colombia, etc. resulta que no es posible el registro porque esos números no coinciden con la fórmula de verificación del DNI español.

Entonces mi pregunta es la siguiente ¿Cómo desactivar la verificación del DNI?

Gracias.

Link to comment
Share on other sites

Hola Caspian,

Algo he visto para solucionar la validación del DNI en otros países, pero si quieres desabilitar que lo solicite,
ves a a pestaña Transporte y en el país que quieras, selecciona No a ¿Necesita el número de identificación fiscal?

El motivo de que solo funcione en España, es que se pidio esta posibilidad por muchos usuarios de aquí a los desarrolladores, pero en la versión 1.4 creo que ya funcionará la validación intracomunitaria.

espero haberte ayudado
Saludos

Link to comment
Share on other sites

Gracias Francesc, pero eso no es lo que yo quiero.
Yo quiero usar el campo DNI/NIF/CIF para que ciudadanos de por ejemplo Colombia, puedan poner su número de identificación, que en ese país se llama Cédula de identificación y consta sólo de números hasta 12. El problema es que en una tienda colombiana nadie se puede registrar porque el DNI colombianov no sigue el estandard español y siempre le aparece unmensaje de DNI no válido impidiendo el registro, es decir prestashop verifica que el número introducido sea correcto según el standard español, por tanto no sirve para la mayoría de países.

Y lo que no entiendo es que la opción de NDI/NIF/CIF se pueda usar en todos los países, pero sólo sirve para introducir DNI españoles.

Por eso mi pregunta es que desearía que los clientes puedan registrarse con el dni del país (por ejemplo, estoy haciendo una tienda para Colombia) sin que le salga el puñetero mensaje de DNI no válido, es decir, que prestashop no verifique que el DNI es válido para España, porque no tiene lógica, si prestashop puede usarse en múltiples países, ¿a qué santo se coloca una validación sólo válida para los DNI españoles?

Debería haber alguna forma para desactivar la validación del DNI y que pueda servir para países que no siguen formato número+Letra.

  • Like 1
Link to comment
Share on other sites

este es el código parece ser de la validación del DNI. Se encuentra en el archivo Validate.php en /classes
Me gustaría poder cambiarlo para que aceptara hasta 12 números o bien cualquier cosa, mejor así.
En colombia existe el Nuumero de identificación que es hasta 12 números
y también el NIT que es como el NIF español pero son 9 números + guión + número de una cifra
Creo que me serviría con que el formulario aceptara cualquier cosa, pues sería responasbilidad del comprador introducir información errónea para la factura.

¿Alguien me puede ayudar para modificar el código y desactivar la validación del DNI español?

Gracias.

* Check for Dni validity
   *
   * @param string $dni to validate
   * @return int
   */
   static public function isDni($dni)
   {
       /*
       Return code:
       1 : It's Ok
       0 : Bad format for DNI
       -1 : DNI duplicate
       -2 : NIF error
       -3 : CIF error
       -4 : NIE error
       */

       if (!$dni)
           return 1;

       $dni = strtoupper($dni);
       if (!preg_match('/((^[A-Z]{1}[0-9]{7}[A-Z0-9]{1}$|^[T]{1}[A-Z0-9]{8}$)|^[0-9]{8}[A-Z]{1}$)/', $dni)) 
           return 0;

       $result = Db::getInstance()->getValue('
       SELECT COUNT(`id_customer`) AS total 
       FROM `'._DB_PREFIX_.'customer` 
       WHERE `dni` = \''.pSQL($dni).'\'
       ');
       if($result)
           return -1;

       for ($i=0;$i<9;$i++)
           $char[$i] = substr($dni, $i, 1);
       // 12345678T
       if (preg_match('/(^[0-9]{8}[A-Z]{1}$)/', $dni))
           if ($char[8] == substr('TRWAGMYFPDXBNJZSQVHLCKE', substr($dni, 0, 8) % 23, 1))
               return 1;
           else
               return -2;

       $sum = $char[2] + $char[4] + $char[6];
       for ($i = 1; $i < 8; $i += 2)
           $sum += substr((2 * $char[$i]),0,1) + substr((2 * $char[$i]),1,1);

       $n = 10 - substr($sum, strlen($sum) - 1, 1);

       if (preg_match('/^[KLM]{1}/', $dni))
           if ($char[8] == chr(64 + $n))
               return 1;
           else
                return -2;

       if (preg_match('/^[ABCDEFGHJNPQRSUVW]{1}/', $dni))
           if ($char[8] == chr(64 + $n) || $char[8] == substr($n, strlen($n) - 1, 1))
               return 1;
           else
               return -3;

       if (preg_match('/^[T]{1}/', $dni))
           if ($char[8] == preg_match('/^[T]{1}[A-Z0-9]{8}$/', $dni))
               return 1;
           else
               return -4;

       if (preg_match('/^[XYZ]{1}/', $dni))
           if ($char[8] == substr('TRWAGMYFPDXBNJZSQVHLCKE', substr(str_replace(array('X','Y','Z'), array('0','1','2'), $dni), 0, 8) % 23, 1))
               return 1;
           else
               return -4;

       return 0;
   }

Link to comment
Share on other sites

Hola Francesc, al escoger como país Colombia en el formulario de registro, automáticamente desaparece el campo DNI/NIF y no se puede introducir la información fiscal.
Pero muchísimas gracias por prestarme tu tienda para esta prueba.

Link to comment
Share on other sites

Otra posibilidad que se me ocurre, sólo válida para Colombia es la siguiente.
Resulta que en Colombia no existen códigos postales, así que se me ocurre si puedo cambiar ese campo para que en lugar de código postal se pueda introducir el número de identificación colombiano. ¿Alguien sabe si sería posible hacerlo? ¿Qué archivos tendría que editar?

Muchas gracias.

Link to comment
Share on other sites

Hola Francesc, al escoger como país Colombia en el formulario de registro, automáticamente desaparece el campo DNI/NIF y no se puede introducir la información fiscal...


Disculpa, activé "la comprobación del número de IVA con el WebService", desde el módulo "Número de IVA europeo", pero no la necesidad de NIF para el país. :(
Vuelve a probarlo y me dices.
Link to comment
Share on other sites

Francesc, aclárame una duda. Entonces por ejemplo editando el país colombia, activaría el DNI, y desde ahí desactivaría "Número de IVA europeo" y de esta forma aceptaría cualquier número o combinación números y letras. ¿Es así?

Y otra duda que tengo es que me he visto frito para instalar y configurar la version 1.3.6 con un theme personalizado, ya probé la versión 1.4 beta hace un par de semanas y acaba totalmente con mi theme, supongo que justificadamente al ser una versión diferente. Entonces ¿habría posiblidades de usar esas novedades del DNI en la versión 1.3.6? O es imposible?

Gracias.

Link to comment
Share on other sites

Francesc, aclárame una duda. Entonces por ejemplo editando el país colombia, activaría el DNI, y desde ahí desactivaría "Número de IVA europeo" y de esta forma aceptaría cualquier número o combinación números y letras. ¿Es así?

Yo marqué "Activar la comprobación del número de IVA con el WebService" en "Número de IVA europeo" para Colombia, pero me parece que acepta cualquier cosa, no se si funciona la verificación para todos los países, o solo para Europa como indica el nombre.
En teoría debería ser como dices: Se deja desmarcado "Activar la comprobación del número de IVA con el WebService" para que no verifique y ya está.

Y otra duda que tengo es que me he visto frito para instalar y configurar la version 1.3.6 con un theme personalizado, ya probé la versión 1.4 beta hace un par de semanas y acaba totalmente con mi theme, supongo que justificadamente al ser una versión diferente. Entonces ¿habría posiblidades de usar esas novedades del DNI en la versión 1.3.6? O es imposible?

Creo que los temas no són compatibles y el módulo de verificación del DNI no funciona en la v.1.3, me parece que alguien ha modificado la v.1.3 para que no lo verifique, (o lo haga para un país concreto), he visto algun hilo sobre el tema.
Link to comment
Share on other sites

Guest
This topic is now closed to further replies.
×
×
  • Create New...