Algoritmia - Calcular Digito de Verificacion

 
Vista:

Calcular Digito de Verificacion

Publicado por Paul Martinez (1 intervención) el 02/06/2006 22:59:49
Alguien tiene la formula para devolver o calcular el digito de verificacion a partir de un nit o numero de cedula? Gracias de antemano por la ayuda
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:Calcular Digito de Verificacion

Publicado por Juan (28 intervenciones) el 05/06/2006 13:32:32
Y que se supone que es el numero de verificacion? Como se calcula o se genera?
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Calcular Digito de Verificacion

Publicado por Andres Sinclair (1 intervención) el 21/06/2006 22:49:04
El dígito de Verificación se puede calcular con un archivo que encontré en la página de actualicese.com

http://www.actualicese.com/herramientas/

Lastima no poder ayudar si lo que te interesa es la fórmula para calcular tu mismo el dígito de verifiación, pues esta hoja de cálculo solo te permite ingresar el NIT o la cédula y automáticamente te dá el Dígito de Verificación, no te deja ver la fórmula utilizada... de todas maneras espero que te sirva...

El archivo está en el primer link:
"Programa para el cálculo del dígito de verificación de cédulas y nits."
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Calcular Digito de Verificacion

Publicado por german (1 intervención) el 03/07/2006 04:11:36
gracias me gustaria provar ya que me es muy necesario esta tarea y me ahorrarias tiempo
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Calcular Digito de Verificacion

Publicado por Angela (1 intervención) el 06/03/2008 22:14:13
hola , tu me podrias ayudar enviandome el archivo en excel donde pueda calcular el digito de chequeo...gracias


Angela
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Calcular Digito de Verificacion

Publicado por sonnia (1 intervención) el 23/03/2008 02:46:10
hola , tu me podrias ayudar enviandome el archivo en excel donde pueda calcular el digito de chequeo...gracias
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Calcular Digito de Verificacion

Publicado por ALVARO QUIROZ  (1 intervención) el 28/03/2009 22:37:09
Buenas tardes.

te agradeceria que por favor me envies el verificador o calculadro de digito de verificacòn me seria de gran ayuda.

Alvaro
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Calcular Digito de Verificacion

Publicado por REINEL (1 intervención) el 15/03/2010 22:43:29
gracias
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Calcular Digito de Verificacion

Publicado por WILSON ANGULO  (2 intervenciones) el 05/12/2008 05:38:19
ejemplo

las siguientes cedulas generan los siguientes valores, pero no puedo conseguir la formula para calcular yomismo

16214730 = 0
38795526 = 4
4519830 = 2
90042965199 = 9
31430187 = 5



lo que me interesa es la fórmula para calcular yo mismo el dígito de verifiación, que me permita ingresar el NIT o la cédula y automáticamente me dá el Dígito de Verificación,
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Calcular Digito de Verificacion

Publicado por WILSON ANGULO  (2 intervenciones) el 05/12/2008 05:37:14
ejemplo

las siguientes cedulas generan los siguientes valores, pero no puedo conseguir la formula para calcular yomismo

16214730 = 0
38795526 = 4
4519830 = 2
90042965199 = 9
31430187 = 5



lo que me interesa es la fórmula para calcular yo mismo el dígito de verifiación, que me permita ingresar el NIT o la cédula y automáticamente me dá el Dígito de Verificación,
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Calcular Digito de Verificacion

Publicado por Mar (1 intervención) el 23/03/2009 11:33:37
Formula para calcular digito de verificacion, formula que se pueda modificar.Las qeu encuentro solo hacen la operacion pero necesito saber como se calcula
Gracias
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Calcular Digito de Verificacion

Publicado por Edgar Sanchez (1 intervención) el 20/03/2010 12:19:33
Deseo saber como calcular el digito de verificacion
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Calcular Digito de Verificacion

Publicado por maria  (1 intervención) el 17/04/2010 22:29:30
NO SE COMO FUNCIONA PERO SI ESTO ES PARA ENVIARME EL PROGRAMITA PARA CALCULAR EL DV SE LE AGRADEZCO MUCHO.

AT MARIA
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Calcular Digito de Verificacion

Publicado por GLADYS COL (1 intervención) el 18/04/2008 01:06:19
necesito la formula para digitos de verificacion de nit
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Calcular Digito de Verificacion

Publicado por luis alberto (1 intervención) el 30/05/2008 20:58:41
buenas tardes, me puedes colaborar con la formula para hallar el digito de verificacion.


Gracias

LUIS ALBERTO
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Calcular Digito de Verificacion

Publicado por Juliana (1 intervención) el 10/06/2008 19:10:41
Vale que me envias la formula para calcular el dígito de chequeo, gracias
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Calcular Digito de Verificacion

Publicado por Adolfo MIranda (1 intervención) el 04/09/2008 04:36:06
Por favor
Me podrias enviar la formula para calcular el check digit en contenedores.
Gracias
Adolfo
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Calcular Digito de Verificacion

Publicado por LUISA (1 intervención) el 03/10/2008 17:56:02
digito de verificacion
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Calcular Digito de Verificacion

Publicado por gabriel gomez (1 intervención) el 05/06/2009 15:42:12
esta es la funcion para calcular el digito de verificacion. el primero es para .NET, el segundo es par PL/SQL. Los dos hacen lomismo

.NET

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
public string ValidarDigitoVerificacion(string unNit)
  {
   string miTemp;
   int miContador;
   int miResiduo;
   int miChequeo;
   int[] miArregloPA = new int[15];
   miArregloPA[0] = 3;
   miArregloPA[1] = 7;
   miArregloPA[2] = 13;
   miArregloPA[3] = 17;
   miArregloPA[4] = 19;
   miArregloPA[5] = 23;
   miArregloPA[6] = 29;
   miArregloPA[7] = 37;
   miArregloPA[8] = 41;
   miArregloPA[9] = 43;
   miArregloPA[10] = 47;
   miArregloPA[11] = 53;
   miArregloPA[12] = 59;
   miArregloPA[13] = 67;
   miArregloPA[14] = 71;
   miChequeo = 0;
   miResiduo = 0;
   for(miContador = 0; miContador<unNit.Length;miContador++)
   {
    miTemp = unNit[(unNit.Length-1) - miContador].ToString();
    miChequeo = miChequeo + (Convert.ToInt32(miTemp) * miArregloPA[miContador]);
   }
   miResiduo = miChequeo % 11;
   if(miResiduo > 1)
    return Convert.ToString(11 - miResiduo);
   return miResiduo.ToString();
  }

///////////////////////////////////////////////////////////////////////////////////

PL/SQL

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
CREATE OR REPLACE FUNCTION ValidarDigitoChequeoNIT(chrNIT VARCHAR2) RETURN VARCHAR2 IS
BEGIN
  DECLARE
    intContador  NUMBER;
    intACUM  NUMBER;
    intRESTO  NUMBER;
    intLongIden NUMBER; --Longitud de la cadena identificación}
 
    -- Arreglo
    TYPE arregloPA IS TABLE OF NUMBER(2)
    INDEX BY BINARY_INTEGER;
 
    -- Variable de tipo arreglo
    arrPA  arregloPA;
    arrDA  arregloPA;
  BEGIN
    -- Válida el dígito de chequeo
    SELECT Length(chrNIT) + 1
    INTO   intLongIden
    FROM   DUAL;
 
    -- Llenar el arreglo PA, estos son números primos, según loe stablece el algoritmo
    arrPA(1) := 3;
    arrPA(2) := 7;
    arrPA(3) := 13;
    arrPA(4) := 17;
    arrPA(5) := 19;
    arrPA(6) := 23;
    arrPA(7) := 29;
    arrPA(8) := 37;
    arrPA(9) := 41;
    arrPA(10) := 43;
    arrPA(11) := 47;
    arrPA(12) := 53;
    arrPA(13) := 59;
    arrPA(14) := 67;
    arrPA(15) := 71;
    intContador := 1;
    -- Llena el arreglo DA con la cadena de entrada que es el NIT
    FOR intContador IN 1..intLongIden - 1 LOOP
      arrDA(intContador) := TO_NUMBER(substr(chrNIT,intLongIden- intContador, 1));
    END LOOP;
    -- Llena con ceroas el resto de posiciones del arreglo
    FOR intContador IN intLongIden..15 LOOP
      arrDA(intContador) := 0;
    END LOOP;
    intACUM := 0;
    FOR intContador IN 1..15 LOOP
      intACUM := intACUM +  (arrDA(intContador) * arrPA(intContador));
    END LOOP;
    -- Obtiene el modulo 11 del acumulado
    intRESTO := MOD(intACUM,11);
    IF (intRESTO > 1) THEN
   return TO_CHAR(11 - intRESTO);
    ELSE
      return TO_CHAR(intRESTO);
    END IF;
  END;
END F_ValidarDigitoChequeoNIT;

//////////////////////////////////////////////////////////////////////////

Espero les sirva
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Calcular Digito de Verificacion

Publicado por Francisco (1 intervención) el 24/07/2009 10:27:58
Gabriel Gomez,

Por favor me ayuda en algo. Solo quiero saber como se hace -sin aplicar ninguna funcion- para encontrar el digito de verificacion. Por ejemplo, en alguna parte lei que se multiplica cada digito del NIT (empezando al reves) con algunos numeros primos, se hace una sumatoria de esos resultados y se divide entre 11. Eso fue lo que entendi pero me falta algo porque cuando realizo pruebas, estas no concuerdan. Gracias de antemano.

Atte.,

Francisco
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Calcular Digito de Verificacion

Publicado por Zulay (1 intervención) el 22/08/2009 17:47:52
Ejemplo 800153993

0 + 3 * 3 = 9
9 + 9 * 7 = 72
72 + 9 * 13 = 189
189 + 3 * 17 = 240
240 + 5 * 19 = 335
335 + 1 * 23 = 358
358 + 0 * 29 = 358
358 + 0 * 37 = 358
358 + 8 * 41 = 686

686 MOD 11 = 4 Le sacas el modulo de 11 a 686
4 es mayor a 1 entonces
11 - 4 = 7 Este es el dígito de verificación
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Calcular Digito de Verificacion

Publicado por Alejandro Pulido (2 intervenciones) el 28/07/2011 22:50:24
Para calcular el digito de verificacion lo que tienes que hacer es lo siguiente:

tomas un nit ejemplo: 800191045, tienes que multiplicar cada numero por la siguiente secuencia y lo vas sumando.

secuencia: 71;67;59;53;47;43;41;37;29;23;19;17;13;7;3 - como ves hay 15 numeros y el nit solo tiene 9 asi que tomamos los ultimos 9 numeros de la secuencia ".

empezamos:

8*41 = 328
0*37 = 0
0*29 = 0
1*23 = 23
9*19 = 171
1*17 = 17
0*13 = 0
4*7 = 28
5*3 = 15

sumamos: 328+0+0+23+171+17+0+28+15= 582

dividimos por 11: 582\11=52.90.., tomamos la parte entera es decir 52

multiplicamos 52 *11 = 572

restamos el primer resultamo - el ultimo resultado 582-572 = 10

a 11 le restamos el resultado: 11-10= 1

y hay tienes tu digito de verificación que es 1.........


recuerda la secuencia es 71;67;59;53;47;43;41;37;29;23;19;17;13;7;3 y la costante de operaciones es 11.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Calcular Digito de Verificacion

Publicado por Jeison F. (1 intervención) el 31/03/2019 06:46:40
Bueno, gracias a las indicaciones de Alejandro Pulido, pude calcular el dígito de verificación en la propia base de datos de Firebird, según mis necesidades. ¡Muchas gracias Alejandro!

He aquí el código SQL:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
--Variables
lng = char_length(trim(nit));
sqc = substring('716759534743413729231917130703' from (31 - (:lng * 2)));
idx = 1;
dvr = 0;
--Calculo sobre secuencia
while (:idx <= :lng) do
begin
    --Sumo y multiplico
    dvr = :dvr + (cast(substring(:sqc from 1 for 2) as integer) * cast(substring(nit from :idx for 1) as integer));
    --Recorto secuencia y aumento indice
    sqc = substring(:sqc from 3);
    idx = :idx + 1;
end
--Obtengo digito de verificacion
dvr = 11 - (:dvr - (trunc(:dvr / 11) * 11));

Como notan, no incluí el origen de las variables y el nit; no lo ví necesario. Cada quien sabrá como poner sus valores en esas variables. Además, no me compliqué creado tablas temporales ni nada por el estilo. Solo trabajé sobre una cadena. Espero les sea útil a otros.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Calcular Digito de Verificacion

Publicado por jcserna (1 intervención) el 31/10/2020 07:27:10
Basado en la tuya genere el equivalente para una función en SQL Server


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
CREATE  FUNCTION [dbo].[ObtenerDigitoVerificadorColombia]
(
	@Nit NVARCHAR(20)
 )
 RETURNS VARCHAR(1)
 
 AS
 BEGIN
 DECLARE @dv INT
 DECLARE @Lenght INT
 DECLARE @SEQ NVARCHAR(30)
 DECLARE @Contador INT
 DECLARE @Multiplo INT
 DECLARE @Acumulador INT
 --Variables
set @Lenght = Len(LTRIM (RTRIM ((@Nit))))
set @SEQ = substring('716759534743413729231917130703', (31 - (@Lenght * 2)),31)
set @Contador = 1
set @dv = 0
--Calculo sobre secuencia
while (@Contador <= @Lenght)
begin
    --Sumo y multiplico
    set @dv = @dv + (cast(substring(@SEQ,1,2) as INT)) * (cast(substring(@Nit, @Contador, 1) as INT))
    --Recorto secuencia y aumento indice
    set @SEQ = substring(@SEQ,3,31)
    set @Contador = @Contador + 1
end
--Obtengo digito de verificacion
set @dv = 11 - (@dv - (floor(@dv / 11) * 11))
 
RETURN @dv
 
END
 
GO
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Calcular Digito de Verificacion

Publicado por Harold (1 intervención) el 27/04/2015 04:07:38
Muchas gracias,

la funcion para PL SQL sirve a la perfeccion.

Muchas gracias
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Calcular Digito de Verificacion

Publicado por Alejandro Pulido (2 intervenciones) el 28/07/2011 22:51:56
Para calcular el digito de verificacion lo que tienes que hacer es lo siguiente:

tomas un nit ejemplo: 800191045, tienes que multiplicar cada numero por la siguiente secuencia y lo vas sumando.

secuencia: 71;67;59;53;47;43;41;37;29;23;19;17;13;7;3 - como ves hay 15 numeros y el nit solo tiene 9 asi que tomamos los ultimos 9 numeros de la secuencia ".

empezamos:

8*41 = 328
0*37 = 0
0*29 = 0
1*23 = 23
9*19 = 171
1*17 = 17
0*13 = 0
4*7 = 28
5*3 = 15

sumamos: 328+0+0+23+171+17+0+28+15= 582

dividimos por 11: 582\11=52.90.., tomamos la parte entera es decir 52

multiplicamos 52 *11 = 572

restamos el primer resultamo - el ultimo resultado 582-572 = 10

a 11 le restamos el resultado: 11-10= 1

y hay tienes tu digito de verificación que es 1.........


recuerda la secuencia es 71;67;59;53;47;43;41;37;29;23;19;17;13;7;3 y la costante de operaciones es 11.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Calcular Digito de Verificacion

Publicado por Bruno (1 intervención) el 19/01/2012 14:00:28
Y si el resultado fuese 1??
Ahí quedaría restar 11 - 1 = 10... y eso no puede ser un dígito...
Qué se hace en ese caso?
Es claro que hay pocas posibilidades, pero el programa da error en ese caso...
Gracias!!!
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Calcular Digito de Verificacion

Publicado por Edinson (1 intervención) el 21/01/2012 00:01:23
De acuerdo a estas lineas:

1
2
3
4
5
6
7
8
9
10
///
-- Obtiene el modulo 11 del acumulado
intRESTO := MOD(intACUM,11);
IF (intRESTO > 1) THEN
return TO_CHAR(11 - intRESTO);
ELSE
return TO_CHAR(intRESTO);
END IF;
 
/////
si el residuo de la sumatoria dividido 11 es es 0 o 1, este sería el dato de verificación.
Ejemplo: el NIT: 808000252
627 / 11 = 57; residuo 0 (cero)

808000252-0
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Calcular Digito de Verificacion

Publicado por Javier (1 intervención) el 06/01/2020 08:01:07
DV NIT JAVA:
Gracias a Gabriel Gomez :D

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
import java.util.Scanner;
 
public class pruebanit {
 
    public static void main(String args[]) {
        Scanner escaner = new Scanner(System.in);
 
        int[] secu = new int[15];
        String miTemp = "";
        String NITs = "";
        int miContador = 0;
        int miResiduo = 0;
        int miChequeo = 0;
 
        secu[0] = 3;
        secu[1] = 7;
        secu[2] = 13;
        secu[3] = 17;
        secu[4] = 19;
        secu[5] = 23;
        secu[6] = 29;
        secu[7] = 37;
        secu[8] = 41;
        secu[9] = 43;
        secu[10] = 47;
        secu[11] = 53;
        secu[12] = 59;
        secu[13] = 67;
        secu[14] = 71;
 
        System.out.println("NIT: ");
        NITs = String.valueOf(escaner.nextInt());
 
        for (miContador = 0; miContador < NITs.length(); miContador++) {
            miTemp = NITs.substring(miContador, (miContador + 1));
            miChequeo = miChequeo + Integer.parseInt(miTemp) * secu[(NITs.length() - 1) - miContador];
        }
        miResiduo = miChequeo % 11;
        if (miResiduo > 1) {
            miResiduo = 11 - miResiduo;
            System.out.println("DV: " + miResiduo);
        }else{
            System.out.println("DV: " + miResiduo);
        }
    }
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil
Val: 4
Ha aumentado su posición en 7 puestos en Algoritmia (en relación al último mes)
Gráfica de Algoritmia

Calcular Digito de Verificacion

Publicado por Amado León (2 intervenciones) el 19/03/2020 20:20:35
Calcular Digito de Verificacion en PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
function dig_verf($doc)
{
    if (is_numeric(trim($doc))) {
        $secuencia = array(3, 7, 13, 17, 19, 23, 29, 37, 41, 43, 47, 53, 59, 67, 71);
        $d         = str_split(trim($doc));
        krsort($d);
        $cont = 0;
        unset($val);
        foreach ($d as $key => $value) {
            $val[$cont] = $value * $secuencia[$cont];
            $cont++;
        }
        $suma  = array_sum($val);
        $div   = intval($suma / 11);
        $num   = $div * 11;
        $resta = $suma - $num;
        if ($resta == 1) {
            return $resta;
        } else {
            return 11 - $resta;
        }
    } else {
        return 'error, debe ser numero';
    }
 
}
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil
Val: 4
Ha aumentado su posición en 7 puestos en Algoritmia (en relación al último mes)
Gráfica de Algoritmia

Calcular Digito de Verificacion

Publicado por Amado (2 intervenciones) el 20/03/2020 00:38:30
1
if ($resta == 1)
en la linea 17 debería ser
1
if ($resta <= 1)
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Calcular Digito de Verificacion

Publicado por Nicolás G. Rico (1 intervención) el 18/12/2020 18:30:54
Les dejo el código para java

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
public static int calculaDigitoVerificacion(String sNit) {
    int result = 0;
    int x = 0;
    int y = 0;
    char[] c = sNit.toCharArray();
    int z = c.length;
    if(sNit != null) {
        if(!sNit.isEmpty()) {
            int arr[] = new int[] {3,7,13,17,19,23,29,37,41,43,47,53,59,67,71};
            int index = z-1;
            for(int i = 0; i < z; i++) {
                y = getInt(String.valueOf(c[i]));
                x += (y * arr[index]);
                index--;
            }
 
            y = x % 11;
            result = ( y > 1 ) ? 11 - y : y ;
        }
    }
    return result;
}
 
public static int getInt(String value) {
    return getInteger(value, 0);
}
 
public static Integer getInteger(String value, int defaultValue) {
    Integer result;
    try {
        result = Integer.valueOf(value);
    } catch(Exception e) {
        result = defaultValue;
    }
    return result;
}
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Calcular Digito de Verificacion

Publicado por Alejandro García Garay (1 intervención) el 27/08/2022 18:50:00
Les dejo esta función en MariaDB/MySQL en donde calculo el digito de verificación para los N.I.T.s y cédulas en la DIAN Colombia.


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
CREATE DEFINER=`lucas`@`%` FUNCTION `Validar_Nit`(`tcNit` varchar(15)) RETURNS int(11)
BEGIN
	#Declaramos e iniciamos las variables.
    DECLARE lcDato, lcChar VARCHAR(15) DEFAULT '';
    DECLARE lnItem, lnSuma, lnRetorno INT DEFAULT 0;
 
	#Valor limpio del parametro pasado
    SET lcDato := RIGHT(CONCAT(SPACE(15), TRIM(tcNit)), 15);
 
	#Ciclo para calculos
    REPEAT
       SET lnItem := lnItem + 1;
       SET lcChar := SUBSTR(lcDato FROM lnItem FOR 1);
       SET lnSuma := lnSuma + (lcChar * ELT(lnItem, 71, 67, 59, 53, 47, 43, 41, 37, 29, 23, 19, 17, 13, 7, 3));
    UNTIL lnItem = 15
    END REPEAT;
 
	#Calculo final para devolver el valor del digíto en número.
    SET lnSuma := MOD(lnSuma, 11);
    IF lnSuma = 0 OR lnSuma = 1 THEN
       SET lnRetorno := lnSuma;
    ELSE
       SET lnRetorno := 11 - lnSuma;
    END IF;
 
	RETURN lnRetorno;
END
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar