Ver Mensaje Individual
  #11 (permalink)  
Antiguo 25/08/2011, 13:31
jucas1987
 
Fecha de Ingreso: mayo-2009
Mensajes: 177
Antigüedad: 14 años, 11 meses
Puntos: 1
Respuesta: Digito Verificacion Colombia

Bueno, bien se que este codigo se puede optimizar con un ciclo y demas, pero por ahora asi esta, si alguien lo necesita modifiquelo de forma que sea mas optimo.

Gracias por la atencion prestada.


function digito_verificacion_bancario($codigo) {

Try {
$suma = 0;
$multi = 0;
$digito = 0;
$sigue = 0;

$n1 = substr($codigo, 0, 1) * 1;
$n2 = substr($codigo, 1, 1) * 2;
$n3 = substr($codigo, 2, 1) * 1;
$n4 = substr($codigo, 3, 1) * 2;
$n5 = substr($codigo, 4, 1) * 1;
$n6 = substr($codigo, 5, 1) * 2;
$n7 = substr($codigo, 6, 1) * 1;
$n8 = substr($codigo, 7, 1) * 2;
$n9 = substr($codigo, 8, 1) * 1;
$n10 = substr($codigo, 9, 1) * 2;
$n11 = substr($codigo, 10, 1) * 1;
$n12 = substr($codigo, 11, 1) * 2;
$n13 = substr($codigo, 12, 1) * 1;
$n14 = substr($codigo, 13, 1) * 2;
$n15 = substr($codigo, 14, 1) * 1;
$n16 = substr($codigo, 15, 1) * 2;
$n17 = substr($codigo, 16, 1) * 1;


$suma = 0;
if ($n1 < 10) {
$suma = $suma + $n1;
} else {
$suma = $suma + 1 + ($n1 - 10);
}


if ($n2 < 10) {
$suma = $suma + $n2;
} else {
$suma = $suma + 1 + ($n2 - 10);
}


if ($n3 < 10) {
$suma = $suma + $n3;
} else {
$suma = $suma + 1 + ($n3 - 10);
}


if ($n4 < 10) {
$suma = $suma + $n4;
} else {
$suma = $suma + 1 + ($n4 - 10);
}


if ($n5 < 10) {
$suma = $suma + $n5;
} else {
$suma = $suma + 1 + ($n5 - 10);
}


if ($n6 < 10) {
$suma = $suma + $n6;
} else {
$suma = $suma + 1 + ($n6 - 10);
}


if ($n7 < 10) {
$suma = $suma + $n7;
} else {
$suma = $suma + 1 + ($n7 - 10);
}


if ($n8 < 10) {
$suma = $suma + $n8;
} else {
$suma = $suma + 1 + ($n8 - 10);
}


if ($n9 < 10) {

$suma = $suma + $n9;
} else {
$suma = $suma + 1 + ($n9 - 10);
}


if ($n10 < 10) {
$suma = $suma + $n10;
} else {
$suma = $suma + 1 + ($n10 - 10);
}


if ($n11 < 10) {
$suma = $suma + $n11;
} else {
$suma = $suma + 1 + ($n11 - 10);
}


if ($n12 < 10) {
$suma = $suma + $n12;
} else {
$suma = $suma + 1 + ($n12 - 10);
}


if ($n13 < 10) {
$suma = $suma + $n13;
} else {
$suma = $suma + 1 + ($n13 - 10);
}


if ($n14 < 10) {
$suma = $suma + $n14;
} else {
$suma = $suma + 1 + ($n14 - 10);
}


if ($n15 < 10) {
$suma = $suma + $n15;
} else {
$suma = $suma + 1 + ($n15 - 10);
}


if ($n16 < 10) {
$suma = $suma + $n16;
} else {
$suma = $suma + 1 + ($n16 - 10);
}


if ($n17 < 10) {
$suma = $suma + $n17;
} else {
$suma = $suma + 1 + ($n17 - 10);
}


$multi = round($suma / 10, 0, PHP_ROUND_HALF_DOWN) * 10;

if ($multi == $suma) {
$digito = 0;
} else {
$digito = round($suma / 10, 0, PHP_ROUND_HALF_DOWN);
$sigue = $digito * 10 + 10;
$digito = $sigue - $suma;
}

if($digito<10){
return $digito;
}else{
$digito=substr($digito, 1, 1);
return $digito;
}

} catch (Exception $exc) {
return "Error: ".$exc->getTraceAsString();
}
}