Error raro en .NET - Multiplica importes por 100 en llamada a SOAP
Tenemos una aplicación funcionando en .NET con GeneXus 15 Upgrade 9.
Nos pasamos al Upgrade 11 y todo parecía funciona correctamente. En las pruebas realizadas en las maquinas de desarrollo y testeo, todo funciono bien.
Cuando pusimos en producción, empezamos a notar que luego de llamar a un servicio SOAP, los parámetros que nos volvían en SDT, con decimales, quedaban multiplicados por 100.
Las maquinas en las cuales habíamos probado, tenian Windows en ingles, con formato en ingles.
El servidor de producción, tenia Windows en ingles, pero el formato de fechas e importe, estaban en español. Esta diferencia, era la que hacia que al ejecutar los mismos assemblies en dos maquinas diferentes, con los mismos archivos de configuración, dieran resultados diferentes.
El problema fue rápidamente diagnosticado por Javier Larrosa y agregando la linea
<globalization culture="en-US" uiCulture="en-US" />
a nivel del system.web del web.config, pudimos solucionar el problema.
PD: Este es uno de esos post egoista que hago únicamente para encontrarlo cuando me vuelva a encontrar con este problema y no recuerde como lo solucionamos.
Nos pasamos al Upgrade 11 y todo parecía funciona correctamente. En las pruebas realizadas en las maquinas de desarrollo y testeo, todo funciono bien.
Cuando pusimos en producción, empezamos a notar que luego de llamar a un servicio SOAP, los parámetros que nos volvían en SDT, con decimales, quedaban multiplicados por 100.
Las maquinas en las cuales habíamos probado, tenian Windows en ingles, con formato en ingles.
El servidor de producción, tenia Windows en ingles, pero el formato de fechas e importe, estaban en español. Esta diferencia, era la que hacia que al ejecutar los mismos assemblies en dos maquinas diferentes, con los mismos archivos de configuración, dieran resultados diferentes.
El problema fue rápidamente diagnosticado por Javier Larrosa y agregando la linea
<globalization culture="en-US" uiCulture="en-US" />
a nivel del system.web del web.config, pudimos solucionar el problema.
PD: Este es uno de esos post egoista que hago únicamente para encontrarlo cuando me vuelva a encontrar con este problema y no recuerde como lo solucionamos.
el tema es que son montos en Bolivares. entre que invocas y responde el WS ya se metieron 1000% de inflación...!
ResponderBorrarTambién sucede cuando envías una variable a un procedure y la recibes como parámetro con un tipo de variable distinto.
ResponderBorrarNo lo sufrimos de esa forma, es bueno saberlo.
BorrarPor ahora, lo arreglamos con la linea de fijar el culture.
Gracias por el comentario
Es un error, bug feo introducido en el U11 de Gx15 :(. Ya quedó arreglado en el upgrade 12 que se libera la semana que viene (28Agosto). Ref. SAC #43628 .
ResponderBorrarHola,
ResponderBorrarEste error aun se mantiene, pero cambio. Si tienes una estructura(sdt) donde tienes un atributo de tipo Numeric (10,2), al momento de cargar los datos la cantidad de decimales que agrega aumenta a 4, Ejemplo
For each
&Sdt.Atributo = AtributoTrn
Endfor
El resultado es
1.0000
y lo correcto debe ser
1.00
en mi caso esto afecta porque tengo servicios con SAP donde se valida la cantidad de decimales.
Para solucionar el problema se debe hacer esto
For each
&Sdt.Atributo.FromString(AtributoTrn.ToString())
Endfor
El resultado es
1.00
Saludos
Leonardo Zepeda A.