Skip to content

Instantly share code, notes, and snippets.

@gmelendezcr
Forked from jrmoran/isDui.js
Created September 3, 2012 13:44
Show Gist options
  • Save gmelendezcr/3609421 to your computer and use it in GitHub Desktop.
Save gmelendezcr/3609421 to your computer and use it in GitHub Desktop.
Verificacion DUI
/*
DUI = 00016297-5
Posiciones -> 9 8 7 6 5 4 3 2
DUI -> 0 0 0 1 6 2 9 7
DV = 5
sum: (9*0) + (8*0) + (7*0) + (6*1) + (5*6) + (4*2) + (3*9) + (2*7) = 85
residuo: (85 % 10) = 5
resta: 10 - residuo = 5
IF DV == Resta THEN true ELSE false
*/
var isDUI = function(str){
var regex = /(^\d{8})-(\d$)/,
parts = str.match(regex);
// verficar formato y extraer digitos junto al digito verificador
if(parts !== null){
var digits = parts[1],
dig_ve = parseInt(parts[2], 10),
sum = 0;
// sumar producto de posiciones y digitos
for(var i = 0, l = digits.length; i < l; i++){
var d = parseInt(digits[i], 10);
sum += ( 9 - i ) * d;
}
return dig_ve === (10 - ( sum % 10 ))%10;
}else{
return false;
}
};
isDUI('00016297-5'); // true
isDUI('12345678-1'); // false
isDUI('123456789-1'); // false
isDUI('12345678-12'); // false
@bardcrack
Copy link

En Php quedaria algo parecido a esto.
function validateDuiNumber($options){
/** $options['dui'], $options['longitude'] */
extract($options);
$numeros = [9, 8, 7, 6, 5, 4, 3, 2];
$digitos = [];
$acumulador = 0;
$respuesta["code"] = 210;
$dui = str_replace("-","",$dui);
$digitos = $dui;
if(strlen($digitos)==9){
for ($i = 0; $i < $longitude; $i++) {
$acumulador = $acumulador + (($digitos[$i] * $numeros[$i]));
}
$acumulador = (10 - ($acumulador % 10));
if (($acumulador == $digitos[8]) || $acumulador == 0) {
$respuesta["message"] = "VALIDO \nEl digito validador es " . ($digitos[8]) . " que es mayor o igual a ". ($acumulador % 10) ." valor obtenido mediante formula";
$respuesta["code"] = 200;
} else {
$respuesta["message"] = "NO ES VALIDO \nya que el digito validador es menor " . ($acumulador % 10) . " valor obtenido mediante formula";
$respuesta["code"] = 210;
}
}
else{
$respuesta["message"] = "Numero de caracteres invalido";
$respuesta["code"] = 210;
}
return $respuesta;
}

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment