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

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

Desconectado SiKa

  • -^- Elite Silver -^-
  • The Communiter-
  • *
  • Mensajes: 2548
  • .
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

  • MiembrosReales
  • *
  • 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

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

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

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

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

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

Desconectado ANGELITO665

  • Sv Member
  • ***
  • Mensajes: 489
Re:¿Cómo calcular dígito verificador del DUI y NIT?
« Respuesta #52 : mayo 28, 2024, 09:35:28 am »
Hola. alquien logro la formulA NCR 

6 DIGITOS NRC   47424
Cadena Texto   0047424
DV   10
   
NRC   4742410
DESCOMPONER   MULTIPLICAR   PRODUCTO      
4   2   8      
2   3   6      
4   4   16      
7   5   35      
4   6   24      
0   7   0      
0   8   0      
      0      
      89      11
            
   RESIDUO   1      
            
   DV   10      


Desconectado ELITE

  • The Communiter-
  • *
  • Mensajes: 6227
  • NEMO ME IMPUNE LACESSIT
Re:¿Cómo calcular dígito verificador del DUI y NIT?
« Respuesta #53 : octubre 09, 2024, 07:44:21 am »
SiKa acá te dejo mi snippet  :drinks:

Código: (php) [Seleccionar]
<?php
function isDUI($dui) {

if ((bool)preg_match("/(^\d{8})-(\d$)/"$dui) === true) {
        [
$digits$verificator] = explode("-"$dui);
        
$sum 0;

        for (
$i 0$l strlen($digits); $i $l$i++) {
            
$sum += ($i) * (int)$digits[$i];
        }

        return (bool)((int)
$verificator === (int) (10 - ($sum 10)) % 10);
    }

return false;
}

echo 
"<br>".var_dump(isDUI("12345678-1"));    // false
echo "<br>".var_dump(isDUI("123456789-1"));   // false
echo "<br>".var_dump(isDUI("12345678-12"));   // false

Probado con muchos DUIs y aun funciona perfecto  :yahoo: :hi:

Desconectado SiKa

  • -^- Elite Silver -^-
  • The Communiter-
  • *
  • Mensajes: 2548
  • .
Re:¿Cómo calcular dígito verificador del DUI y NIT?
« Respuesta #54 : octubre 14, 2024, 02:00:48 pm »
SiKa acá te dejo mi snippet  :drinks:

Código: (php) [Seleccionar]
<?php
function isDUI($dui) {

if ((bool)preg_match("/(^\d{8})-(\d$)/"$dui) === true) {
        [
$digits$verificator] = explode("-"$dui);
        
$sum 0;

        for (
$i 0$l strlen($digits); $i $l$i++) {
            
$sum += ($i) * (int)$digits[$i];
        }

        return (bool)((int)
$verificator === (int) (10 - ($sum 10)) % 10);
    }

return false;
}

echo 
"<br>".var_dump(isDUI("12345678-1"));    // false
echo "<br>".var_dump(isDUI("123456789-1"));   // false
echo "<br>".var_dump(isDUI("12345678-12"));   // false

Probado con muchos DUIs y aun funciona perfecto  :yahoo: :hi:

eres grande bro!  muchas gracias!!!

Desconectado ELITE

  • The Communiter-
  • *
  • Mensajes: 6227
  • NEMO ME IMPUNE LACESSIT
Re:¿Cómo calcular dígito verificador del DUI y NIT?
« Respuesta #55 : octubre 30, 2024, 08:38:17 am »
eres grande bro!  muchas gracias!!!

Con gusto :hi: