Ver la Versión Completa : Algoritmo Validacion CUI SAT Guatemala
cerberus_gt
23-Nov-2016, 09:58
Buen día señores, yo creo que algunos en informática ya sabrán de la nueva noticia de la SAT (no tan nueva) que se utilizara el CUI (DPI) para los pequeños contribuyentes y para el resto el nit. Actualmente yo tengo el algoritmo de validación de los NIT, pero con esta nueva disposición entre el juego la nueva validación del dpi.
Mi consulta es, alguien tendrá ese algoritmo de validación :D para dpi y para nit
si lo pudieran pasar, de igual forma si lo encuentro antes yo se los hago llegar :D
metete a http://www.dpireader.com, con tu lector de tarjetas inteligentes le podes entrar, cualquier onda, mandame PM y te oriento como funciona si lo queres integrar a tu sistema
cerberus_gt
23-Nov-2016, 10:58
metete a http://www.dpireader.com, con tu lector de tarjetas inteligentes le podes entrar, cualquier onda, mandame PM y te oriento como funciona si lo queres integrar a tu sistema
Muchas gracias, no quiero lector de tarjeta, ni nada por el estilo, solo requiero el algoritmo para verificar los datos.
chronos
23-Nov-2016, 11:32
La mayoria de validadciones en numeros de identificacion usan el algoritmo luhn
... es una buena medida verificar la validez de este tipo de datos durante el ingreso de datos (particularmente en batch) para evitarle problemas posteriores a las personas (un mal teclazo los puede hacer :owned:)
Muchas gracias, no quiero lector de tarjeta, ni nada por el estilo, solo requiero el algoritmo para verificar los datos.
no me dedico a vender lectores, te estoy ofreciendo el servicio y gratis, para que decodifiques la info del chip, para que hagas tu verificacion
ahi te dejo un poco de lectura, http://www.smartcardbasics.com/smart-card-standards.html,
te dejo tambien lo que dice Chronos
https://jsfiddle.net/miguelerm/tp0t481o/
pero no se si este certificado por el RENAP, sera que preguntes
cerberus_gt
23-Nov-2016, 12:51
buena onda :si:
cerberus_gt
24-Nov-2016, 08:12
function cuiIsValid(cui) {
var console = window.console;
if (!cui) {
console.log("CUI vacío");
return true;
}
var cuiRegExp = /^[0-9]{4}\s?[0-9]{5}\s?[0-9]{4}$/;
if (!cuiRegExp.test(cui)) {
console.log("CUI con formato inválido");
return false;
}
cui = cui.replace(/\s/, '');
var depto = parseInt(cui.substring(9, 11), 10);
var muni = parseInt(cui.substring(11, 13));
var numero = cui.substring(0, 8);
var verificador = parseInt(cui.substring(8, 9));
// Se asume que la codificación de Municipios y
// departamentos es la misma que esta publicada en
// http://goo.gl/EsxN1a
// Listado de municipios actualizado segun:
// http://goo.gl/QLNglm
// Este listado contiene la cantidad de municipios
// existentes en cada departamento para poder
// determinar el código máximo aceptado por cada
// uno de los departamentos.
var munisPorDepto = [
/* 01 - Guatemala tiene: */ 17 /* municipios. */,
/* 02 - El Progreso tiene: */ 8 /* municipios. */,
/* 03 - Sacatepéquez tiene: */ 16 /* municipios. */,
/* 04 - Chimaltenango tiene: */ 16 /* municipios. */,
/* 05 - Escuintla tiene: */ 13 /* municipios. */,
/* 06 - Santa Rosa tiene: */ 14 /* municipios. */,
/* 07 - Sololá tiene: */ 19 /* municipios. */,
/* 08 - Totonicapán tiene: */ 8 /* municipios. */,
/* 09 - Quetzaltenango tiene: */ 24 /* municipios. */,
/* 10 - Suchitepéquez tiene: */ 21 /* municipios. */,
/* 11 - Retalhuleu tiene: */ 9 /* municipios. */,
/* 12 - San Marcos tiene: */ 30 /* municipios. */,
/* 13 - Huehuetenango tiene: */ 32 /* municipios. */,
/* 14 - Quiché tiene: */ 21 /* municipios. */,
/* 15 - Baja Verapaz tiene: */ 8 /* municipios. */,
/* 16 - Alta Verapaz tiene: */ 17 /* municipios. */,
/* 17 - Petén tiene: */ 14 /* municipios. */,
/* 18 - Izabal tiene: */ 5 /* municipios. */,
/* 19 - Zacapa tiene: */ 11 /* municipios. */,
/* 20 - Chiquimula tiene: */ 11 /* municipios. */,
/* 21 - Jalapa tiene: */ 7 /* municipios. */,
/* 22 - Jutiapa tiene: */ 17 /* municipios. */
];
if (depto === 0 || muni === 0)
{
console.log("CUI con código de municipio o departamento inválido.");
return false;
}
if (depto > munisPorDepto.length)
{
console.log("CUI con código de departamento inválido.");
return false;
}
if (muni > munisPorDepto[depto -1])
{
console.log("CUI con código de municipio inválido.");
return false;
}
// Se verifica el correlativo con base
// en el algoritmo del complemento 11.
var total = 0;
for (var i = 0; i < numero.length; i++)
{
total += numero[i] * (i + 2);
}
var modulo = (total % 11);
console.log("CUI con módulo: " + modulo);
return modulo === verificador;
}
$('#cui').bind('change paste keyup', function (e) {
var $this = $(this);
var $parent = $this.parent();
var $next = $this.next();
var cui = $this.val();
if (cui && cuiIsValid(cui)) {
$parent.addClass('has-success');
$next.addClass('glyphicon-ok');
$parent.removeClass('has-error');
$next.removeClass('glyphicon-remove');
} else if (cui) {
$parent.addClass('has-error');
$next.addClass('glyphicon-remove');
$parent.removeClass('has-success');
$next.removeClass('glyphicon-ok');
} else {
$parent.removeClass('has-error');
$next.removeClass('glyphicon-remove');
$parent.removeClass('has-success');
$next.removeClass('glyphicon-ok');
}
});
JuliusGuate
24-Nov-2016, 08:29
Gracias !!!
Para los amigos que hacen/tienen sistemas es muy importante poder validar este tipo de información no solamente en beneficio del cliente, sino también para beneficio/protección de la propia empresa.
:si: buena onda por el dato
Yo recuerdo que si escribías al RENAP, ellos te envian una DLL para validar el CUI
vBulletin® v3.8.5, Copyright ©2000-2024, Jelsoft Enterprises Ltd. Traducido por mcloud - vBhispano.com