Actualmente este campo es de tipo MONEY lo cual limita a 4 decimales el valor registrado en este, y esto impacta en el calculo de horas extras, para el caso especifico de este cliente se dio en Honduras ya que en esta planilla se tienen salarios en dolares que se pagan en Lempiras y al momento de realizar el calculo en Evolution, la aproximación no cuadra con los montos calculados en el sistema anterior. Haciendo el calculo manualmente se verifico que al utilizar mas decimales en el valor correspondiente al Salario x Hora se obtenía una aproximación mas exacta al valor indicado. Por esto, se procedio a modificar la estructura de esta tabla para cambiar el tipo de dato de MONEY a FLOAT. El problema es que posterior a ese cambio, se dieron algunos inconvenientes en las pantallas de acciones de personal, en donde no se mostraba la información detallada del empleado/empleado solicitante que se seleccionaba. Y para el caso especifico de la Contratación se reportaba una excepción de SQL sobre el formato de las fechas y no dejaba grabar el registro. asked 24 Jul '15, 16:04 Valentino Lopez |
No podes modificar la estructura de los campos de la tabla sin esperar que existan inconvenientes, principalmente si cambias de MONEY a FLOAT. FLOAT es un tipo de dato que no tiene un número de decimales fijo y es representado por C# como 'double', mientras que MONEY es representado por C# como de tipo 'decimal'. Entonces seguramente se van a tener pérdidas de decimales por conversión al mover el float a los modelos de datos de Evolution que utilizan decimal. Entonces te recomiendo que regreses el tipo de dato a MONEY como estaba. Evolution redondea el calculo del salario por hora de acuerdo al número de decimales configurados en el parámetro correspondiente. El parámetro solamente puede ser un número entre 0 y 4, porque el tipo de dato MONEY no soporta más de cuatro decimales. El sistema anterior no maneja correctamente el redondeo de los decimales y por eso se dan las diferencias. Lo recomendable es que todos los valores en moneda sean redondeados de manera consistente, tal y como lo hace Evolution, para que siempre los cálculos sean predecibles. En general si buscas en internet vas a encontrar muchas discusiones sobre la conveniencia o no de usar tipos de datos REAL o FLOAT y su aplicación correcta. Nosotros en el equipo de desarrollo de Evolution seguimos la tendencia de no utilizar estos tipos porque nos traen perjuicios en el manejo de las cantidades con decimales, y porque las formulas VBS de las planillas los manejan mal. answered 25 Jul '15, 09:41 Fernando Paz ♦♦ Una consulta adicional.... si el tipo Float da problema y el tipo Money se interpreta como Decimal, seria usar Decimal con mas decimales... probé eso en desarrollo, cambiando el campo salario x hora (estruc.sal. y estruc.sal.contrat.) de MONEY a DECIMAL(16,8) evitando los problemas que se reportaron con FLOAT. Pero en contrataciones el valor en pantalla sale a 4 decimales siempre, podra cambiarse algo en esta vista para usar todos los decimales especificados en el tipo de dato?
(27 Jul '15, 17:06)
Valentino Lopez
|