Autor Tema: ¿Cómo calcular dígito verificador del DUI y NIT?  (Leído 63541 veces)

0 Usuarios y 1 Visitante están viendo este tema.

Desconectado Chero

  • -*- vieuxMembeR -*-
  • Trade Count: (0)
  • Sv Member
  • ***
  • Thank You
  • -Given: 4
  • -Receive: 2
  • Mensajes: 307
¿Cómo calcular dígito verificador del DUI y NIT?
« : octubre 26, 2011, 11:52:54 pm »
¿Alguien sabe cómo calcular el dígito verificador del DUI y NIT? Busqué en Google y no encontré nada.

Esto sería para verificar los números cuando se registra una persona en un programa/tarea de la U que me está tocando hacer.  No es un requisito que me hayan pedido, pero siempre he tenido curiosidad de cómo se hace.

Desconectado JaiMe

  • Global Moderator
  • Trade Count: (0)
  • The Communiter-
  • *
  • Thank You
  • -Given: 43
  • -Receive: 413
  • Mensajes: 1485
  • λ | h+
Re: ¿Cómo calcular dígito verificador del DUI y NIT?
« Respuesta #1 : octubre 27, 2011, 08:32:57 am »
No se que queres decir con esto: cómo calcular el dígito verificador

pero podes verificar si los digitos siguen un formato predeterminado con expressiones regulares.

Por ejemplo el DUI creo que sigue este formato

12345678-1

Solo tendrias que evaluar la cadena de texto y hacer un test como este (en JavaScript):

Código: [Seleccionar]
var regex = /^\d{8}-\d$/;
regex.test("12345678-1")       // true

regex.test("12345678")         // false
regex.test("123456789-1")      // false
regex.test("12345678-12")      // false

Varios lenguajes de programacion comparten la misma syntax para las expressiones regulares, con cambios minimos en la manera de instanciarlas y ejecutarlas.

Ahora, para el NIT, que sigue este formato 1234-123456-123-0, el processo seria bastante familiar y te lo dejo de tarea para que te familiarizes con las expressiones regulares.

pd: Yo no tengo ninguno de esos documentos, asi que no estoy seguro del formato
Follow members gave a thank to your post:
"Unless you try to do something beyond what you have already mastered, you will never grow."
― Ralph Waldo Emerson

Desconectado tekun

  • -^- Elite Silver -^-
  • Trade Count: (1)
  • The Communiter-
  • *
  • Thank You
  • -Given: 52
  • -Receive: 101
  • Mensajes: 3221
  • Han convertido mi casa en cueva de mercaderes!!!!
    • www.tekun.es
Re: ¿Cómo calcular dígito verificador del DUI y NIT?
« Respuesta #2 : octubre 27, 2011, 04:18:37 pm »
creo que lo que chero busca es validar si un dui es válido o no....


adjunto un bloc de notas con el codigo de una funcion en pl para verificar eso... ahí están los procesos matematicos que se realizan, espero te sirva de algo

con los permisos de alberto, porque no puso sus términos legales de usar la función, es que lo comparto...
Follow members gave a thank to your post:
lo difícil lo hago rápido, con lo imposible, casi siempre me tardo un poquito

Desconectado Jaru

  • Trade Count: (21)
  • The Communiter-
  • *
  • Thank You
  • -Given: 782
  • -Receive: 1555
  • Mensajes: 13251
  • some text
Re: ¿Cómo calcular dígito verificador del DUI y NIT?
« Respuesta #3 : octubre 27, 2011, 04:42:40 pm »
no soy muy bueno en pascual

alguien podria poner el algoritmo ya sacado?
N/A

Desconectado Camus de Acuario

  • Trade Count: (10)
  • The Communiter-
  • *
  • Thank You
  • -Given: 360
  • -Receive: 1851
  • Mensajes: 8452
  • Ōrora Ekusukyūshon!
Re: ¿Cómo calcular dígito verificador del DUI y NIT?
« Respuesta #4 : octubre 27, 2011, 05:18:36 pm »
No se que queres decir con esto: cómo calcular el dígito verificador

pero podes verificar si los digitos siguen un formato predeterminado con expressiones regulares.
Lo que pasa es que para documentos de este tipo no solo siguen un patron o formato, sino que al final tienen un numero verificador que es calculado con referencia a los otros numeros, para valga la redundancia validar el número final.

no soy muy bueno en pascual

alguien podria poner el algoritmo ya sacado?
No es pascual, es PL/SQL, lenguaje de programacion con sentencias TSQL para oracle.

Para el del DUI el proceso que recuerdo es este:
-el numero que esta a la derecha del guion se conoce como digito verificador
-se coloca el numero sin guiones y con ceros a la izquierda
-deben ser 9 caracters
-se toman los primeros 8 caracteres (sin el digito verificador) y a cada uno se le multiplica por la posicion en la que se encuentra. Partiendo que la posicion 9 es el primer numero de la izquierda.
-se suman todos los resultados
-se hace un mod de la suma dividido por 10 (osea toma el remanente de esa division)
-Resta 10 menos el remanente de la division
-si la resta da 0 el DUI es correcto
-si la resta es igual al digito verificador el DUI es correcto
-si la resta es distinta al digito verificador el DUI es incorrecto
Follow members gave a thank to your post:

Desconectado Camus de Acuario

  • Trade Count: (10)
  • The Communiter-
  • *
  • Thank You
  • -Given: 360
  • -Receive: 1851
  • Mensajes: 8452
  • Ōrora Ekusukyūshon!
Re: ¿Cómo calcular dígito verificador del DUI y NIT?
« Respuesta #5 : octubre 27, 2011, 05:30:30 pm »
Pongamolo en practica, tomemos como ejemplo el DUI de este simpatico señor que encontre en google images.



El DUI del sonriente señor es:
00016297-5

Digito verificador: 5

Ahora asignemos las posiciones

Posicion -> 9     8     7     6     5     4     3      2
DUI       -> 0     0     0     1     6     2     9      7

SUMA: (9*0)+(8*0)+(7*0)+(6*1)+(5*6)+(4*2)+(3*9)+(2*7) = 85
DIVISION: MOD(85/10) = 5
RESTA: 10 - 5 = 5
Digito Verificador = 5 = Resta = 5 = DUI valido.

Intentenlo con su DUI, verificare si aca en la BD hay alguna funcion para verificar el NIT.
« Última Modificación: octubre 27, 2011, 05:35:13 pm por Camus de Acuario »

Desconectado el-mago

  • Trade Count: (2)
  • The Communiter-
  • *
  • Thank You
  • -Given: 19
  • -Receive: 83
  • Mensajes: 2031
Re: ¿Cómo calcular dígito verificador del DUI y NIT?
« Respuesta #6 : octubre 27, 2011, 05:45:21 pm »
Exelente explicación Camus.... :):)
Dominio .com + WebHosting desde US$35.00/año cPanel y DirectAdmin || Planes Reseller cPanel/WHM || Consulta sin compromiso!

Desconectado hkadejo

  • Global Moderator
  • Trade Count: (0)
  • The Communiter-
  • *
  • Thank You
  • -Given: 277
  • -Receive: 929
  • Mensajes: 3345
    • AndroidJutsu
Re: ¿Cómo calcular dígito verificador del DUI y NIT?
« Respuesta #7 : octubre 27, 2011, 06:19:49 pm »
Para el NIT existe un procedimiento similar como el que ha explicado Camus...el ultimo digito es un verificador.
Lo unico que desconozco es si el algoritmo para calcular ese digito es alguna especie de secreto de estado, mañana hare la pregunta a mi jefe y sino hay ningun problema publicare aca todo el procedimiento.
Ayudo a no programadores y programadores novatos con tutoriales, código y consejos a convertirse en desarrolladores Android profesionales y crear apps geniales.

DESCARGA MI GUÍA -> https://androidjutsu.com/guia-crea-tu-primera-aplicacion-android/

Desconectado JaiMe

  • Global Moderator
  • Trade Count: (0)
  • The Communiter-
  • *
  • Thank You
  • -Given: 43
  • -Receive: 413
  • Mensajes: 1485
  • λ | h+
Re: ¿Cómo calcular dígito verificador del DUI y NIT?
« Respuesta #8 : octubre 27, 2011, 06:45:07 pm »
No estaba familiar con el bendito digito verificador, me recuerda a la validacion de tarjetas de credito. Por si alguna ves alguien necesita hacer la verificacion del lado del cliente aqui les va mi implementacion (colaboracion para verificarla es bienvenida):

https://gist.github.com/1321329

Código: [Seleccionar]
var isDUI = function(str){
   var regex = /(^\d{8})-(\d$)/,
         parts = str.match(regex);

    // verficar formato y extraer digitos junto al digito verificador
    if(parts !== null){
      var digits = parts[1],
          dig_ve = parseInt(parts[2], 10),
          sum    = 0;

      // sumar producto de posiciones y digitos
      for(var i = 0, l = digits.length; i < l; i++){
        var d = parseInt(digits[i], 10);
        sum += ( 9 - i ) * d;
      }
      return dig_ve === 10 - ( sum % 10 );
    }else{
      return false;
    }
};


Uso

Código: [Seleccionar]
isDUI('00016297-5');    // true

isDUI('12345678-1');    // false
isDUI('123456789-1');   // false
isDUI('12345678-12');   // false
« Última Modificación: octubre 27, 2011, 06:50:26 pm por JaiMe »
"Unless you try to do something beyond what you have already mastered, you will never grow."
― Ralph Waldo Emerson

Desconectado Camus de Acuario

  • Trade Count: (10)
  • The Communiter-
  • *
  • Thank You
  • -Given: 360
  • -Receive: 1851
  • Mensajes: 8452
  • Ōrora Ekusukyūshon!
Re: ¿Cómo calcular dígito verificador del DUI y NIT?
« Respuesta #9 : octubre 27, 2011, 07:29:10 pm »
Para el NIT existe un procedimiento similar como el que ha explicado Camus...el ultimo digito es un verificador.
Lo unico que desconozco es si el algoritmo para calcular ese digito es alguna especie de secreto de estado, mañana hare la pregunta a mi jefe y sino hay ningun problema publicare aca todo el procedimiento.
Yo creo que la tengo, mas tarde la publico

No estaba familiar con el bendito digito verificador, me recuerda a la validacion de tarjetas de credito.
Exacto, es la misma idea, casi todo tipo de documentos asi se generan con un algoritmo, llamese numero de tarjeta, numero de documento unico (DUI, DIU, NIT), numeros electorales, licencias, NIT, hasta para el pasaporte creo que hay
« Última Modificación: octubre 27, 2011, 07:32:37 pm por Camus de Acuario »

Desconectado hkadejo

  • Global Moderator
  • Trade Count: (0)
  • The Communiter-
  • *
  • Thank You
  • -Given: 277
  • -Receive: 929
  • Mensajes: 3345
    • AndroidJutsu
Re: ¿Cómo calcular dígito verificador del DUI y NIT?
« Respuesta #10 : octubre 27, 2011, 07:43:36 pm »
Yo creo que la tengo, mas tarde la publico

Publicala y la comparo con la version que se usa en hacienda (llamemola la version "oficial")
Ayudo a no programadores y programadores novatos con tutoriales, código y consejos a convertirse en desarrolladores Android profesionales y crear apps geniales.

DESCARGA MI GUÍA -> https://androidjutsu.com/guia-crea-tu-primera-aplicacion-android/

Desconectado Chero

  • -*- vieuxMembeR -*-
  • Trade Count: (0)
  • Sv Member
  • ***
  • Thank You
  • -Given: 4
  • -Receive: 2
  • Mensajes: 307
Re: ¿Cómo calcular dígito verificador del DUI y NIT?
« Respuesta #11 : octubre 27, 2011, 09:07:04 pm »
Gracias por compartir el algoritmo de la validación del DUI  :thumbsup:

El proyecto en el que estoy trabajando está en Visual Basic (decisión de los compañeros de la U, no mía xD), cuando escriba la función en VB la voy a subir acá para quien la necesite.

Desconectado mmdiazl

  • Trade Count: (0)
  • Sv Full Member
  • *
  • Thank You
  • -Given: 10
  • -Receive: 93
  • Mensajes: 552
  • Una respuesta honesta es señal d una buena amistad
Re: ¿Cómo calcular dígito verificador del DUI y NIT?
« Respuesta #12 : octubre 27, 2011, 09:25:14 pm »
Quiero ver si entendi, esta funcion consiste en verificar si el DUI ingresado esta asignado a una persona y por lo tanto es real.

Desconectado Chero

  • -*- vieuxMembeR -*-
  • Trade Count: (0)
  • Sv Member
  • ***
  • Thank You
  • -Given: 4
  • -Receive: 2
  • Mensajes: 307
Re: ¿Cómo calcular dígito verificador del DUI y NIT?
« Respuesta #13 : octubre 27, 2011, 09:33:03 pm »
Quiero ver si entendi, esta funcion consiste en verificar si el DUI ingresado esta asignado a una persona y por lo tanto es real.

No exactamente, es más para verificar que el número se escribió correctamente.

Muchos números que se elaboran por computadora se les agrega un último dígito que actúa como dígito verificador. Este dígito se calcula aplicando un algoritmo a todos los demás dígitos del número.

Por ejemplo, el último dígito de los códigos de barra es un dígito verificador, el scanner puede verificar si leyó correctamente el número calculando el dígito verificador y comparando con el núemro que leyo. También se usan en el NIT, tarjetas de crédito y otros tipos de documento.

Desconectado mmdiazl

  • Trade Count: (0)
  • Sv Full Member
  • *
  • Thank You
  • -Given: 10
  • -Receive: 93
  • Mensajes: 552
  • Una respuesta honesta es señal d una buena amistad
Re: ¿Cómo calcular dígito verificador del DUI y NIT?
« Respuesta #14 : octubre 27, 2011, 09:39:31 pm »
No exactamente, es más para verificar que el número se escribió correctamente.

Muchos números que se elaboran por computadora se les agrega un último dígito que actúa como dígito verificador. Este dígito se calcula aplicando un algoritmo a todos los demás dígitos del número.

Por ejemplo, el último dígito de los códigos de barra es un dígito verificador, el scanner puede verificar si leyó correctamente el número calculando el dígito verificador y comparando con el núemro que leyo. También se usan en el NIT, tarjetas de crédito y otros tipos de documento.

Ahora si...Gracias  :thumbsup: :D

Desconectado Camus de Acuario

  • Trade Count: (10)
  • The Communiter-
  • *
  • Thank You
  • -Given: 360
  • -Receive: 1851
  • Mensajes: 8452
  • Ōrora Ekusukyūshon!
Re: ¿Cómo calcular dígito verificador del DUI y NIT?
« Respuesta #15 : octubre 28, 2011, 09:48:53 am »
Mis mas sentido: lo siento, la funcion que vi para validar el NIT no tiene ni mi$$rda jajajajajajaja alli esta el cascaron nomas

Citar
CREATE OR REPLACE PROCEDURE INTERFAZ.Validar_NIT_ESV( pNIT NUMBER) AS
BEGIN
    NULL;
END;
/

gran baje que me dieron jajajajajajajaja
« Última Modificación: octubre 28, 2011, 09:50:28 am por Camus de Acuario »

Desconectado mxgxw

  • Global Moderator
  • Trade Count: (1)
  • The Communiter-
  • *
  • Thank You
  • -Given: 27
  • -Receive: 651
  • Mensajes: 5666
  • Starlet - 999cc
    • mxgxw
Re: ¿Cómo calcular dígito verificador del DUI y NIT?
« Respuesta #16 : octubre 28, 2011, 10:16:57 am »
Mis mas sentido: lo siento, la funcion que vi para validar el NIT no tiene ni mi$$rda jajajajajajaja alli esta el cascaron nomas

gran baje que me dieron jajajajajajajaja

El código es bastante sencillo y elegante... faskj asfdklfdfdas


Desconectado tekun

  • -^- Elite Silver -^-
  • Trade Count: (1)
  • The Communiter-
  • *
  • Thank You
  • -Given: 52
  • -Receive: 101
  • Mensajes: 3221
  • Han convertido mi casa en cueva de mercaderes!!!!
    • www.tekun.es
Re: ¿Cómo calcular dígito verificador del DUI y NIT?
« Respuesta #17 : octubre 28, 2011, 02:39:18 pm »
Mis mas sentido: lo siento, la funcion que vi para validar el NIT no tiene ni mi$$rda jajajajajajaja alli esta el cascaron nomas

gran baje que me dieron jajajajajajajaja

p$$ta... en mi vida había encontrado una función tan fumada  :rasta:


acá esta la función del nit... a la espera de kdejo pa ver lo oficial....
Follow members gave a thank to your post:
lo difícil lo hago rápido, con lo imposible, casi siempre me tardo un poquito

Desconectado Rogelio

  • Trade Count: (0)
  • The newbie
  • *
  • Thank You
  • -Given: 0
  • -Receive: 0
  • Mensajes: 1
Re:¿Cómo calcular dígito verificador del DUI y NIT?
« Respuesta #18 : octubre 04, 2012, 02:32:48 pm »
Después de tanto buscar....
Gracias TEKUN

Desconectado hkadejo

  • Global Moderator
  • Trade Count: (0)
  • The Communiter-
  • *
  • Thank You
  • -Given: 277
  • -Receive: 929
  • Mensajes: 3345
    • AndroidJutsu
Re:¿Cómo calcular dígito verificador del DUI y NIT?
« Respuesta #19 : octubre 04, 2012, 03:02:58 pm »
Y yo nunca puse la oficial x_x pero la de Tekun esta bien
Ayudo a no programadores y programadores novatos con tutoriales, código y consejos a convertirse en desarrolladores Android profesionales y crear apps geniales.

DESCARGA MI GUÍA -> https://androidjutsu.com/guia-crea-tu-primera-aplicacion-android/

Desconectado Darkness

  • Trade Count: (3)
  • The Communiter-
  • *
  • Thank You
  • -Given: 65
  • -Receive: 20
  • Mensajes: 2148
  • The Darkness
    • Diseño y Programaciòn Web Profesional
Re: ¿Cómo calcular dígito verificador del DUI y NIT?
« Respuesta #20 : octubre 04, 2012, 06:04:29 pm »
Al igual que el ejemplo de virguliña yo solo validaba el formato de la cadena

Gracias esto me servira de mucho



Enviado desde mi GT-I5700 usando Tapatalk
La Muerte Simplemente es el Despertar de Un Sueño Lleno de Falsedades e hipocrecias.
"Larga Vida Al Heavy Metal"

Iron Maiden Discografia DD

Desconectado ado17

  • Trade Count: (1)
  • The Communiter-
  • *
  • Thank You
  • -Given: 33
  • -Receive: 13
  • Mensajes: 1340
Re:¿Cómo calcular dígito verificador del DUI y NIT?
« Respuesta #21 : octubre 05, 2012, 12:06:33 am »
Pongamolo en practica, tomemos como ejemplo el DUI de este simpatico señor que encontre en google images.



El DUI del sonriente señor es:
00016297-5

Digito verificador: 5

Ahora asignemos las posiciones

Posicion -> 9     8     7     6     5     4     3      2
DUI       -> 0     0     0     1     6     2     9      7

SUMA: (9*0)+(8*0)+(7*0)+(6*1)+(5*6)+(4*2)+(3*9)+(2*7) = 85
DIVISION: MOD(85/10) = 5
RESTA: 10 - 5 = 5
Digito Verificador = 5 = Resta = 5 = DUI valido.

Intentenlo con su DUI, verificare si aca en la BD hay alguna funcion para verificar el NIT.

Que es el MOD en la division del 85 entre el diez para que te de 5? Es alguna constante o solo es que ya tengo sueño.....?
Estoy haciendolo en una tabla de excel, solo por curiosidad no programo nada, solo algunas cositas pero mi calculadora HP 50g   :yao_ming:
« Última Modificación: octubre 05, 2012, 12:23:36 am por ado17 »

Desconectado Ronnie

  • Trade Count: (0)
  • Sv Member
  • ***
  • Thank You
  • -Given: 6
  • -Receive: 0
  • Mensajes: 428
  • -: Larga vida al rock :-
Re:¿Cómo calcular dígito verificador del DUI y NIT?
« Respuesta #22 : octubre 05, 2012, 08:54:32 am »
Yo no sabia que varios codigos que usamos en nuestro diario vivir tiene un código verificador.  :thumbsup:

A la espera del algoritmo del NIT.
...

Desconectado Camus de Acuario

  • Trade Count: (10)
  • The Communiter-
  • *
  • Thank You
  • -Given: 360
  • -Receive: 1851
  • Mensajes: 8452
  • Ōrora Ekusukyūshon!
Re:¿Cómo calcular dígito verificador del DUI y NIT?
« Respuesta #23 : octubre 05, 2012, 09:04:52 am »
Que es el MOD en la division del 85 entre el diez para que te de 5? Es alguna constante o solo es que ya tengo sueño.....?
Estoy haciendolo en una tabla de excel, solo por curiosidad no programo nada, solo algunas cositas pero mi calculadora HP 50g   :yao_ming:
La función MOD(m,n) te retorna el residuo de la división entre m y n.

85 /10
  5  8

Desconectado gcastellanos

  • Trade Count: (0)
  • Sv Member
  • ***
  • Thank You
  • -Given: 4
  • -Receive: 31
  • Mensajes: 196
    • Enter Computadoras
Re:¿Cómo calcular dígito verificador del DUI y NIT?
« Respuesta #24 : octubre 05, 2012, 09:07:06 am »
Que es el MOD en la division del 85 entre el diez para que te de 5? Es alguna constante o solo es que ya tengo sueño.....?
Estoy haciendolo en una tabla de excel, solo por curiosidad no programo nada, solo algunas cositas pero mi calculadora HP 50g   :yao_ming:
En excel, el MOD equivale a residuo, si es excel 2007 se usa la función RESIDUO(), si es excel 2010 se usa RESTO().

La fórmula para validar DUI en excel es la siguiente: (asumiendo que el DUI se escribe en la celda A1

Código: [Seleccionar]
=SI(VALOR(MED(A1,10,1))=(RESTO(MED(A1,1,1)*9+MED(A1,2,1)*8+MED(A1,3,1)*7+MED(A1,4,1)*6+MED(A1,5,1)*5+MED(A1,6,1)*4+MED(A1,7,1)*3+MED(A1,8,1)*2,10)),"VALIDO","NO VALIDO")
Porque lo que hago, no lo entiendo; pues no hago lo que quiero, sino lo que aborrezco, eso hago. (Rom. 7:15)

Desconectado cedlink

  • Trade Count: (0)
  • Sv Jr.
  • **
  • Thank You
  • -Given: 2
  • -Receive: 2
  • Mensajes: 62
Re:¿Cómo calcular dígito verificador del DUI y NIT?
« Respuesta #25 : mayo 21, 2013, 01:23:32 pm »
Hey reviviendo a la vida este tema les queria preguntar: lo estuve probando mi DUI pero el residuo de la division me dio 0. por lo que si hago 10-0 es 10 ahi como seria? se ignora el 1 o que ondas?

Desconectado vlady30

  • Trade Count: (0)
  • Sv Full Member
  • *
  • Thank You
  • -Given: 3
  • -Receive: 31
  • Mensajes: 623
Re:¿Cómo calcular dígito verificador del DUI y NIT?
« Respuesta #26 : mayo 21, 2013, 01:57:40 pm »
-se hace un mod de la suma dividido por 10 (osea toma el remanente de esa division)
-Resta 10 menos el remanente de la division

Una pregunta?? y este numero 10 de donde sale?
"ESTO NO SE ACABA HASTA QUE YO GANE¡¡¡¡".

Desconectado allucard7

  • Trade Count: (0)
  • Sv Member
  • ***
  • Thank You
  • -Given: 8
  • -Receive: 28
  • Mensajes: 263
  • Si no vivo para servir, no sirvo para vivir!
Re:¿Cómo calcular dígito verificador del DUI y NIT?
« Respuesta #27 : mayo 21, 2013, 02:18:27 pm »
Alguno pudo traducir el algoritmo de tekun para usarlo en Excel 2010 asi como gcastellanos??????
No luches para vivir, vive para luchar!

Desconectado cedlink

  • Trade Count: (0)
  • Sv Jr.
  • **
  • Thank You
  • -Given: 2
  • -Receive: 2
  • Mensajes: 62
Re:¿Cómo calcular dígito verificador del DUI y NIT?
« Respuesta #28 : mayo 21, 2013, 02:37:24 pm »
Yo lo pude hacer funcionar en el office 2007 de esta manera

Código: [Seleccionar]
=SI(VALOR(EXTRAE(A1,10,1))=(10-RESIDUO(EXTRAE(A1,1,1)*9+EXTRAE(A1,2,1)*8+EXTRAE(A1,3,1)*7+EXTRAE(A1,4,1)*6+EXTRAE(A1,5,1)*5+EXTRAE(A1,6,1)*4+EXTRAE(A1,7,1)*3+EXTRAE(A1,8,1)*2,10)),"VALIDO","NO VALIDO")
El DUI lo puse en la celda A1 y la formula en la B1 y va bien. Solo es esa duda la que me queda, porque cuando la division el residuo es 0.

Y como se supone que a 10 le tenes que quitar el residuo para que te de el digito verificador. Pero en mi caso queda 10 - 0 = 10 el digito verificador es 0, entonces me queda la duda si es que cuando el residuo sea 0 de un solo es 0 o que ondas.

Desconectado allucard7

  • Trade Count: (0)
  • Sv Member
  • ***
  • Thank You
  • -Given: 8
  • -Receive: 28
  • Mensajes: 263
  • Si no vivo para servir, no sirvo para vivir!
Re:¿Cómo calcular dígito verificador del DUI y NIT?
« Respuesta #29 : mayo 21, 2013, 02:38:43 pm »
Yo lo pude hacer funcionar en el office 2007 de esta manera

Código: [Seleccionar]
=SI(VALOR(EXTRAE(A1,10,1))=(10-RESIDUO(EXTRAE(A1,1,1)*9+EXTRAE(A1,2,1)*8+EXTRAE(A1,3,1)*7+EXTRAE(A1,4,1)*6+EXTRAE(A1,5,1)*5+EXTRAE(A1,6,1)*4+EXTRAE(A1,7,1)*3+EXTRAE(A1,8,1)*2,10)),"VALIDO","NO VALIDO")
El DUI lo puse en la celda A1 y la formula en la B1 y va bien. Solo es esa duda la que me queda, porque cuando la division el residuo es 0.

Y como se supone que a 10 le tenes que quitar el residuo para que te de el digito verificador. Pero en mi caso queda 10 - 0 = 10 el digito verificador es 0, entonces me queda la duda si es que cuando el residuo sea 0 de un solo es 0 o que ondas.


Esta es la forma para usar la validacion de DUI, me refiero al NIT
No luches para vivir, vive para luchar!

Desconectado cedlink

  • Trade Count: (0)
  • Sv Jr.
  • **
  • Thank You
  • -Given: 2
  • -Receive: 2
  • Mensajes: 62
Re:¿Cómo calcular dígito verificador del DUI y NIT?
« Respuesta #30 : mayo 21, 2013, 03:40:21 pm »
Ya la entendi, pero que despelote porque vaya el NIT esta en este formato: XXXX-XXXXXX-XXX-X si lo dividimos en bloques serian los bloques A, B, C y D respectivamente.

Si el bloque C, los 3 numeros esos leidos juntos son menor que 100, entonces se calcula parecido al DUI, pero si es mayor que 100 hay que multiplicar por un factor todo raro.

ya de otro rato lo tradusco a excel 2007

Desconectado allucard7

  • Trade Count: (0)
  • Sv Member
  • ***
  • Thank You
  • -Given: 8
  • -Receive: 28
  • Mensajes: 263
  • Si no vivo para servir, no sirvo para vivir!
Re:¿Cómo calcular dígito verificador del DUI y NIT?
« Respuesta #31 : mayo 21, 2013, 04:05:15 pm »
Esperando interesadamente estimado cedlink
No luches para vivir, vive para luchar!

Desconectado namreg

  • Trade Count: (0)
  • Sv Member
  • ***
  • Thank You
  • -Given: 0
  • -Receive: 2
  • Mensajes: 417
Re:¿Cómo calcular dígito verificador del DUI y NIT?
« Respuesta #32 : mayo 21, 2013, 04:16:02 pm »
Es raro yo probe con mi DUI y el resultado del MOD es 5 y el digito validador es 6, sera que me han dado un dui chafa en el DUICENTRO  :yao_ming:
Todos tenemos una maquina del tiempo las que nos llevan al pasado son recuerdos y las que nos llevan al futuro son sueños

Desconectado cedlink

  • Trade Count: (0)
  • Sv Jr.
  • **
  • Thank You
  • -Given: 2
  • -Receive: 2
  • Mensajes: 62
Re:¿Cómo calcular dígito verificador del DUI y NIT?
« Respuesta #33 : mayo 21, 2013, 05:04:40 pm »
Vaya que valida de verda, pero creo que funciona

el NIT lo puse en la celda A2 y con sus guiones o sea en formato XXXX-XXXXXX-XXX-X

Como hacerlo todo junto salia demasiado largo lo dividi en 3 pasos:

Primer paso saber que camino usar:
En la celda B2 extraje los 3 numeros que estan antes del ultimo digito
Código: [Seleccionar]
=EXTRAE(A2,13,3)
Nada del otro mundo, luego en la celda C2 puse lo siguiente (que se usa si esos 3 numeros forman una cantidad mayor que 100)
Código: [Seleccionar]
=SI(ENTERO(B2)>100,RESIDUO((EXTRAE(A2,1,1)*((3+(6*REDONDEAR.MENOS((ABS((1+4)/6)),0)))-1)+EXTRAE(A2,2,1)*((3+(6*REDONDEAR.MENOS((ABS((2+4)/6)),0)))-2)+EXTRAE(A2,3,1)*((3+(6*REDONDEAR.MENOS((ABS((3+4)/6)),0)))-3)+EXTRAE(A2,4,1)*((3+(6*REDONDEAR.MENOS((ABS((4+4)/6)),0)))-4)+EXTRAE(A2,6,1)*((3+(6*REDONDEAR.MENOS((ABS((5+4)/6)),0)))-5)+EXTRAE(A2,7,1)*((3+(6*REDONDEAR.MENOS((ABS((6+4)/6)),0)))-6)+EXTRAE(A2,8,1)*((3+(6*REDONDEAR.MENOS((ABS((7+4)/6)),0)))-7)+EXTRAE(A2,9,1)*((3+(6*REDONDEAR.MENOS((ABS((8+4)/6)),0)))-8)+EXTRAE(A2,10,1)*((3+(6*REDONDEAR.MENOS((ABS((9+4)/6)),0)))-9)+EXTRAE(A2,11,1)*((3+(6*REDONDEAR.MENOS((ABS((10+4)/6)),0)))-10)+EXTRAE(A2,13,1)*((3+(6*REDONDEAR.MENOS((ABS((11+4)/6)),0)))-11)+EXTRAE(A2,14,1)*((3+(6*REDONDEAR.MENOS((ABS((12+4)/6)),0)))-12)+EXTRAE(A2,15,1)*((3+(6*REDONDEAR.MENOS((ABS((13+4)/6)),0)))-13)),11),0)
gran letania, en D2 se coloca una condicional y el resultado (en teoria) es el digito validador
Código: [Seleccionar]
=SI(ENTERO(C2)>1,11-C2,0)
En la C3 puse lo que se debe hacer si la catidad en B2 es menor o igual a 100
Código: [Seleccionar]
=SI(ENTERO(B2)<=100,RESIDUO((EXTRAE(A2,1,1)*14+EXTRAE(A2,2,1)*13+EXTRAE(A2,3,1)*12+EXTRAE(A2,4,1)*11+EXTRAE(A2,6,1)*10+EXTRAE(A2,7,1)*9+EXTRAE(A2,8,1)*8+EXTRAE(A2,9,1)*7+EXTRAE(A2,10,1)*6+EXTRAE(A2,11,1)*5+EXTRAE(A2,13,1)*4+EXTRAE(A2,14,1)*3+EXTRAE(A2,15,1)*2),11),0)
Y en D3 lo mismo solo para hacer unas comparaciones
Código: [Seleccionar]
=SI(ENTERO(C3)=10,0,C3)
Espero les sirva.

NOTA: eso si el proceso esta basado en el que puso TEKUN y ahi mismo dice que tiene excepciones, ose a que algunos NIT seguramente no van a pegar.
Follow members gave a thank to your post:
allucard7, WolfHeart
« Última Modificación: mayo 21, 2013, 05:40:35 pm por cedlink »

Desconectado allucard7

  • Trade Count: (0)
  • Sv Member
  • ***
  • Thank You
  • -Given: 8
  • -Receive: 28
  • Mensajes: 263
  • Si no vivo para servir, no sirvo para vivir!
Re:¿Cómo calcular dígito verificador del DUI y NIT?
« Respuesta #34 : mayo 21, 2013, 07:48:07 pm »
Vaya que valida de verda, pero creo que funciona

el NIT lo puse en la celda A2 y con sus guiones o sea en formato XXXX-XXXXXX-XXX-X



Excepcional maestro!
No luches para vivir, vive para luchar!

Desconectado tekun

  • -^- Elite Silver -^-
  • Trade Count: (1)
  • The Communiter-
  • *
  • Thank You
  • -Given: 52
  • -Receive: 101
  • Mensajes: 3221
  • Han convertido mi casa en cueva de mercaderes!!!!
    • www.tekun.es
Re:¿Cómo calcular dígito verificador del DUI y NIT?
« Respuesta #35 : mayo 22, 2013, 08:05:03 am »
chivo, ya voy a buscar el de los dui para que lo traduzcan porque lo tengo en un PL o no se si ya esta... ya le perdi el hilo al thread
lo difícil lo hago rápido, con lo imposible, casi siempre me tardo un poquito

Desconectado Camus de Acuario

  • Trade Count: (10)
  • The Communiter-
  • *
  • Thank You
  • -Given: 360
  • -Receive: 1851
  • Mensajes: 8452
  • Ōrora Ekusukyūshon!
Re:¿Cómo calcular dígito verificador del DUI y NIT?
« Respuesta #36 : mayo 22, 2013, 08:47:12 am »
chivo, ya voy a buscar el de los dui para que lo traduzcan porque lo tengo en un PL o no se si ya esta... ya le perdi el hilo al thread

Acá puse la explicación detallada para poder se aplicadas en cualquier lenguaje.

http://www.svcommunity.org/forum/programacioacuten/como-calcular-digito-verificador-del-dui-y-nit/msg820981/#msg820981

Desconectado Blexis

  • Trade Count: (0)
  • The newbie
  • *
  • Thank You
  • -Given: 2
  • -Receive: 0
  • Mensajes: 3
    • Blexis's Blog
Re:¿Cómo calcular dígito verificador del DUI y NIT?
« Respuesta #37 : mayo 23, 2013, 12:20:41 pm »
Buenas, aquí les dejo el los algoritmos en PHP.

=============
Actualización: 05 - Junio - 2013:
Corrijo un error en el proceso de validación del NIT.

Código: [Seleccionar]
function validar_dui($dui){
   
       if(preg_match('/(^\d{9})/',$dui)){
            $verificador = (int) substr($dui,8,1);
           
            $suma = 0;
            for($i = 9; $i > 1; $i--){
                $suma += ((int) substr($dui,(9-$i),1)) * $i;
            }
            if(($mod = ($suma%10)) == 0){
                $mod = 10;
            }
            $valida = 10 - $mod;
           
            if($valida == $verificador) return true;
       }
       return false;
}

Código: [Seleccionar]
public function validar_nit($nit){
if(preg_match('/(^\d{14})/',$nit)){
$verificador = (int) substr($nit,13,1);
$valida = false;
$suma = 0;
if(( (int)substr($nit,10,3) ) <= 100){
for($i = 1; $i <= 13; $i++){
$suma += ( (int) substr($nit,( $i - 1 ),1) ) * ( 15 - $i );
}
$valida = ($suma%11);

if($valida == 10){
$valida = 0;
}
}else{
for($i = 1; $i <= 13; $i++){
$factor = (3 + (6 * floor(abs(( $i + 4 ) / 6)))) - $i;
$suma += ( (int) substr($nit,( $i - 1 ),1) ) * $factor;
}
$mod = ($suma%11);
if($mod > 1){
$valida = 11 - $mod;
}else{
$valida = 0;
}
}
if($valida == $verificador) return true;
   }
   return false;
}

« Última Modificación: junio 05, 2013, 11:03:53 am por Blexis »
FIA - UES

Desconectado cedlink

  • Trade Count: (0)
  • Sv Jr.
  • **
  • Thank You
  • -Given: 2
  • -Receive: 2
  • Mensajes: 62
Re:¿Cómo calcular dígito verificador del DUI y NIT?
« Respuesta #38 : mayo 23, 2013, 12:29:18 pm »
Yo se los dejos en Javascript por si a alguien les sirven

Código: [Seleccionar]
function dui_ver(numero){
var x=document.getElementById(numero).value;
var resultado = 0;
resultado = x.charAt(0)*9;
resultado = resultado + x.charAt(1)*8;
resultado = resultado + x.charAt(2)*7;
resultado = resultado + x.charAt(3)*6;
resultado = resultado + x.charAt(4)*5;
resultado = resultado + x.charAt(5)*4;
resultado = resultado + x.charAt(6)*3;
resultado = resultado + x.charAt(7)*2;
resultado = resultado % 10;
resultado = 10 - resultado;
var a=parseInt(x.charAt(9));
if(!(resultado == a))
alert("Posiblemente el numero de DUI este mal, favor revisarlo.");
}

NIT
Código: [Seleccionar]
function nit_ver(numero){
var x=document.getElementById(numero).value;
var resultado = 0;
var part;
var factor=0;
var cal = 0;
var i;
var n;
part=x.substring(12,15);
part=parseInt(part);
if(part<=100){
n=14;
for(i=0;i<=14;i++){
if(!(i===4||i===11)){
cal=cal+parseInt(x.charAt(i))*n;
}
cal=cal%11;
if(y==10)
y=0;
}
}else{
n=1;
for(i=0;i<=14;i++){
if(!(i===4||i===11)){
factor=(3+6*Math.floor(Math.abs((n+4)/6)))-n;
cal=cal+(parseInt(x.charAt(i))*factor);
n++;
}
}
cal=cal%11;
if(cal>1)
cal=11-cal;
else
cal=0;
}
var a=parseInt(x.charAt(16));
if(a!=cal)
alert("El numero de NIT posiblemente este equivocado, favor revisarlo antes de continuar.");
}

Desconectado fre_saga

  • Trade Count: (0)
  • Sv Member
  • ***
  • Thank You
  • -Given: 0
  • -Receive: 17
  • Mensajes: 275
Re:¿Cómo calcular dígito verificador del DUI y NIT?
« Respuesta #39 : septiembre 14, 2013, 10:43:55 am »
buenas señor@s estado queriendo hacer la verificacion del nit y dui en vb.nte y no e podido pasar el codigo a vb la pregunta es si alguien lo paso o sabe como hacerlo en vb, estare muy agradecido si me orientan como hacer lo 

Desconectado mark33sv

  • Trade Count: (0)
  • The newbie
  • *
  • Thank You
  • -Given: 0
  • -Receive: 0
  • Mensajes: 1
Re:¿Cómo calcular dígito verificador del DUI y NIT?
« Respuesta #40 : febrero 10, 2014, 01:41:19 pm »
Saludos a todos alli..

Pära los que tiene experiencia en esto del DUI:

Saben que tipo de pistola laser y que programa usar para la captura de datos por medio del codigo de barras del DUI?
Que sea compatible con los codigos viejos y actuales.
Leyendo he encontrado que usan el formato PDF417
Pero que se sabe no es compatible con caracteres en español copmo la Ñ o las ovcales tildadas.
Me gustaria saber como es solo para captura de datos y ponerlas a un formulario.

Necesito recomendacion: Que pistola laser usar y como es el programa o programa afin.
Saludos.
 :drinks:

Desconectado Neon08

  • Trade Count: (0)
  • Sv Member
  • ***
  • Thank You
  • -Given: 12
  • -Receive: 23
  • Mensajes: 267
  • Perdí mi apuesta por el rock and roll
Re:¿Cómo calcular dígito verificador del DUI y NIT?
« Respuesta #41 : julio 31, 2014, 07:48:08 pm »
Yo se los dejos en Javascript por si a alguien les sirven
NIT
Código: [Seleccionar]
function nit_ver(numero){
var x=document.getElementById(numero).value;
var resultado = 0;
var part;
var factor=0;
var cal = 0;
var i;
var n;
part=x.substring(12,15);
part=parseInt(part);
if(part<=100){
n=14;
for(i=0;i<=14;i++){
if(!(i===4||i===11)){
cal=cal+parseInt(x.charAt(i))*n;
}
cal=cal%11;
if(y==10)
y=0;
}
}else{
n=1;
for(i=0;i<=14;i++){
if(!(i===4||i===11)){
factor=(3+6*Math.floor(Math.abs((n+4)/6)))-n;
cal=cal+(parseInt(x.charAt(i))*factor);
n++;
}
}
cal=cal%11;
if(cal>1)
cal=11-cal;
else
cal=0;
}
var a=parseInt(x.charAt(16));
if(a!=cal)
alert("El numero de NIT posiblemente este equivocado, favor revisarlo antes de continuar.");
}
Perdón por revivir muertos pero corrigiendo la función del NIT del comuno (pues tiene un pequeño errorcillo :D que me estaba dando lata :D ) aqui esta ya con el FIX.

Código: [Seleccionar]
function nit_ver(numero) {
    var Valido = true;
    var x = numero;
    var resultado = 0;
    var part;
    var factor = 0;
    var cal = 0;
    var i;
    var n;
    part = x.substring(12, 15);
    part = parseInt(part);
    if (part <= 100) {
        n = 1;
        for (i = 0; i <= 14; i++) {
            if (!(i === 4 || i === 11)) {
                cal = cal + parseInt(x.charAt(i)) * (15 - n);
                n++;
            }
        }
        cal = cal % 11;
        if (cal == 10)
            cal = 0;
    } else {
        n = 1;
        for (i = 0; i <= 14; i++) {
            if (!(i === 4 || i === 11)) {
                factor = (3 + 6 * Math.floor(Math.abs((n + 4) / 6))) - n;
                cal = cal + (parseInt(x.charAt(i)) * factor);
                n++;
            }
        }
        cal = cal % 11;
        if (cal > 1)
            cal = 11 - cal;
        else
            cal = 0;
    }
    var a = parseInt(x.charAt(16));
    if (a != cal) {
        //alert("El numero de NIT posiblemente este equivocado, favor revisarlo antes de continuar.");
        Valido = false;
    }
    return Valido;
}

Saludos
La gran victoria que hoy parece fácil fue el resultado de pequeñas victorias que pasaron desapercibidas.

Desconectado MauricioG

  • Trade Count: (0)
  • The newbie
  • *
  • Thank You
  • -Given: 0
  • -Receive: 0
  • Mensajes: 11
¿Cómo calcular dígito verificador del NRC y NIT?
« Respuesta #42 : septiembre 18, 2014, 11:49:22 am »
Para el amigo hkadejo, si pudieras enviarme la rutina del nit y si la tienes la del nrc, yo trabaje en Hacienda y tengo ambas rutinas, pero el disco donde estan no lo puedo accesar, muchas gracias

Desconectado hkadejo

  • Global Moderator
  • Trade Count: (0)
  • The Communiter-
  • *
  • Thank You
  • -Given: 277
  • -Receive: 929
  • Mensajes: 3345
    • AndroidJutsu
Re:¿Cómo calcular dígito verificador del NRC y NIT?
« Respuesta #43 : septiembre 18, 2014, 03:25:55 pm »
Para el amigo hkadejo, si pudieras enviarme la rutina del nit y si la tienes la del nrc, yo trabaje en Hacienda y tengo ambas rutinas, pero el disco donde estan no lo puedo accesar, muchas gracias

Leete este tema, aqui estan las rutinas que necesitas.
Ayudo a no programadores y programadores novatos con tutoriales, código y consejos a convertirse en desarrolladores Android profesionales y crear apps geniales.

DESCARGA MI GUÍA -> https://androidjutsu.com/guia-crea-tu-primera-aplicacion-android/

Desconectado ELITE

  • Trade Count: (0)
  • The Communiter-
  • *
  • Thank You
  • -Given: 0
  • -Receive: 164
  • Mensajes: 5998
  • NEMO ME IMPUNE LACESSIT
Re:¿Cómo calcular dígito verificador del DUI y NIT?
« Respuesta #44 : septiembre 19, 2014, 08:34:54 am »
Buenas, aquí les dejo el los algoritmos en PHP.

=============
Actualización: 05 - Junio - 2013:
Corrijo un error en el proceso de validación del NIT.

Código: [Seleccionar]
function validar_dui($dui){
   
       if(preg_match('/(^\d{9})/',$dui)){
            $verificador = (int) substr($dui,8,1);
           
            $suma = 0;
            for($i = 9; $i > 1; $i--){
                $suma += ((int) substr($dui,(9-$i),1)) * $i;
            }
            if(($mod = ($suma%10)) == 0){
                $mod = 10;
            }
            $valida = 10 - $mod;
           
            if($valida == $verificador) return true;
       }
       return false;
}

Código: [Seleccionar]
public function validar_nit($nit){
if(preg_match('/(^\d{14})/',$nit)){
$verificador = (int) substr($nit,13,1);
$valida = false;
$suma = 0;
if(( (int)substr($nit,10,3) ) <= 100){
for($i = 1; $i <= 13; $i++){
$suma += ( (int) substr($nit,( $i - 1 ),1) ) * ( 15 - $i );
}
$valida = ($suma%11);

if($valida == 10){
$valida = 0;
}
}else{
for($i = 1; $i <= 13; $i++){
$factor = (3 + (6 * floor(abs(( $i + 4 ) / 6)))) - $i;
$suma += ( (int) substr($nit,( $i - 1 ),1) ) * $factor;
}
$mod = ($suma%11);
if($mod > 1){
$valida = 11 - $mod;
}else{
$valida = 0;
}
}
if($valida == $verificador) return true;
   }
   return false;
}


Pues este no me funciono creo que alguna de las funciones ya no son compatibles con php 5  :dumb:

Desconectado SiKa

  • -^- Elite Silver -^-
  • Trade Count: (2)
  • The Communiter-
  • *
  • Thank You
  • -Given: 11
  • -Receive: 22
  • Mensajes: 2540
  • .
Re:¿Cómo calcular dígito verificador del DUI y NIT?
« Respuesta #45 : septiembre 19, 2014, 08:40:41 am »
amigos.. colgandome del tema.. alguien me puede ayudar con algo parecido.. pero para verificar los numero de registro de IVA??

http://www.svcommunity.org/forum/chat-general/codigo-verificador-de-numero-de-iva-%28cualquier-lenguaje%29/

Desconectado light1456

  • Trade Count: (0)
  • MiembrosReales
  • *
  • Thank You
  • -Given: 0
  • -Receive: 0
  • Mensajes: 38
Re:¿Cómo calcular dígito verificador del DUI y NIT?
« Respuesta #46 : septiembre 24, 2014, 12:07:06 pm »
Gracias MauricioG, entonces solo para confirmar los checkdigit de NRC y DUI, tienen el mismo algoritmo?

un saludo :thumbsup:


Desconectado MauricioG

  • Trade Count: (0)
  • The newbie
  • *
  • Thank You
  • -Given: 0
  • -Receive: 0
  • Mensajes: 11
Re:¿Cómo calcular dígito verificador del DUI y NIT?
« Respuesta #47 : octubre 30, 2014, 11:29:31 am »
 :yahoo: :sur: Aca esta la rutina del NIT, desarrollada en VFP
*--- Funcion Validar NIT  Rutina comprobada para viejos y nuevos MAG 30/10/2014
*--- Funcion NIT  Proposito Validar si el NIT es valido
LOCAL vnit, vsum, vdig, vfac
vnit = '11070806771015'
STORE 0 TO vsum, vdig, vfac
* Valida la longitud del NIT
IF LEN(vnit) # 14
   MESSAGEBOX('Longitud de NIT erronea',0,'Valida NIT')
   RETURN
ENDIF
* Valida que todos sean numeros
FOR I = 1 TO 14
   IF !ISDIGIT(SUBST(vnit,i,1))
      MESSAGEBOX('NIT erroneo contiene alfabeticos',0,'Valida NIT')
      RETURN
   ENDIF
ENDFOR
*--- Valida si es NIT viejo(<= 100) o nuevo (>= 100)
IF INT(VAL(SUBS(vnit,11,3))) <= 100   && Rutina Vieja
   FOR I = 1 TO 13
      vsum = vsum + (INT(VAL(SUBS(vnit,i,1))) * (15 - i))
   ENDFOR
   vdig = MOD(vsum,11)
   IF vdig = 10
      vdig = 0
   ENDIF
ELSE         && Rutina Nueva
   FOR I = 1 TO 13
      vfac = (3 + (6 * FLOOR(ABS(I + 4) / 6))) - I
      vsum = vsum + (INT(VAL(SUBS(vnit,i,1))) * vfac)
   ENDFOR
   vdig = MOD(vsum,11)
   IF vdig > 1
      vdig = 11 - vdig
   ELSE
      vdig = 0
   ENDIF
ENDIF
RETURN

Desconectado Raizor

  • Trade Count: (0)
  • The Communiter-
  • *
  • Thank You
  • -Given: 36
  • -Receive: 10
  • Mensajes: 2016
Re:¿Cómo calcular dígito verificador del DUI y NIT?
« Respuesta #48 : febrero 13, 2021, 10:10:30 am »
Señores primero disculpas por revivir algo tan antigüo.

Segundo, podría alguien ser tan amable de explicar el proceso para validar el NIT?

ya copie las formulas en excel que dejo cedlink, y lo adapte a mi conveniencia pero no entiendo para nada que es lo que dicho proceso hace.

En cambio con lo del DUI si me quedó todo claro gracias a la explicación que dió Camus.

Gracias.

Desconectado Cvizkrra

  • Trade Count: (0)
  • The newbie
  • *
  • Thank You
  • -Given: 0
  • -Receive: 0
  • Mensajes: 2
Re:¿Cómo calcular dígito verificador del DUI y NIT?
« Respuesta #49 : noviembre 25, 2021, 01:03:56 pm »
Hola, tengo unas consultas y es que estoy haciendo la parte de validadores de NIT, DUI y Pasaporte, para NIT y DUI tengo los dígitos validadores y ya funciona todo bien, pero para el pasaporte no he encontrado nada sobre digito validador, de momento solo tengo que me valide el formato, que hasta donde se es 1 letra seguida de 8 números, mis consultas serian si la letra del inicio puede ser de la A a la Z o solo un rango especifico y si existe digito validador para este y procedimiento matemático para comprobarlo.
De momento uso el siguiente regex : "^[A-Z]{1}[0-9]{8}$"

Desconectado Cvizkrra

  • Trade Count: (0)
  • The newbie
  • *
  • Thank You
  • -Given: 0
  • -Receive: 0
  • Mensajes: 2
Re:¿Cómo calcular dígito verificador del DUI y NIT?
« Respuesta #50 : noviembre 25, 2021, 01:10:28 pm »
Hola, tengo unas consultas y es que estoy haciendo la parte de validadores de NIT, DUI y Pasaporte, para NIT y DUI tengo los dígitos validadores y ya funciona todo bien, pero para el pasaporte no he encontrado nada sobre digito validador, de momento solo tengo que me valide el formato, que hasta donde se es 1 letra seguida de 8 números, mis consultas serian si la letra del inicio puede ser de la A a la Z o solo un rango especifico y si existe digito validador para este y procedimiento matemático para comprobarlo.
De momento uso el siguiente regex : "^[A-Z]{1}[0-9]{8}$"

Desconectado MauricioG

  • Trade Count: (0)
  • The newbie
  • *
  • Thank You
  • -Given: 0
  • -Receive: 0
  • Mensajes: 11
Re:¿Cómo calcular dígito verificador del DUI y NIT?
« Respuesta #51 : diciembre 22, 2021, 09:53:18 am »
Aca la rutina del DUI (que tambien se usaria para el NCR) en VFP:
*--- validar_dui
*PARAMETERS vdui
vdui= '005096917'
LOCAL vsum, vdig, vfac
*
STORE 0 TO vsum, vdig, vfac
* Valida la longitud del NIT
IF LEN(vdui) # 9
   MESSAGEBOX('Longitud de DUI erronea',0,'Valida DUI')
   verr = .T.
   RETURN
ENDIF
* Valida que todos sean numeros
FOR I = 1 TO 9
   IF !ISDIGIT(SUBST(vdui,i,1))
      MESSAGEBOX('DUI erroneo contiene alfabeticos',0,'Valida DUI')
      verr = .T.
      RETURN
   ENDIF
ENDFOR
*
FOR I = 1 TO 8
   vsum = vsum + (INT(VAL(SUBSTR(vdui,i,1))) * (9 - i))
ENDFOR
*
vdig = MOD(vsum,10)
vdig = 10 - vdig
IF vdig = 10
   vdig = 0
ENDIF
*
IF STR(vdig,1) # SUBSTR(vdui,9,1)
   MESSAGEBOX('Digito Verificador Erroneo',0,'Verificacion de DUI')
   xerr = .T.
ELSE
   xerr = .F.
ENDIF