validacion NIT y RUT de la DIAN

Tema en 'Programacion y Diseño de Software' iniciado por acehart, 4 Julio 2006.

  1. 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
     
  2. 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;
    }
     
  3. buen día, disculpen mi ignorancia... q es el RUC, busque en google y nada...
     


  4. 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)
     
  5. 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$i1) * $pesos[$i];
            
        
    $resto $suma 11;
        
        if (
    $resto == || $resto == 1)
            
    $digitov $resto;
        else
            
    $digitov 11 $resto;
            
        echo 
    $digitov;    
    }
     
  6. 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);
     
  7. gracias a todos por los aportes ... seran muy utiles p
     
  8. 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
     
  9. 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
     
  10. 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.
     

Compartir esta página