Ver Mensaje Individual
  #1 (permalink)  
Antiguo 19/04/2013, 12:55
elBamba
 
Fecha de Ingreso: diciembre-2012
Mensajes: 2
Antigüedad: 11 años, 4 meses
Puntos: 0
Mensaje Rutina para obtener Digito verificador del ABL - GCBA

ABL GCBA - OBTENER DIGITO VERIFICADOR


En muchos casos al alquilar se nos da la impresion del ABL para pagar solo con el numero de partida. Sin tener el digito verificador no podemos ver nombre/apellido del propietario ni el domicilio, en particular se me ocurrio que no era mi dpto el cual estaba pagando el abl y quise averiguar cual era este DV. En fin, desde la pagina del GCBA tienen publica la validacion que realiza aca se las dejo (esta incluida en un .js visible desde el navegador).




Para explicar esto tomamos de ejemplo el nro de partida "3781376".


PASO 1

El numero de partida se compone de 7 digitos, cada uno de estos debera ser multiplicado por un valor y luego estas multiplicaciones deberan ser sumadas de la siguiente forma.

(digito 7)*7 + (digito 6) * 6 + (digito 5)*5 + (digito 4)*4 + (digito 3)*3 + (digito 2)*2 + (digito 1)*7

Para el ejemplo sera:

6*7 + 7*6 + 3*5 + 1*4 + 8*3 + 7*2 + 3*7 = 162


PASO 2
El valor obtenido en el paso anterior % 11

Para el ejemplo sera 162 % 11 = 8

PASO 3
El digito verificador debe ser de dos digitos, por lo tanto el valor obtenido en el paso 2 tiene que ir con un cero delante, quedando 08


nota: si el paso 2 diese como resultado "10" el digito verificador es "01"




Por lo tanto para el numero de partida 3781376 el digito verificador sera 08.



A continuacion la rutina java para esto:


public static void main(String[] args) {


String n = "3781376";
char[] a = n.toCharArray();
int i;

int digito_verdadero_int = (Character.getNumericValue(a[6])*7 +
Character.getNumericValue(a[5])*6 +
Character.getNumericValue(a[4])*5 +
Character.getNumericValue(a[3])*4 +
Character.getNumericValue(a[2])*3 +
Character.getNumericValue(a[1])*2 +
Character.getNumericValue(a[0])*7) % 11;

String digito_verdadero = String.valueOf(digito_verdadero_int);


if ( digito_verdadero.equals("10") )
digito_verdadero = "1";

int longitud_digito=2;

if ( digito_verdadero.length() < longitud_digito ){
String x = new String();
for(i=digito_verdadero.length(); i<longitud_digito ; i++)
x = x + "0";
digito_verdadero = x + digito_verdadero;
}


System.out.println("El digito verificador de la partida: " + n +" es: " + digito_verdadero);

}