Por cuestiones de trabajo, investigue como validar el NIT utilizando el algoritmo de Modulo 11 que utiliza la SAT en Guatemala pero buscando en google solo encontre un medio codigo en VBScript y uno en C# pero como lo queria en Javascript encontre una manera fácil de hacerlo.
El algoritmo consiste en lo siguiente, tenemos el siguiente NIT:
42932-5
Entonces multiplicamos:
4 * 6 = 24
2 * 5 = 10
9 * 4 = 36
3 * 3 = 9
2 * 2 = 4
En pocas palabras multiplicamos cada letra en su posicion. Lo que no multiplicamos es la ultima posicion que nos va a servir mas adelante.
El resultado nos da 83 aplicamos el modulo 11 de la siguiente manera:
83 mod 11 = 6
Seguidamente el resultado es el siguiente:
11 - 6 = 5
Este resultado debe ser identico al ultimo digito despues del guion que se le llama digito verificador y asi nos damos cuenta si un NIT es valido.
A continuación les pongo el algoritmo hecho en JavaScript:
var validarNITMod11 = function(nit) {
var pos = nit.indexOf("-");
var correlativo = nit.substring(0, pos);
var digitoVerificador = nit.substring(pos + 1, nit.length);
var factor = correlativo.length + 1;
var valor = 0;
for (i = 0; i < pos; i++) {
valor += parseInt(correlativo[i]) * factor;
factor -= 1;
}
var residuo = valor % 11;
var resultado = 11 - residuo;
if (resultado >= 11) {
residuo = resultado % 11;
resultado = residuo;
}
if (resultado == 10) {
if (digitoVerificador.toUpperCase() == "K") {
alert("El NIT es valido");
return true;
}
} else if (digitoVerificador == resultado) {
return true;
}
return false;
};