PDA

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

Rieper
23-Nov-2016, 10:01
pm a rod2k

rod2k
23-Nov-2016, 10:03
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:)

rod2k
23-Nov-2016, 12:03
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:

Jcolt
23-Nov-2016, 16:59
en que paro la onda :D

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.

Hugh
24-Nov-2016, 08:35
:si: buena onda por el dato

Yo recuerdo que si escribías al RENAP, ellos te envian una DLL para validar el CUI