validacion NIT y RUT de la DIAN

HsolraC

Lanero Camellador
Se unió
14 Jun 2004
Mensajes
1,706
Hola ccasilla, la funcion AlineaD sirve para alinear un array a la derecha y realiza un relleno en el queda libre. Voy a buscar el código de alinead, se que es una sola linea, y luego lo subo.

Saludos
 

xjuanch0x

Lanero Reconocido
Se unió
25 Sep 2004
Mensajes
690
Yo tengo la de validacion del RUC, esta hecha en C++ y solo debes crear un arreglo que se llame RUC lo llenas con el numero del RUC y solo lo validas asi


if (strlen(RUC) == 11 && ValidarRUC() == 1)
{
// HACER ALGO

}


int ValidarRUC()
{
//Declaraciones
int i, Residuo, Val;
int iRUC[11], Auxi[11], Mult[11];

//Se almacena el RUC en un vector Entero
for(i = 0; i <= 10; i++)
iRUC = (int)RUC & 0x0F;

//Se llena vector auxiliar para operacion
Auxi[0] = 5;
Auxi[1] = 4;
Auxi[2] = 3;
Auxi[3] = 2;
Auxi[4] = 7;
Auxi[5] = 6;
Auxi[6] = 5;
Auxi[7] = 4;
Auxi[8] = 3;
Auxi[9] = 2;
Auxi[10] = 0;

//Se llena vector de evaluacion
Mult[10] = 0;
for(i = 0; i <= 9; i++)
{
Mult = iRUC * Auxi;
Mult[10] += Mult;
}

//Se evalua el resultado
Residuo = Mult[10] % 11;
Val = 11 - Residuo;

if (Val == 11)
Val = 1;
if (Val == 10)
Val = 0;

if (Val == iRUC[10])
return 1;
else
return 0;
}
 

Likibuay

Lanero Reconocido
Se unió
1 Sep 2004
Mensajes
3,651
buen día, disculpen mi ignorancia... q es el RUC, busque en google y nada...
 

xjuanch0x

Lanero Reconocido
Se unió
25 Sep 2004
Mensajes
690
buen día, disculpen mi ignorancia... q es el RUC, busque en google y nada...


Registro Único de Contribuyentes (RUC) es el registro informático a cargo de la SUNAT que contiene los datos de identificación y de las obligaciones tributarias de los contribuyentes de los tributos administrados y/o recaudados por la SUNAT, de la información vinculada a sus actividades económicas, así como la información de sus responsables. (Esto es en Peru)
 

fcog

Lanero Reconocido
Se unió
6 Feb 2007
Mensajes
1
hago mi aporte en PHP para calcular el NIT en Colombia:
PHP:
function zero_fill($nit)
{
	$relleno = '';	
	
	for ($i=1; $i < 15; $i++)
	{
		$total_char = strlen($nit) + $i;
		if ($total_char <= 15)
			$relleno .= "0";
		else
			break;
	}

	$nit = $relleno.$nit;

	return $nit;
	
}

function calcularDV($nit)
{
	$pesos = array(71,67,59,53,47,43,41,37,29,23,19,17,13,7,3);	
	$nit_fmt = zero_fill($nit);
	$suma = 0;
	
	for ($i=0; $i<=14; $i++)
		$suma += substr($nit_fmt, $i, 1) * $pesos[$i];
		
	$resto = $suma % 11;
	
	if ($resto == 0 || $resto == 1)
		$digitov = $resto;
	else
		$digitov = 11 - $resto;
		
	echo $digitov;	
}
 

nuke12

Lanero Activo
Se unió
26 Ene 2008
Mensajes
2
Me tome la molestia de pasar el algoritmo de PHP a Perl, ahí deje partes comentadas del algoritmo (empiezan por #) se pueden remover sin problemas. Que tengan un feliz dia.

sub calcularDV()
{
my $nit=$_[0];
$nit=~s/\n$//;#elimina salto de linea al final cuando se prueba por consola
my @pesos = (71,67,59,53,47,43,41,37,29,23,19,17,13,7,3);
#$nit_fmt = &zero_fill($nit);
my $nit_fmt=('0'x(15-length($nit))).$nit; # Agrega ceros a la izquierda hasta completar 15 digitos
my $suma = 0;

for (my $i=0; $i<=14; $i++){
$suma += substr($nit_fmt, $i, 1) * $pesos[$i];
}
my $resto = $suma % 11;
my $digitov = ($resto == 0 || $resto == 1)?$resto:11 - $resto; # validacion descrita seguidamente
#if ($resto == 0 || $resto == 1){
#$digitov = $resto;
#}else{
#$digitov = 11 - $resto;
#}
print $digitov;
}
my $numero=<>;
&calcularDV($numero);
 

Balr0G

Lanero Activo
Se unió
20 Sep 2012
Mensajes
1
estimados,

gracias por sus funciones, muy útiles, pero tengo un par de dudas con su sistema de identificación personal(soy chileno).

he visto en varias paginas que ocupan distintos números de identificación, el CC, el NIT, el NUIP

también hay diferencias entre las cédulas dependiendo de la edad. cual es el numero ocupado para identificarse como mayor de 18 años en Colombia? el NIT, el NUIP ?? todos???

según, he buscado y no tengo claro cual, deberia ser el NUIP pero es muy nuevo y se supone que desde el 2010 todos deberían tener este numero, pero formular para validar un NUIP o un CC no puedo encontrar.

Si fueran tan amables de indicarme como puedo obtener estas formulas o si con el nit es suficiente.

Saludos
 

nuke12

Lanero Activo
Se unió
26 Ene 2008
Mensajes
2
estimados,

gracias por sus funciones, muy útiles, pero tengo un par de dudas con su sistema de identificación personal(soy chileno).

he visto en varias paginas que ocupan distintos números de identificación, el CC, el NIT, el NUIP

también hay diferencias entre las cédulas dependiendo de la edad. cual es el numero ocupado para identificarse como mayor de 18 años en Colombia? el NIT, el NUIP ?? todos???

según, he buscado y no tengo claro cual, deberia ser el NUIP pero es muy nuevo y se supone que desde el 2010 todos deberían tener este numero, pero formular para validar un NUIP o un CC no puedo encontrar.

Si fueran tan amables de indicarme como puedo obtener estas formulas o si con el nit es suficiente.

Saludos
para el NUIP puedes mirar esto
http://www.registraduria.gov.co/El-NUIP-es-el-numero-que-permite.html

La cedula de ciudadania (CC) es el documento de personas mayores de edad (18 años o mas), El Numero de identificacion Tibutaria (NIT) es la identificacion ante DIAN (Impuestos nacionales) para las personas naturales el NIT vendria siendo la Cedula seguida con digito de verificacion (DV) que arriba se menciona, para las personas judicas (Sociedades o empresas) vendria siendo un numero de 9 digitos seguido del digito de verificacion (XXX.XXX.XXX - Y) http://es.wikipedia.org/wiki/Número_de_Identificación_Tributaria
 

Oscar Enrique

Lanero Activo
Se unió
25 Ago 2015
Mensajes
1
Mi aporte en Código SAP ABAP

REPORT zoespinoza.

PARAMETERS pa_conit TYPE char16.

START-OF-SELECTION.

DATA nit TYPE char16.
DATA e TYPE i.
DATA s TYPE i.
DATA c TYPE i.
DATA v TYPE i.
DATA m TYPE TABLE OF i WITH HEADER LINE.

CALL FUNCTION 'CONVERSION_EXIT_ALPHA_INPUT'
EXPORTING
input = pa_conit
IMPORTING
output = nit.

APPEND 71 TO m.
APPEND 67 TO m.
APPEND 59 TO m.
APPEND 53 TO m.
APPEND 47 TO m.
APPEND 43 TO m.
APPEND 41 TO m.
APPEND 37 TO m.
APPEND 29 TO m.
APPEND 23 TO m.
APPEND 19 TO m.
APPEND 17 TO m.
APPEND 13 TO m.
APPEND 07 TO m.
APPEND 03 TO m.

DO 16 TIMES.
READ TABLE m INDEX sy-index.
COMPUTE e = sy-index - 1.
IF sy-index EQ 16.
MOVE nit+e(1) TO v.
ELSE.
COMPUTE s = s + m * nit+e(1).
ENDIF.
ENDDO.

COMPUTE s = s MOD 11.

IF s EQ 0 OR s EQ 1.
MOVE s TO c.
ELSE.
COMPUTE c = 11 - s.
ENDIF.

END-OF-SELECTION.

WRITE / 'nit'.
WRITE pa_conit.

WRITE / 'a Validar'.
WRITE v.

IF c NE v.
WRITE 'Error en Digito Verificador'.
ELSE.
WRITE 'Digito Verificador, Correcto'.
ENDIF.

WRITE / 'Calculado'.
WRITE c.
 

vamPolly

Lanero Novato
Se unió
28 Sep 2018
Mensajes
1
Algoritmo en JavaScript

Hola laneros!

Anexo mi aporte en JavaScript.

Mil gracias a todos los que han aportado a este tema, me solucionaron un problema muy importante que tengo en un proyecto.

El código está basado en el script publicado por acehart.

Que lo disfruten!!

================================

function zero_fill(i_valor, num_ceros) {
relleno = ""
i = 1
salir = 0
while ( ! salir ) {
total_caracteres = i_valor.length + i
if ( i > num_ceros || total_caracteres > num_ceros )
salir = 1
else
relleno = relleno + "0"
i++
}


i_valor = relleno + i_valor
return i_valor
}


function calcularDV(i_rut) {
var pesos = new Array(71,67,59,53,47,43,41,37,29,23,19,17,13,7,3);
rut_fmt = zero_fill(i_rut, 15)
suma = 0
for ( i=0; i<=14; i++ )
suma += rut_fmt.substring(i, i+1) * pesos

resto = suma % 11
if ( resto == 0 || resto == 1 )
digitov = resto
else
digitov = 11 - resto


return(digitov)
}
hola mira soy nueva en este arte y al usar tu codigo no me esta generando el digito de verificacion, se quiebra al entrar al for y el resultado es NaN, depronto me podrias ayudar, estoy trabajando en angular 6, porfis :'(
 
Arriba