EL programa Gnnum no genera el código para la subida del archivo de otros bancos, al BROU.
Paso hace unos días fue solucionado Guillermo y soluciono. Quedo pendiente el cierre de este tema. Listo
No esta solucionado ; se EMPARCHO nomas ; el problema hay que reportarlo al BROU y lo que se hizo fue un parche de momento para poder subir el archivo. Pero no esta solucionado. Agradezco dejar ABIERTO este bug hasta que el BUG sea reportado y solucionado por el BROU.
El problema es que si el archivo que hay que hacerle el gennum es multiplo (de no me acuerdo cuantos bytes) entonces el GENNUM no te devuelve el CRC El parche que se aplico en su momento fue "agregarle un spacio" a el texto a realizarle el GENNUM para que este no devolviera error.
Problema encontrado! El gennum internamente para calcular su checksum utiliza dos checksums conocidos ; de los cuales obtiene como string la representación hexadecimal del checksum y de estos strings concatena los dos tomando del segundo checksum solo los primeros 6 caracteres. El detalle (y error) es que la conversión a string del valor hexadecimal del checksum se realiza usando Long.toHexString(checksum) que da una representación INCORRECTA del checksum... Ejemplo Long.toHexString(0x1234FEAB) => "1234FEAB" aca si da bien.... Long.toHexString(0x0004FEAB) => "4FEAB" Opiti! Por lo que si el segundo checksum empieza con "000" esos nibbles no se tienen en cuenta y el string del segundo checksum tiene menos de 6 caracteres! por lo que el substring (que obtiene los primeros 6 caracteres) larga excepción ya que la string es de 5 o menos caracteres! Si suponemos que el segundo checksum es un buen checksum se podría decir que la PROBABILIDAD de que el checksum de el valor 0x000XXXXX (0 en los primeros 3 nibbles seguidos) es de una probabilidad de 1 en 0x1000 o lo que es lo mismo 1 en 4096 o de un 0,024% de probabilidad de falla. Y obviamente Facultad de Enfermería tenia que tocarle un archivo de sueldos que justo estaba dentro de ese 0,024%. Otro problema de este checksum es que si igual no falla no te da un checksum de tamaño fijo, ya que si los primeros nibbles de los checksum son 0 el string resultante es de menos caracteres. Pero ta... funciona así. Veré de reportarlo al BROU.