Algoritmo Modulo 11

 

Algoritmo de cálculo Modulo 11 para la generación del código autoverificador del CUF.

En el dato de entrada cadena al algoritmo, recuerde que la misma es igual a concatenar los valores: nit, sucursal, fecha, modalidad, tipo emisión, tipo documento, numero factura.

 

Algoritmo Modulo 11 (Java) - (C Sharp)

public String calculaDigitoMod11(String cadena, int numDig, int limMult, boolean x10)

{

int mult, soma, i, n, dig

if (!x10) numDig = 1;

for(n = 1; n <= numDig; n++) {

soma = 0;

mult = 2;

for(i = cadena.length() - 1; i >= 0; i--) {

soma += (mult * Integer.parseInt(cadena.substring(i, i + 1)));

if(++mult > limMult) mult = 2;

}

if (x10) {

dig = ((soma * 10) % 11) % 10;

}

else {

dig = soma % 11;

}

              

if (x10) {

dig = ((soma * 10) % 11) % 10;

}

else {

dig = soma % 11;

             }

                   

             if (dig == 10) {

                    cadena += "1";

             }

             if (dig == 11) {

                    cadena += "0";

             }

             if (dig < 10) {

                    cadena += String.valueOf(dig);

             }     

}

       return cadena.substring(cadena.length() - numDig, cadena.length());

}

 

 

Ejemplo de consumo del método:

Ejemplo de consumo

public String obtenerModulo11(String pCadena) {

String vDigito = calculaDigitoMod11(pCadena, 1, 9, false);

       return vDigito;

}