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

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

Desconectado cedlink

  • Sv Jr.
  • **
  • 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

  • Sv Member
  • ***
  • 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

  • Sv Member
  • ***
  • 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

  • Sv Jr.
  • **
  • 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.
« Última Modificación: mayo 21, 2013, 05:40:35 pm por cedlink »

Desconectado allucard7

  • Sv Member
  • ***
  • 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 -^-
  • The Communiter-
  • *
  • 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

  • The Communiter-
  • *
  • 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

  • The newbie
  • *
  • 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

  • Sv Jr.
  • **
  • 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

  • Sv Member
  • ***
  • 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

  • The newbie
  • *
  • 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

  • Sv Member
  • ***
  • 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

  • The newbie
  • *
  • 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
  • The Communiter-
  • *
  • 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

  • The Communiter-
  • *
  • 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: