Algoritmo Modulo 11

 

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

La cadena de entrada al algoritmo es la concatenación del nit, sucursal, fecha, modalidad, tipo emisión, tipo documento, número factura.

 

Algoritmo Modulo 11 (Java) - (C Sharp)

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

{

int mult, suma, i, n, dig

if (!x10) numDig = 1;

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

suma = 0;

mult = 2;

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

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

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

}

if (x10) {

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

}

else {

dig = suma % 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;

}