Bug 3697 - gennum no genera código para archivo de sueldos
Summary: gennum no genera código para archivo de sueldos
Status: REABIERTO
Alias: None
Product: Reclamos Usuarios
Classification: Unclassified
Component: General (show other bugs)
Version: unspecified
Hardware: Software o Programas No sabe/ No Corresponde
: Normal critico
Assignee: Guillermo Reisch
URL:
Depends on:
Blocks:
 
Reported: 2019-06-20 14:24 -03 by Adriana Sosa
Modified: 2023-06-07 13:31 -03 (History)
1 user (show)

See Also:
Local: Casona Jaime Cibils
Dep/Cat: Contaduria Tesoreria
Dep/Cat: ---
Dep/Cat: ---


Attachments

Note You need to log in before you can comment on or make changes to this bug.
Description Adriana Sosa 2019-06-20 14:24:26 -03
EL programa Gnnum no genera el código para la subida del archivo de otros bancos, al BROU.
Comment 1 Jorge Alejandro Ceresa 2019-06-23 21:37:55 -03
Paso hace unos días fue solucionado  Guillermo y soluciono.
Quedo pendiente el cierre de este tema.
Listo
Comment 2 Jorge Alejandro Ceresa 2019-06-23 21:38:03 -03
Paso hace unos días fue solucionado  Guillermo y soluciono.
Quedo pendiente el cierre de este tema.
Listo
Comment 3 Jorge Alejandro Ceresa 2019-06-23 21:38:10 -03
Paso hace unos días fue solucionado  Guillermo y soluciono.
Quedo pendiente el cierre de este tema.
Listo
Comment 4 Guillermo Reisch 2019-06-24 16:31:52 -03
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.
Comment 5 Guillermo Reisch 2020-11-12 13:56:25 -03
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.
Comment 6 Guillermo Reisch 2023-06-07 13:31:15 -03
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.