Mostrar importes en blanco en una rejilla


([N4] programador1) #1

Buenos días,

Tenemos una tabla de precios donde un servicio puede tener hasta dos tipos de precios que guardamos en dos campos del mismo registro. Según la configuración del servicio se informa el importe de tipo 1, el de tipo 2 o ambos.
Esta información la queremos mostrar en una rejilla de forma que si un servicio no se le aplica precio para el tipo X, el valor para esa celda salga en blanco en vez de que salga “0,00”. Por otra parte, en las celdas que sí se debe mostrar el importe, éste debe de aparecer en formato local y con el número de decimales que tiene definida la divisa (campo puntero en el propio registro).

Hemos probado de condicionar el color de texto según se aplica o no el tipo, pero no funciona cuando el registro de la rejilla está seleccionado.
También hemos probado con hacer un “choose” de la siguiente forma: choose(#APLICAR_TIPO_1, stringToNumber(#IMPORTE_1,“L”,#DIVISA.NUMERO_DECIMALES),"") Pero al ordenar los valores pulsando la cabecera de la rejilla, hace una ordenación alfabética, es decir, si tenemos los valores 1,2,10,20 se ordenan como 1,10,2,20

¿Alguien se ha encontrado con el mismo problema o tiene alguna otra idea de solucionar el problema?

Muchas gracias

Albert


([N3] pacosatu) #2

Hola Albert.

Prueba lo siguiente.

fillString(" “, 10 - len(choose(#IMPORTE>0, numberToString(#IMPORTE, “L”,2), fillString(” “, 0)))) + choose(#IMPORTE>0, numberToString(#IMPORTE, “L”,2), fillString(” ", 0))

Lo que hago primero es pasar el número a string de formato local y dejar en blanco si es cero: choose(#IMPORTE>0, numberToString(#IMPORTE, “L”,2), fillString(" ", 0))

Después suponemos un valor máximo de 10 dígitos contando puntos y comas y rellenamos por la izquierda con espacios para que ordene correctamente.
Usa una fuente de ancho fijo para que la ordenación aparezca visualmente correcta.

Saludos
Paco Satué


([N4] programador1) #3

Buenos días Paco,

Gracias por la solución aportada.

Saludos,

Albert