Con Velneo V7 es muy fácil convertir números a letras. Descripción como se hace


([N1] agsgallardo) #1

Se crea una Array con el nombre VLA_LETRAS con Dimensiones 50 y se introducen los textos

Formula de composición del 1 al 29
Formula de dato los textos desde el UNO al VEINTINUEVE
Formula de composición del 33 al 39
Formula de dato los textos desde el TREINTA al NOVENTA
Formula de composición del 41 al 49
Formula de dato los textos desde el CIENTO al NOVECIENTOS

Se crean las variables locales: VLA_LETRAS, VLA_TEXTO, VLN_IMPORTE, VLN_ENTEROS, VLN_DECIMAL, VLN_CANTIDAD, VLN_PRIMERO y VLN_RC (A las variables les asigno VLx , V=Variable, L=Local, A=Alfa, N=Numérica, F=Fecha, B=Booleana). Cada uno puede ponerle a las variables el nombre que quiera.

Al proceso se le envía. Set variable local de objeto(Convertir, VLN_IMPORTE,(Importe a convertir) y el Proceso devolverá la variable para el Get del Formulario, Informe o Proceso, la variable VLA_TEXTO con el texto del importe convertido en letras.

Para los Informes se puede hacer de dos formas. Una llamado a un Procesador previo que hará
la llamada al Proceso de convertir números a letras y a continuación hará la llamada al Informe (Enviando el texto en una variable). O desde el Informe utilizando una Función que devolverá una variable con el texto directamente al Informe.

Proceso: La primera palabra puede ser VLA_TEXTO = “ MENOS “ en caso del que el importe sea negativo, el importe se convierte en positivo (VLN_IMPORTE = 0-VLN_IMPORTE) y se le asigna a la variable VLN_ENTEROS la parte entera y VLN_DECIMAL la parte decimal. El Proceso de muestra puede convertir de números a letras importes hasta 999.999.999.999,99 positivo o negativo y no tiene límite pero es absurdo crear un recibo de miles de billones.

La fórmula para la parte entera es coger bloques de 3 dígitos asignándolos a la variable VLN.CANTIDAD.
Del 10 al 12 para MIL o MILES, del 7 al 9 para MILLÓN o MILLONES, del 4 al 6 para MIL o MILES
y del 1 al 3 para importes de 0 a 999.

La manera de convertir en texto los 4 bloques de enteros y el bloque decimales es la misma. Solo se le tiene que concatenar en la cola el texto MIL o MILES o MILLÓN o MILLONES o CENTIMOS. Antes de los céntimos se concatena la palabra EURO o EUROS si es mayor de 1.
(Se puede enviar la variable VLA.MONEDAS y VLA.MONEDAP (Singular y Plural) DÓLAR y DOLARES y concatenarla en vez de la palabra EURO o EUROS)

Se pueden crear varias Arrays en distintos idiomas y el texto aparecerá traducido.

Composición del texto:
If VLN_CANTIDAD = 100 Set VLA_TEXTO = VLA_TEXTO + “ CIEN”
If VLN_CANTIDAD > 100 Set VLN_PRIMERO = left(VLN_CATIDAD,1)
VLN_RC = VLN_PRIMERO + 40
(Si es un 3 pondrá TRESCIENTOS) VLA_TEXTO = VLA_TEXTO + “ “ + VLA_LETRAS[VLN_RC] Asignar 2 dígitos a VLN_CANTIDAD Set VLN_CANTIDAD = right(VLN_CANTIDAD,2)

If VLN_CANTIDAD = 21 Set VLA_TEXTO = VLA_TEXTO + “ VEINTIÚN”
If (VLN_CANTIDAD 9) & (VLN-CANTIDAD ¡ 21) Set VLN_RC = left(VLN_CANTIDAD,2)
VLA_TEXTO = VLA_TEXTO + “ “ + VLA_LETRAS[VLN_RC]
Asignará el texto del 10 al 29
If (VLN_CANTIDAD > 29) Set VLN_PRIMERO = left(VLN_CANTIDAD,1)
VLN_RC = VLN_PRIMERO + 30
(Si es un 5 pondrá CINCUENTA) VLA_TEXTO = VLA_TEXTO + “ “ + VLA_LETRAS[VLN_RC]
Asignar 1 dígito a VLN_CANTIDAD Set VLN_CANTIDAD = right(VLN_CANTIDAD,1)

If (VLN_CANTIDAD > 0) Set VLA_TEXTO = VLA_TEXTO + “ Y”
Set VLN_RC = VLN_CANTIDAD
Asignará el texto del 1 al 9 Set VLA_TEXTO = VLA_TEXTO + “ “ + VLA_LETRAS[VLN_RC]
A continuación se le concatena la palabra MIL o MILES o MILLÓN o MILLONES o CENTIMOS.

La Array puede estar en mayúsculas o minúsculas y convertirla en la que interese.
Para el importe en femenino ejemplo LIBRA se cambia el UN por UNA y desde VEINTE a NOVENTA por VEINTIUNA a NOVENTA Y UNA. O se crean dos Procesos copiando uno a otro.

Se pueden hacer pruebas en Proyectos que funcionan correctamente

Conexión desde el Vcliente 7.9.0.10328
Servidor: vatp://80.37.231.236
Usuario: voasi
Contraseña: (Sin contraseña)

En todos los menús está en Acciones de la toolbar la número 10 de izquierda a derecha con un dibujo sicopático (Si se pone el ratón encima aparece la palabra Vencimientos). Es un pequeño formulario que calcula vencimientos y muestra el importe introducido en mayúsculas y minúsculas. Para el cálculo del vencimiento se pueden asignar 1, 2, 3, 10, 100, 1000 o más aplazamientos con 2 días de pago y vacaciones. Para recibos a final de mes asignar como día de pago el día 31. El proceso asignará el día 28 para Febrero o 29 si es bisiesto y 30 para los meses de 30 y 31 para los meses de 31 días.

La primera carga es lenta. La cajas de Velneo ocupan unos 60 MB.

Espero que os sea útil, un saludo

Adolfo Gallardo Sánchez
oasi@sysoasi.com


([N3] blavan) #2

Gracias, con lo cual resulta que v7 no tiene la funcion numeroenletras que teniamos en V6,en V7 tenemos numbertostring, no lo probe pero pensaba que seria el equivalente a numeroenletras de v6


([N4] velavisual) #3

Más opciones en este hilo:
.
.
http://velneo.es/foros/topic/conversion-de-numeros-a-letas/
.
.
saludos
Antonio Vela
http://www.velavisual.com


([N1] Pepeto) #4

Aqui tienes mas:
http://www.ascsl.com/2010/07/convertir-importes-a-texto/

un saludo.
José Luis
http://www.ascsl.com