Caspian Posted February 7, 2011 Share Posted February 7, 2011 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 More sharing options...
francesc Posted February 7, 2011 Share Posted February 7, 2011 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 ayudadoSaludos Link to comment Share on other sites More sharing options...
Caspian Posted February 7, 2011 Author Share Posted February 7, 2011 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. 1 Link to comment Share on other sites More sharing options...
Caspian Posted February 7, 2011 Author Share Posted February 7, 2011 este es el código parece ser de la validación del DNI. Se encuentra en el archivo Validate.php en /classesMe 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úmerosy también el NIT que es como el NIF español pero son 9 números + guión + número de una cifraCreo 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 More sharing options...
francesc Posted February 7, 2011 Share Posted February 7, 2011 Activé la validación para colombia aquí con la versión 1.4:http://www.faelectronic.com/Prestashop1.4.0.11/?id_lang=3prueba de hacer un registro y me dices si funciona. Link to comment Share on other sites More sharing options...
Caspian Posted February 7, 2011 Author Share Posted February 7, 2011 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 More sharing options...
Caspian Posted February 7, 2011 Author Share Posted February 7, 2011 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 More sharing options...
francesc Posted February 8, 2011 Share Posted February 8, 2011 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 More sharing options...
Caspian Posted February 8, 2011 Author Share Posted February 8, 2011 Si, parece que he podido registrarme con una identificación normal de varios números¿Qué has hecho para que funcione?Gracias. Link to comment Share on other sites More sharing options...
francesc Posted February 8, 2011 Share Posted February 8, 2011 En la versión 1.4 ademas de tener la opción de seleccionar en que países se pide el DNI, puedes activar el módulo que trae “Número de IVA europeo” y desde este, marcar cual es tu país para el que se activará la validación Link to comment Share on other sites More sharing options...
Caspian Posted February 8, 2011 Author Share Posted February 8, 2011 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 More sharing options...
francesc Posted February 8, 2011 Share Posted February 8, 2011 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 More sharing options...
Recommended Posts