Hola amigos, hace tiempo que no escribo nada, bien hoy me he encontrado un pequeño problemilla con crystal reports, como convertir un importe a letra, esto es muy habitual en los recibos que se entrega a los clientes.
Os pongo el código que funciona sin ningún problema:
local stringvar sNumero := cstr({facturacab.Total});
local numbervar Entera := truncate({facturacab.Total});
local numbervar posDecimal := instrrev(sNumber, ',');
local numbervar decimales := 0;
if posDecimal > 0 then
(decimales := CDbl(right(sNumero, length(sNumero) - posDecimal)););
if decimales > 0 then
Uppercase(ToWords(Entera, 0) + ' EUROS CON ' + ToWords(decimales, 0) + ' CENTIMOS')
else
Uppercase(ToWords(Entera, 0) + ' EUROS');
- convierte el número a cadena.
- coge la parte entera del número.
- coge la parte decimal, le indicamos que está separada por ",", si utilizais el punto decimal, en vez de coma bastará con cambiar la "," por ".".
- variable para conocer las posiciones decimales.
- Si hay posiciones decimales, calculamos el tamaño
- si el tamaño es mayor que 0, es que existe parte decimal, convertimos a texto la parte entera y los decimales, en caso contrario solo mostramos el texto de la parte entera.